Mercurial > laserkard
view onlypaths/js/svgrenderer.js @ 74:24d5d4221b42 laserkard
session with nick, updated the about page
author | r@rlm |
---|---|
date | Fri, 25 Jun 2010 19:59:31 -0400 |
parents | 26c2b3ad21c7 |
children |
line wrap: on
line source
1 /*----------------------------------------------------------------------------2 SVGRENDERER 1.03 SVG Renderer For RichDraw4 -----------------------------------------------------------------------------5 Created by Mark Finkle (mark.finkle@gmail.com)6 Implementation of SVG based renderer.7 -----------------------------------------------------------------------------8 */9 function AbstractRenderer() {11 };13 AbstractRenderer.prototype.init = function(elem) {};18 function SVGRenderer() {19 this.base = AbstractRenderer;20 this.svgRoot = null;21 }24 SVGRenderer.prototype = new AbstractRenderer;27 SVGRenderer.prototype.bounds = function(shape) {29 var box = shape.getBBox();31 return { x:box.x, y:box.y, width:box.width, height: box.height };33 };35 SVGRenderer.prototype.init = function(elem) {36 this.container = elem;38 this.container.style.MozUserSelect = 'none';40 var svgNamespace = 'http://www.w3.org/2000/svg';42 this.svgRoot = this.container.ownerDocument.createElementNS(svgNamespace, "svg");43 this.svgRoot.setAttributeNS(null,'viewBox', zoominit);44 this.svgRoot.setAttributeNS(null,'preserveAspectRatio','none');45 this.svgRoot.setAttributeNS(null,'space','preserve');46 this.container.appendChild(this.svgRoot);47 }49 SVGRenderer.prototype.view = function(left,top,width,height,viewBox,bgcolor) {50 var svgNamespace = 'http://www.w3.org/2000/svg';51 var tokens = viewBox.split(' ');52 var margin=100;53 var wFront=parseInt(document.getElementById('FRONT').style.width)54 var hFront=parseInt(document.getElementById('FRONT').style.height)55 var tC=0 + ' ' + 0 + ' ' + wFront + ' ' + hFront;56 tokensCanvas= tC.split(' ');57 var w=parseFloat(tokens[2]);58 var h=parseFloat(tokens[3]);59 var wImage = w - parseFloat(tokens[0]);60 var hImage = h - parseFloat(tokens[1]);61 var wCanvas = wFront;62 var hCanvas = hFront;63 proporImage = hImage / wImage;64 proporCanvas = hCanvas / wCanvas;66 document.title= initialFile +' '+wImage+' x '+hImage;69 if(bgcolor != '')70 {71 this.container.style.backgroundColor=bgcolor;72 } else{73 this.container.style.backgroundColor="#ffffff";74 }75 if(viewMode=='preview')76 {77 if(proporCanvas==proporImage)78 {79 this.container.style.width =wFront+'px';80 this.container.style.height =hFront+'px';81 this.container.style.left =0+'px'82 this.container.style.top =0+'px'84 }85 if(proporCanvas<proporImage)86 {87 var proportion= wFront/hFront;88 //var image_proportion= width/height;89 var image_proportion= w/h;90 var W=hFront*image_proportion;91 var leftover=(wFront-W)/2;93 this.container.style.width =W+'px';94 this.container.style.height =hFront+'px';95 this.container.style.left =leftover+'px'96 this.container.style.top =0+'px'97 //alert('Horizontal '+wFront+','+hFront+' '+image_proportion+' '+W+' '+leftover+' ____'+ this.container.style.width)99 }100 if(proporCanvas>proporImage)101 {102 var proportion= hFront/wFront;103 //var image_proportion= width/height;104 var image_proportion= h/w;105 var H=wFront*image_proportion;106 var leftover=(hFront-H)/2;108 this.container.style.width =wFront+'px';109 this.container.style.height =H+'px';110 this.container.style.left =0+'px'111 this.container.style.top =leftover+'px'112 }114 this.svgRoot.setAttributeNS(null,'x', left);115 this.svgRoot.setAttributeNS(null,'y', top);116 this.svgRoot.setAttributeNS(null,'width', parseInt(this.container.style.width));117 this.svgRoot.setAttributeNS(null,'height', parseInt(this.container.style.height));119 this.svgRoot.setAttributeNS(null,'viewBox', viewBox);121 }122 if(viewMode=='canvas')123 {124 this.container.style.left = 0 + 'px';125 this.container.style.top = 0 + 'px';126 this.container.style.width = wFront + 'px';127 this.container.style.height = hFront + 'px';129 // margins 10%130 var percent=10;131 var percentX = wImage / percent;132 var percentY = hImage / percent;133 var cornerNEx = parseFloat(tokens[0])-percentX;134 var cornerNEy = parseFloat(tokens[1])-percentY;135 var percentRectW=wImage + percentX*2;136 var percentRectH=hImage + percentY*2;138 document.title= initialFile +' '+wImage+' x '+hImage;139 // ajust proporImage to proporCanvas140 if(proporCanvas==proporImage)141 {142 cornerNEx = parseFloat(tokens[0])-percentX143 cornerNEy = parseFloat(tokens[1])-percentY144 var wi=percentRectW;145 var he=percentRectH;//hImage+percentY+addHimage;146 zoominit=viewBox;147 zoominit1 = cornerNEx+' '+cornerNEy+' '+wi+' '+he;148 tokensZoom=zoominit1.split(' ');149 }151 if(proporCanvas<proporImage)152 {154 // add to hImage155 var newWimage = percentRectW * ((wCanvas * percentRectH) / (hCanvas * percentRectW)) ;//newRectH *156 var diffImages=newWimage-w;157 cornerNEx = parseFloat(tokens[0]) - (diffImages / 2);158 var wi=newWimage;159 var he=percentRectH;//hImage+percentY+addHimage;160 zoominit=viewBox;161 zoominit1 = cornerNEx+' '+cornerNEy+' '+wi+' '+he;162 tokensZoom=zoominit1.split(' ');163 //alert(newRectW+' '+newRectH+' // '+newHimage+' // '+zoominit1+' // '+hCanvas * newRectW +' '+ wCanvas * newRectH)164 //alert(addHimage+' // '+zoominit1)165 //160 160 700 300166 }167 if(proporCanvas>proporImage)168 {169 // add to hImage170 var newHimage = percentRectH * ((hCanvas * percentRectW) / (wCanvas * percentRectH)) ;//newRectH *171 var diffImages=newHimage-h;172 cornerNEy = parseFloat(tokens[1]) - (diffImages / 2);173 var wi=percentRectW;174 var he=newHimage;//hImage+percentY+addHimage;175 zoominit=viewBox;176 zoominit1 = cornerNEx+' '+cornerNEy+' '+wi+' '+he;177 tokensZoom=zoominit1.split(' ');178 }179 /* this.svgRoot.setAttributeNS(null,'x', cornerNEx);180 this.svgRoot.setAttributeNS(null,'y', cornerNEy);181 this.svgRoot.setAttributeNS(null,'width', wi);182 this.svgRoot.setAttributeNS(null,'height',he);183 */184 this.svgRoot.setAttributeNS(null,'x', 0);185 this.svgRoot.setAttributeNS(null,'y', 0);186 this.svgRoot.setAttributeNS(null,'width', wFront);187 this.svgRoot.setAttributeNS(null,'height',hFront);188 this.svgRoot.setAttributeNS(null,'viewBox', zoominit1);191 }192 }194 SVGRenderer.prototype.zoomFrame = function(zoom){195 this.svgRoot.setAttributeNS(null,'viewBox', zoom);196 }198 SVGRenderer.prototype.rectDoc = function(viewBox) {199 var tokens = viewBox.split(' ');200 var wFront=parseInt(document.getElementById('FRONT').style.width)201 var hFront=parseInt(document.getElementById('FRONT').style.height)202 var tC=0 + ' ' + 0 + ' ' + wFront + ' ' + hFront;203 tokensCanvas= tC.split(' ');204 var Ey = parseFloat(tokensCanvas[3]) ; // (end) height canvas. Corner up-right205 var Hz = parseFloat(tokens[3]) ; // height zoom206 this.editor.unit = this.editor.initialUnit * (Hz/Ey) ; // 0 to 1208 var svgNamespace = 'http://www.w3.org/2000/svg';210 var shape = document.getElementById('rectDoc');211 if (shape) {212 this.remove(shape);213 }214 var rect=this.container.ownerDocument.createElementNS(svgNamespace, 'rect');215 rect.setAttributeNS(null, 'id', 'rectDoc');216 rect.setAttributeNS(null, 'x', tokens[0] + 'px');217 rect.setAttributeNS(null, 'y', tokens[1] + 'px');218 rect.setAttributeNS(null, 'width', tokens[2]+ 'px');219 rect.setAttributeNS(null, 'height', tokens[3] + 'px');220 rect.setAttributeNS(null, 'fill', 'none');221 rect.setAttributeNS(null, 'stroke', '#000000');222 rect.setAttributeNS(null, 'stroke-width', this.editor.unit*2+'px');223 // this.svgRoot.appendChild(rect)225 this.svgRoot.insertBefore( rect, this.svgRoot.firstChild );226 }228 SVGRenderer.prototype.rectCanvas = function(docx,docy,docw,doch,viewBox) {229 var svgNamespace = 'http://www.w3.org/2000/svg';230 var tokens = zoominit1.split(' ');231 var shape = document.getElementById('rectCanvas');232 if (shape) {233 this.remove(shape);234 }235 var rect=this.container.ownerDocument.createElementNS(svgNamespace, 'rect');236 rect.setAttributeNS(null, 'id', 'rectBackground');237 rect.setAttributeNS(null, 'x', tokens[0] + 'px');238 rect.setAttributeNS(null, 'y', tokens[1] + 'px');239 rect.setAttributeNS(null, 'width', tokens[2] + 'px');240 rect.setAttributeNS(null, 'height', tokens[3] + 'px');241 rect.setAttributeNS(null, 'fill', '#666666');242 rect.setAttributeNS(null, 'stroke', 'none');243 //this.svgRoot.appendChild(rect)244 this.svgRoot.insertBefore( rect, this.svgRoot.firstChild );246 //this.index('rectBackground',0);248 /* var shape = document.getElementById('rectOverCanvas');249 if (shape) {250 this.remove(shape);251 }252 var rect=this.container.ownerDocument.createElementNS(svgNamespace, 'rect');253 rect.setAttributeNS(null, 'id', 'rectOverCanvas');254 rect.setAttributeNS(null, 'x', docx + 'px');255 rect.setAttributeNS(null, 'y', docy + 'px');256 rect.setAttributeNS(null, 'width', docw + 'px');257 rect.setAttributeNS(null, 'height', doch + 'px');258 rect.setAttributeNS(null, 'fill', 'none');259 rect.setAttributeNS(null, 'stroke', '#000000');260 rect.setAttributeNS(null, 'stroke-width', 1+'px');261 // this.svgRoot.appendChild(rect)262 this.svgRoot.insertBefore( rect, this.svgRoot.lastChild );263 */264 }266 SVGRenderer.prototype.removeAll = function()267 {268 while( this.svgRoot.hasChildNodes () )269 {270 this.svgRoot.removeChild( this.svgRoot.firstChild );271 }272 }274 SVGRenderer.prototype.create = function(shape, fillColor, lineColor, fillOpac, lineOpac, lineWidth, left, top, width, height, textMessaje, textSize, textFamily, imageHref, points, transform, parent, viewBox) {275 var svgNamespace = 'http://www.w3.org/2000/svg';276 var xlinkNS="http://www.w3.org/1999/xlink";278 var svg;280 if (shape == 'rect') {281 svg = this.container.ownerDocument.createElementNS(svgNamespace, 'rect');282 svg.setAttributeNS(null, 'x', left + 'px');283 svg.setAttributeNS(null, 'y', top + 'px');284 svg.setAttributeNS(null, 'width', width + 'px');285 svg.setAttributeNS(null, 'height', height + 'px');286 svg.setAttributeNS(null, 'rx', 0+'px');287 svg.setAttributeNS(null, 'ry', 0+'px');289 //svg.setAttributeNS(null,'transform', "translate(0,0)");290 //svg.setAttributeNS(null,'transform', "translate('+left+','+top+')");291 svg.style.position = 'absolute';292 }293 else if (shape == 'ellipse' || shape == 'circle') {295 svg = this.container.ownerDocument.createElementNS(svgNamespace, 'ellipse');296 svg.setAttributeNS(null, 'cx', (left + width / 2) + 'px');297 svg.setAttributeNS(null, 'cy', (top + height / 2) + 'px');298 if(shape == 'circle'){299 svg.setAttributeNS(null, 'rx', (width / 2) + 'px');300 svg.setAttributeNS(null, 'ry', (width / 2) + 'px');301 }else{302 svg.setAttributeNS(null, 'rx', (width / 2) + 'px');303 svg.setAttributeNS(null, 'ry', (height / 2) + 'px');305 }306 //svg.setAttributeNS(null,'transform', "translate('+left+','+top+')");307 svg.style.position = 'absolute';308 }309 else if (shape == 'roundrect') {310 svg = this.container.ownerDocument.createElementNS(svgNamespace, 'rect');311 svg.setAttributeNS(null, 'x', left + 'px');312 svg.setAttributeNS(null, 'y', top + 'px');313 if(textSize!=0 || textSize!=''){ var rounded=textSize; }else{var rounded=18;}314 svg.setAttributeNS(null, 'rx', rounded+'px');315 svg.setAttributeNS(null, 'ry', rounded+'px');316 svg.setAttributeNS(null, 'width', width + 'px');317 svg.setAttributeNS(null, 'height', height + 'px');318 //svg.setAttributeNS(null,'transform', "translate('+left+','+top+')");319 svg.style.position = 'absolute';320 }321 else if (shape == 'line') {322 svg = this.container.ownerDocument.createElementNS(svgNamespace, 'line');323 svg.setAttributeNS(null, 'x1', left + 'px');324 svg.setAttributeNS(null, 'y1', top + 'px');325 svg.setAttributeNS(null, 'x2', left + width + 'px');326 svg.setAttributeNS(null, 'y2', top + height + 'px');327 //svg.setAttributeNS(null,'transform', "translate('+left+','+top+')");328 svg.style.position = 'absolute';329 }330 else if (shape == 'polyline' || shape == 'polygon') {331 var xcenterpoly=xpArray;332 var ycenterpoly=ypArray;333 var thispath=''+xpArray[1]+','+ypArray[1];334 svg = this.container.ownerDocument.createElementNS(svgNamespace, shape);335 svg.setAttributeNS(null, 'points', points);336 svg.style.position = 'absolute';337 }338 else if (shape == 'path')339 {340 var k = (Math.sqrt(2)-1)*4/3;341 var circle="M 0,1 L 0.552,1 1,0.552 1,0 1,-0.552 0.552,-1 0,-1 -0.552,-1 -1,-0.552 -1,0 -1,0.552 -0.552,1 0,1z" // 4th342 svg = this.container.ownerDocument.createElementNS(svgNamespace, 'path');343 //svg.setAttributeNS(null, 'd', 'M '+thispath+' C'+thispath);344 svg.setAttributeNS(null, 'd', points);345 //svg.setAttributeNS(null,'transform', "translate(-80,-80)");346 svg.style.position = 'absolute';347 }348 else if (shape == 'controlpath')349 {350 var point='M '+left+','+top+' L '+(left+1)+','+(top+1)+'z' // 4th351 svg = this.container.ownerDocument.createElementNS(svgNamespace, 'path');352 //svg.setAttributeNS(null, 'd', 'M '+thispath+' C'+thispath);353 svg.setAttributeNS(null, 'd', point);354 svg.setAttributeNS(null,'transform', "translate(0,0)");355 svg.style.position = 'absolute';356 }357 else if (shape == 'text')358 {359 var data = this.container.ownerDocument.createTextNode(textMessaje);360 svg = this.container.ownerDocument.createElementNS(svgNamespace, 'text');361 svg.setAttributeNS(null, 'x', parseFloat(left) + 'px');362 svg.setAttributeNS(null, 'y', parseFloat(top) + 'px');363 svg.setAttributeNS(null, 'font-family', textFamily );364 svg.setAttributeNS(null, 'font-size', parseFloat(textSize));365 svg.style.position = 'absolute';366 svg.appendChild(data);367 }368 else if (shape == 'clipPath')369 {370 svg = this.container.ownerDocument.createElementNS(svgNamespace, 'clipPath');371 }372 else if (shape == 'filter')373 {374 svg = this.container.ownerDocument.createElementNS(svgNamespace, 'filter');375 }376 else if (shape == 'feGaussianBlur')377 {378 svg = this.container.ownerDocument.createElementNS(svgNamespace, 'filter');379 svg.setAttributeNS(null, 'in','SourceGraphic');380 svg.setAttributeNS(null, 'stdDeviation',parseFloat(left));381 }382 else if (shape == 'linearGradient')383 {384 svg = this.container.ownerDocument.createElementNS(svgNamespace, 'linearGradient');385 svg.setAttributeNS(null, 'x1', left);386 svg.setAttributeNS(null, 'y1', top);387 svg.setAttributeNS(null, 'x2', width);388 svg.setAttributeNS(null, 'y2', height);389 svg.setAttributeNS(null, 'gradientUnits',textMessaje);//"userSpaceOnUse"390 svg.setAttributeNS(xlinkNS,'href', imageHref);392 }393 else if (shape == 'radialGradient') {394 svg = this.container.ownerDocument.createElementNS(svgNamespace, 'radialGradient');395 svg.setAttributeNS(null, 'gradientUnits',textMessaje);//"userSpaceOnUse"396 svg.setAttributeNS(null, 'cx', left);397 svg.setAttributeNS(null, 'cy', top );398 svg.setAttributeNS(null, 'fx', width);399 svg.setAttributeNS(null, 'fy', height);400 svg.setAttributeNS(null, 'r', lineWidth);401 svg.setAttributeNS(xlinkNS,'href', imageHref);402 }403 else if (shape == 'stop') {404 svg = this.container.ownerDocument.createElementNS(svgNamespace, 'stop');405 svg.setAttributeNS(null, 'stop-color', fillColor);406 svg.setAttributeNS(null, 'stop-opacity', fillOpac);407 svg.setAttributeNS(null, 'offset', lineOpac);408 }409 else if (shape == 'defs') {410 svg = this.container.ownerDocument.createElementNS(svgNamespace, 'defs');411 //svg.setAttributeNS(null, 'id', 'defs');412 }413 else if (shape == 'group') {414 svg = this.container.ownerDocument.createElementNS(svgNamespace, 'g');415 svg.setAttributeNS(null, 'x', left + 'px');416 svg.setAttributeNS(null, 'y', top + 'px');417 svg.setAttributeNS(null, 'width', width + 'px');418 svg.setAttributeNS(null, 'height', height + 'px');419 svg.setAttributeNS(null, 'fill-opacity', parseFloat(fillOpac));420 svg.setAttributeNS(null, 'fill', fillColor);421 //}423 //else if (shape == 'linearGradient') {424 //return false425 }426 else if (shape == 'pattern') {427 svg = this.container.ownerDocument.createElementNS(svgNamespace, 'pattern');428 svg.setAttributeNS(null, 'x', left);429 svg.setAttributeNS(null, 'y', top);430 svg.setAttributeNS(null, 'width', width );431 svg.setAttributeNS(null, 'height', height);432 svg.setAttributeNS(null, 'viewBox', viewBox);433 svg.setAttributeNS(null, 'patternUnits', 'userSpaceOnUse');435 }436 else if (shape == 'use') {437 var svg = this.container.ownerDocument.createElementNS(svgNamespace, 'use');438 svg.setAttributeNS(xlinkNS,'xlink:href', imageHref);439 }440 else if (shape == 'image') {441 /* svg = this.container.ownerDocument.createElementNS(svgNamespace, 'g');442 svg.setAttributeNS(null, 'x', left + 'px');443 svg.setAttributeNS(null, 'y', top + 'px');444 svg.setAttributeNS(null, 'width', width + 'px');445 svg.setAttributeNS(null, 'height', height + 'px');446 */447 var svg = this.container.ownerDocument.createElementNS(svgNamespace, 'image');448 svg.setAttributeNS(xlinkNS,'href', imageHref);449 svg.setAttributeNS(null, 'x', left + 'px');450 svg.setAttributeNS(null, 'y', top + 'px');451 svg.setAttributeNS(null, 'width', width + 'px');452 svg.setAttributeNS(null, 'height', height + 'px');453 svg.setAttributeNS(null, 'opacity', parseFloat(fillOpac));454 svg.setAttributeNS(null, 'preserveAspectRatio','none');//xMinYMin slice455 //svg.setAttributeNS(null, 'viewbox', left+' '+top+' '+width+' '+height);456 //Ext.get(this.container).removeAllListeners(isvg)457 //svg.appendChild(isvg);458 /*459 var rsvg = this.container.ownerDocument.createElementNS(svgNamespace, 'rect');460 rsvg.setAttributeNS(null, 'x', left + 'px');461 rsvg.setAttributeNS(null, 'y', top + 'px');462 rsvg.setAttributeNS(null, 'width', width + 'px');463 rsvg.setAttributeNS(null, 'height', height + 'px');464 rsvg.style.fill = fillColor;465 rsvg.style.stroke = lineColor;466 rsvg.style.strokeWidth = lineWidth;467 rsvg.setAttributeNS(null, 'opacity', '0.1');468 rsvg.style.strokOpacity = lineOpac;469 // Ext.get(this.container).removeAllListeners(rsvg)470 svg.appendChild(rsvg);472 */473 //svg.setAttributeNS(null, 'color-rendering', fillColor);474 //svg.setAttributeNS(null, 'display', 'inherit');476 //alert(fillOpac+'lkjlkj');477 //svg.setAttributeNS(null, 'fill-opacity', parseFloat(fillOpac));479 /* if (fillColor.length == 0){fillColor = 'none';}480 if (lineColor.length == 0){lineColor = 'none';}481 svg.style.fill = fillColor;482 svg.style.stroke = lineColor;483 svg.style.strokeWidth = lineWidth;484 svg.style.fillOpacity = fillOpac;485 svg.style.strokOpacity = lineOpac;486 svg.style.setAttributeNS(null, 'fill', fillColor);487 svg.style.setAttributeNS(null, 'stroke', lineColor);488 svg.style.setAttributeNS(null, 'stroke-width', lineWidth);489 svg.style.setAttributeNS(null, 'fill-opacity', fillOpac);490 svg.style.setAttributeNS(null, 'stroke-opacity',lineOpac);492 */493 }495 if(shape == 'zoom')496 {498 }else499 {500 if(transform!='')501 {502 svg.setAttributeNS(null, 'transform', transform);503 }505 var render=true;506 if(shape.indexOf('image')>=0){render=false;}507 //if(shape.indexOf('group')>=0){render=false;}508 if(shape.indexOf('linearGradient')>=0){render=false;}509 if(shape.indexOf('radialGradient')>=0){render=false;}510 if(shape.indexOf('stop')>=0){render=false;}511 if(shape.indexOf('def')>=0){render=false;}512 if(shape.indexOf('filter')>=0){render=false;}513 if(shape.indexOf('feGaussianBlur')>=0){render=false;}517 //|| shape != 'group'518 //if(shape != 'image' || shape != 'stop' || shape != 'def')519 if(render==true)520 {522 //var set = this.container.ownerDocument.createElementNS(svgNamespace, "style");524 if (lineColor.length == 0){lineColor = 'none';}525 if (fillColor.length == 0){fillColor = 'none';}526 //if (lineWidth == NaN || lineWidth == 0 ){lineColor = '#000000';}529 // set.setAttributeNS(null, 'stroke', lineColor);530 //set.setAttributeNS(null, 'stroke-width', lineWidth);531 //set.setAttributeNS(null, 'fill-opacity', fillOpac);532 //set.setAttributeNS(null, 'stroke-opacity',lineOpac);533 //svg.appendChild(set);534 //svg.setAttributeNS(null, "style","fill:"+ fillColor+";stroke:"+lineColor+";strokeWidth:"+lineWidth+";fill-opacity:"+fillOpac+";stroke-opacity:"+lineOpac);535 //536 (fillColor!=''|| fillColor!=null )?svg.setAttributeNS(null, 'fill', fillColor):svg.setAttributeNS(null, 'fill', '#000000');538 //svg.setAttributeNS(null, 'filter', filter);539 svg.setAttributeNS(null, 'stroke', lineColor);540 svg.setAttributeNS(null, 'stroke-width', parseFloat(lineWidth));541 svg.setAttributeNS(null, 'fill-opacity', parseFloat(fillOpac));542 svg.setAttributeNS(null, 'stroke-opacity',parseFloat(lineOpac));543 svg.setAttributeNS(null, 'stroke-linejoin','round')545 /*546 <a xlink:href="http://www.w3.org">547 <ellipse cx="2.5" cy="1.5" rx="2" ry="1" fill="red" />548 </a>549 svg.style.stroke = lineColor;550 svg.style.strokeWidth = lineWidth;551 svg.style.fillOpacity = fillOpac;552 svg.style.strokOpacity = lineOpac;553 if (fillColor.length == 0){fillColor = 'none';}555 if (lineColor.length == 0){lineColor = 'none';}556 */557 }560 if(parent==''){561 this.svgRoot.appendChild(svg);562 }else{563 if(document.getElementById(parent)){564 var parentShape = document.getElementById(parent);565 parentShape.appendChild(svg);566 }567 }570 return svg;572 }574 };578 SVGRenderer.prototype.zoomFrame = function(zoom){579 this.svgRoot.setAttributeNS(null,'viewBox', zoom);582 }583 SVGRenderer.prototype.zoom = function(clicx,clicy){584 /*585 function(direction, amount) {586 var viewBox = this.rootNode.getAttribute('viewBox');587 var viewVals = viewBox.split(' ');588 if (amount == null) {589 amount = SVGElement.panFactor;590 }591 switch (direction) {592 case 'left':593 amount = 0 - amount;594 // intentionally fall through595 case 'right':596 var currentPosition = parseFloat(viewVals[0]);597 currentPosition += amount;598 viewVals[0] = currentPosition;599 break;600 case 'up':601 amount = 0 - amount;602 // intentionally fall through603 case 'down':604 var currentPosition = parseFloat(viewVals[1]);605 currentPosition += amount;606 viewVals[1] = currentPosition;607 break;608 case 'origin':609 // reset everything to initial values610 viewVals[0] = 0;611 viewVals[1] = 0;612 this.rootNode.currentScale = 1;613 this.rootNode.currentTranslate.x = 0;614 this.rootNode.currentTranslate.y = 0;615 break;616 }617 this.rootNode.setAttribute('viewBox', viewVals.join(' '));618 */622 //canvasWidth623 //canvasheight624 if(zoommode=='frame')625 {626 var viewBox = this.svgRoot.getAttributeNS(null,'viewBox');628 //alert(viewBox);630 var viewBox = zoominit;631 var viewVals = viewBox.split(' ');633 zoomx = parseFloat(viewVals[0]);634 zoomy = parseFloat(viewVals[1]);635 zoomw = parseFloat(viewVals[2]);636 zoomh = parseFloat(viewVals[3]);637 proporDiagonal=1;638 }639 else640 {642 var viewBox = this.svgRoot.getAttributeNS(null,'viewBox');644 var viewVals = viewBox.split(' ');645 var prevX = parseFloat(viewVals[0]);646 var prevY = parseFloat(viewVals[1]);647 var prevW = parseFloat(viewVals[2]);648 var prevH = parseFloat(viewVals[3]);649 var prevWidth=prevW-prevX;650 var prevHeight=prevH-prevY;652 }654 if(zoommode=='more')655 {656 fieldViewx=prevW*0.95;657 fieldViewy=prevH*0.95;658 diagonalFrame=dist2p(0,0,fieldViewx,fieldViewy);659 //diagonalAngle=getAngle(fieldViewx,fieldViewy);660 zoomx=(diagonalMidx+(diagonalFrame/2)*Math.cos(diagonalAngle+Math.PI));//-(fieldViewx/8);//-(canvasW/2)docx-fieldViewx;661 zoomy=(diagonalMidy+(diagonalFrame/2)*Math.sin(diagonalAngle+Math.PI));//-(fieldViewy/8);//-(canvasH/2);//docy-fieldViewy;662 zoomw=prevW*0.95;663 zoomh=prevH*0.95;666 proporDiagonal=diagonalFrame/diagonalinit;667 //alert(proporDiagonal);668 }669 if(zoommode=='minus')670 {671 fieldViewx=prevW*1.05;672 fieldViewy=prevH*1.05;673 diagonalFrame=dist2p(0,0,fieldViewx,fieldViewy);674 //diagonalAngle=getAngle(fieldViewx,fieldViewy);675 zoomx=(diagonalMidx+(diagonalFrame/2)*Math.cos(diagonalAngle+Math.PI));//-(fieldViewx/8);//-(canvasW/2)docx-fieldViewx;676 zoomy=(diagonalMidy+(diagonalFrame/2)*Math.sin(diagonalAngle+Math.PI));//-(fieldViewy/8);//-(canvasH/2);//docy-fieldViewy;677 zoomw=prevW*1.05;678 zoomh=prevH*1.05;679 proporDiagonal=diagonalFrame/diagonalinit;681 }682 if(zoommode=='window')683 {685 zoomx=c.mouseDownX;686 zoomy=c.mouseDownY;687 var dF=dist2p(c.mouseDownX,c.mouseDownY,clicx,clicy);688 //var mid=pmd2pb(c.clicX,c.clicX,clicx,clicy,0.5)689 zoomw=dF*proporDoc;//(mid[1]+(dF/2)*Math.cos(diagonalAngle+Math.PI));690 zoomh=dF;//(mid[2]+(dF/2)*Math.sin(diagonalAngle+Math.PI));693 }694 var direction=0;695 if(zoommode=='hand')696 {697 direction=ang2v(clicx,clicy,centerZoomx,centerZoomy);698 var distance=dist2p(clicx,clicy,centerZoomx,centerZoomy);699 var left = prevX+distance*Math.cos(direction);700 var top = prevY+distance*Math.sin(direction);701 makeWorkSite(prevH,left,top);702 }703 direction=direction*180/Math.PI;704 //this.svgRoot.currentScale = zoomscale+0.1;705 //this.svgRoot.currentTranslate.x = 0;706 //this.svgRoot.currentTranslate.y = 0;707 //var resultPosx=clicx-((prevscalex-posx)/2);//-Math.abs(posx+clicx)708 //var resultPosy=clicy-((prevscalex-posy)/2);//-Math.abs(posy+clicy)709 //var resultPosx=-Math.abs(posx+clicx);710 //var resultPosy=-Math.abs(posy+clicy);712 this.svgRoot.setAttributeNS(null,'viewBox', (zoomx)+' '+(zoomy)+' '+zoomw+' '+zoomh+'');713 var viewBox = this.svgRoot.getAttributeNS(null,'viewBox');714 //$('status').innerHTML=' '+viewBox;715 //alert(direction+'__'+prevZoomCenterx+' '+prevZoomCentery+' '+centerZoomx+' '+centerZoomy);716 }718 //this.mode, this.fillColor, this.lineColor, this.fillOpac, this.lineOpac, this.lineWidth, this.mouseDownX, this.mouseDownY, 1, 1,'',''719 SVGRenderer.prototype.datacreate = function(fillColor, lineColor, fillOpac, lineOpac, lineWidth, left, top, width, height, textMessaje, textSize, textFamily, imageHref, transform) {720 var svgNamespace = 'http://www.w3.org/2000/svg';721 var svg;722 svg = this.container.ownerDocument.createElementNS(svgNamespace, 'path');723 svg.setAttributeNS(null, 'd', data);724 svg.setAttributeNS(null,'transform', "translate(0,0)");725 svg.style.position = 'absolute';726 if (fillColor.length == 0){fillColor = 'none';}727 svg.setAttributeNS(null, 'fill', fillColor);728 if (lineColor.length == 0){lineColor = 'none';}729 svg.setAttributeNS(null, 'stroke', lineColor);730 svg.setAttributeNS(null, 'stroke-width', lineWidth);731 this.svgRoot.appendChild(svg);732 return svg;733 };735 SVGRenderer.prototype.querySelected = function(shape,centerx,centery,width,height)736 {737 var result = true;738 var shapes='names: g, image, rect, path, ellipse, circle, text, line, ';740 //if(shape.getBBox && shape)741 if( shapes.indexOf(' '+shape.tagName+',')>0)742 {744 var box = shape.getBBox();745 }else746 {747 return false;748 }749 var p1x = box.x;750 if(Math.abs(p1x-centerx)>width){result = false}752 var p1y = box.y;753 if(Math.abs(p1y-centery)>height){result = false}755 var p2x = box.x+box.width;756 if(Math.abs(p2x-centerx)>width){result = false}758 var p2y = box.y;759 if(Math.abs(p2y-centery)>height){result = false}761 var p3x = box.x+box.width;762 if(Math.abs(p3x-centerx)>width){result = false}764 var p3y = box.y+box.height;765 if(Math.abs(p3y-centery)>height){result = false}767 var p4x = box.x;768 if(Math.abs(p4x-centerx)>width){result = false}770 var p4y = box.y+box.height;771 if(Math.abs(p4y-centery)>height){result = false}773 if(result)774 {775 return { 'in':result, 'cornersx': p1x+','+p2x+','+p3x+','+p4x+',' ,'cornersy': p1y+','+p2y+','+p3y+','+p4y+',' };776 }777 else778 {779 return { 'in':result }780 }781 //center.distanceFrom(point1);784 }786 SVGRenderer.prototype.searchBoxes = function()787 {788 var base = this.svgRoot;790 var NumNodes = base.childNodes.length;791 var chain= '';792 for(i = 0;i < NumNodes;i++)793 {794 if (base.childNodes[i].getBBox)795 {796 chain+=base.childNodes[i].id + ';'797 }798 }799 chain+=''800 return chain;802 }804 SVGRenderer.prototype.DrawBorder= function(numNode, targetElement )805 {806 var shapes='names: g, image, rect, path, ellipse, circle, text, line, ';808 //if(shape.getBBox && shape)809 if( shapes.indexOf(' '+targetElement.tagName+',')>0)810 {811 var bbox = targetElement.getBBox();812 var svgns = 'http://www.w3.org/2000/svg';814 var outline = this.container.ownerDocument.createElementNS(svgns, 'rect');815 outline.setAttributeNS( null, 'x', bbox.x - 2 );816 outline.setAttributeNS( null, 'y', bbox.y - 2 );817 outline.setAttributeNS( null, 'width', bbox.width + 4 );818 outline.setAttributeNS( null, 'height', bbox.height + 4 );819 outline.setAttributeNS( null, 'stroke', '#ff00ff' );820 outline.setAttributeNS( null, 'fill', 'none' );821 outline.setAttributeNS( null, 'id', 'shapeBoxed'+numNode );823 targetElement.parentNode.insertBefore( outline, targetElement );824 return 'shapeBoxed'+numNode;825 }826 else827 {828 return false829 }830 }832 SVGRenderer.prototype.index = function(shape,order) {834 if(order==-1)835 {836 this.svgRoot.appendChild( shape );837 }838 if(order==0){840 this.svgRoot.insertBefore( shape, shape.parentNode.firstChild );841 }843 if(order==1 || order==2)844 {845 var id=shape.getAttributeNS(null, 'id');846 //alert(id);849 var numNodes=this.svgRoot.childNodes.length;850 //alert(numNodes);852 var num=0;853 for(var i = 1; i < numNodes; i++)854 {856 var etiq=this.svgRoot.childNodes[i].getAttributeNS(null, 'id');857 if (etiq==id)858 {859 num=i;861 }862 }863 //alert(num);864 if(order==1)865 {866 if((num-1)>=-1)867 {868 this.svgRoot.insertBefore( shape, this.svgRoot.childNodes[num-1]);869 }870 }871 if(order==2){872 if((num+1)<numNodes)873 {874 this.svgRoot.insertBefore( shape, this.svgRoot.childNodes[num+2]);875 }876 }878 }881 /*var contshapes = shape.parentNode.childNodes.length;882 var elem1 = shape;//this.svgRoot.childNodes[1];883 var elem2 = shape.parentNode.childNodes[parseInt(contshapes-9)];884 var tmp = elem1.cloneNode( true );885 shape.parentNode.replaceChild( tmp, elem2 );886 shape.parentNode.replaceChild( elem2, elem1 );887 */888 //alert(elem2+' '+ elem1 )889 //return elem2;891 }892 SVGRenderer.prototype.remove = function(shape) {893 //shape.parentNode.removeChild(shape);894 this.svgRoot.removeChild(shape);895 }898 SVGRenderer.prototype.copy = function(shape)899 {900 var svg;901 svg =shape.cloneNode(false);902 if(shape.tagName=="text"){903 var text=shape.textContent ;904 svg.textContent=text;905 }906 //svg.setAttributeNS(null, 'fill', "#aa00aa");907 return svg;908 };911 SVGRenderer.prototype.paste = function(clipboard,left,top)912 {913 //var svg;914 //svg =shape;915 //clipboard.setAttributeNS(null, 'fill', "#0000aa");916 //clipboard.setAttributeNS(null,'transform', "translate("+left+","+top+")");917 this.svgRoot.appendChild(clipboard);918 return clipboard;919 };922 SVGRenderer.prototype.duplicate = function(shape)923 {924 var svg;925 svg =shape.cloneNode(false);926 //svg.setAttributeNS(null, 'fill', "#aa00aa");927 this.svgRoot.appendChild(svg);928 return svg;929 };931 SVGRenderer.prototype.undo = function()932 {933 this.svgRoot.removeChild( this.svgRoot.lastChild );934 };936 /*937 function zSwap(parent, elem1, elem2)938 {939 var tmp = elem1.cloneNode( true );940 parent.replaceChild( tmp, elem2 );941 parent.replaceChild( elem2, elem1 );942 }944 SVGRenderer.prototype.moveToTop( svgNode )945 {946 this.svgRoot.appendChild( svgNode );947 }950 SVGRenderer.prototype.moveToBottom( svgNode )951 {952 this.svgRoot.insertBefore( svgNode, svgNode.parentNode.firstChild );953 }955 */961 var xshe=0; //bad962 var yshe=0;963 var isArc=false;964 var contArc=0;966 SVGRenderer.prototype.move = function(shape, left, top, fromX,fromY) {967 //typeTransform='Translate';969 var box = shape.getBBox();970 var angle=0;971 var dist=0;972 var rotated=false;974 if (shape.hasAttributeNS(null,'transform')) {975 var tran=shape.getAttributeNS(null, 'transform');976 var rot='';977 var scl='';978 var angle=0;979 if(tran.indexOf('rotate')!=-1)980 {981 if(tran.indexOf('scale')!=-1)982 {983 var chain2=tran.split('),');984 rot= GetString(chain2[0], 'rotate(', ',');985 angle=parseFloat(rot);986 scl= GetString(tran, 'scale(', ')');987 }else{988 var chain2=tran.split(',');989 var rot0=chain2[0].split('rotate(');990 rot='good';991 angle=parseFloat(rot0[1]);992 scl='';994 }995 }else{996 if(tran.indexOf('scale')!=-1)997 {998 scl= GetString(tran, 'scale(', ')');999 angle=0;1000 }else{1001 //1002 }1003 }1005 //var h=shape.getAttributeNS(null, SVG_TRANSFORM_ROTATE );1007 var centerx=box.x+(box.width/2);1008 var centery=box.y+(box.height/2);1009 var cadRot='';1010 var cadScale='';1011 var union='';1012 if(angle!=0)1013 {1014 cadRot='rotate('+(angle)+', '+centerx+', '+centery+')';1015 }1016 if(scl.length>2)1017 {1018 if(rot.length>2){ union=',';}1019 cadScale='scale('+scl+')';1020 if(scl.indexOf('-')!=-1)1021 {1022 var dist= dist2p(left,top,box.x,box.y);1024 left=left;1025 }1026 if(scl.indexOf(',-')!=-1 || scl.indexOf(', -')!=-1 )1027 {1028 //top=eval('-'+top);1029 var dist= dist2p(left,top,box.x,box.y);1030 top=top;1031 }1033 }1034 //shape.setAttributeNS(null,'transform', 'rotate('+(angle)+', '+centerx+', '+centery+')');1035 shape.setAttributeNS(null,'transform', cadRot+union+cadScale);1037 //var angleRad=angle*Math.PI/180;1041 //dist=dist2p(x,y,left, top) ;1042 rotated=true;1044 }1045 //left=left-box.x;1046 //top=top-box.y;1047 //left = centerx-left;1048 //top = centery-top;1050 contmove++;1052 if (shape.tagName == 'rect'){1053 /* var dudy= shape.parentNode;1054 if(dudy.tagName=='g'){1055 document.forms[0].code.value= 'this g ============ ';1056 shape.setAttributeNS(null, 'x', left);1057 shape.setAttributeNS(null, 'y', top);1059 dudy.setAttributeNS(null, 'x', left);1060 dudy.setAttributeNS(null, 'y', top);1061 dudy.childNodes[0].setAttributeNS(null, 'x', left);1062 dudy.childNodes[0].setAttributeNS(null, 'y', top);1064 }else{1065 //document.forms[0].code.value= box.x+' '+box.y+' formX Y'+ fromX+'_'+fromY+' left '+left+'_'+top+'==============';1066 //document.forms[0].code.value+= tran+' rot '+ angle+'_'+x+'_'+y+' dist '+dist;1067 if(rotated){1068 //shape.setAttributeNS(null, 'x', box.x*Math.cos(angleRad)) ;1069 //shape.setAttributeNS(null, 'y', box.y*Math.sin(angleRad)) ;1070 shape.setAttributeNS(null, 'x', left);1071 shape.setAttributeNS(null, 'y', top);1074 }else{1075 */1076 shape.setAttributeNS(null, 'x', left);1077 shape.setAttributeNS(null, 'y', top);1078 //}1079 //$('option_rect_trx').value= left;1080 //$('option_rect_try').value= top;1081 // var h=shape.getAttributeNS(null, 'height');1082 //var w=shape.getAttributeNS(null, 'width');1083 //document.forms[0].code.value= h+' '+w;1084 //}1085 }1086 if (shape.tagName == 'g')1087 {1088 //this.editor.log(shape.tagName+' ==============');1090 shape.setAttributeNS(null, 'x', left);1091 shape.setAttributeNS(null, 'y', top);1092 shape.childNodes[0].setAttributeNS(null, 'x', left + 'px');1093 shape.childNodes[0].setAttributeNS(null, 'y', top + 'px');1094 shape.childNodes[1].setAttributeNS(null, 'x', left + 'px');1095 shape.childNodes[1].setAttributeNS(null, 'y', top + 'px');1097 }1098 if (shape.tagName == 'image'){1099 shape.setAttributeNS(null, 'x',left + 'px');1100 shape.setAttributeNS(null, 'y', top + 'px');1101 //$('option_img_trx').value= left;1102 //$('option_img_try').value= top;1103 var h=shape.getAttributeNS(null, 'height');1104 var w=shape.getAttributeNS(null, 'width');1105 // this.editor.log( h+' '+w);1106 }1107 if (shape.tagName == 'text'){1108 var size=parseFloat(shape.getAttributeNS(null, 'font-size'));1109 //$('code').value=size;1110 shape.setAttributeNS(null, 'x', left + 'px');1111 shape.setAttributeNS(null, 'y', parseFloat(top+size) + 'px');1112 //$('option_text_trx').value= left;1113 //$('option_text_try').value= top;1115 }1116 if (shape.tagName == 'line'){1117 var deltaX = shape.getBBox().width;1118 var deltaY = shape.getBBox().height;1119 shape.setAttributeNS(null, 'x1', left + 'px');1120 shape.setAttributeNS(null, 'y1', top + 'px');1122 shape.setAttributeNS(null, 'x2', left + deltaX + 'px');1123 shape.setAttributeNS(null, 'y2', top + deltaY + 'px');1124 //$('option_line_trx').value= left;1125 //$('option_line_try').value= top;1127 }1128 if (shape.tagName == 'ellipse'){1129 var putx=left + (shape.getBBox().width / 2)1130 var puty= top + (shape.getBBox().height / 2)1131 shape.setAttributeNS(null, 'cx', putx + 'px');1132 shape.setAttributeNS(null, 'cy', puty + 'px');1133 //$('option_ellipse_trx').value= putx;1134 //$('option_ellipse_try').value= puty;1136 }1137 if (shape.tagName == 'path' || shape.tagName == 'polyline' ) {1139 if(contmove==1){1140 xshe=left;1141 yshe=top;1142 }1143 var path=shape.getAttributeNS(null, 'd');1144 path=path.replace(/, /g, ',');1145 path=path.replace(/ ,/g, ',');1146 var ps =path.split(" ")1147 var pcc = "";1148 var point =ps[0].split(",");1151 var num0= parseFloat(point[0].substring(1));1152 var num1= parseFloat(point[1]);1154 var ang= ang2v(box.x,box.y,left,top) ;1155 var angle = Math.round((ang/Math.PI* 2)* 360);1156 var angx = Math.cos(ang);1157 var angy = Math.sin(ang);1158 var dist= dist2p(left,top,box.x,box.y);1159 var xinc=dist*angx;1160 var yinc=dist*angy;1161 var re = /^[-]?\d*\.?\d*$/;1162 for(var i = 0; i < ps.length; i++)1163 {1164 if(ps[i].indexOf(',')>0){1166 var point =ps[i].split(",");1167 var char1=point[0].substring(0,1);1168 if(char1=='A' || char1=='a'){isArc=true; contArc=0;}1169 if(isArc==true){contArc++}1170 if(contArc==4){contArc=0; isArc=false}1172 //if (isNaN(valnum))1173 if (!char1.match(re))1174 {1175 var num0= parseFloat(point[0].substring(1));1176 var text=char1;1177 }else{1178 if(isArc==true && contArc==2 )1179 {1180 var num0= point[0];1181 }else{1182 var num0= parseFloat(point[0]);1183 }1184 var text='';1186 }1189 if(isArc==true && contArc==2)1190 {1191 point[1]= point[1].toString() ;1192 }1193 else1194 {1196 num0+=xinc;1197 point[1]= parseFloat(point[1]);1198 point[1]+=yinc;1200 }1201 var cx=num0;1203 var cy=point[1];1204 pcc+=text+cx+','+cy+' ';1205 }else{1206 pcc+=ps[i]+' ';1207 }1208 }1210 shape.setAttributeNS(null,'d', pcc);1212 }1215 //$('status').innerHTML=typeTransform+': '+left+' '+top;1216 //$('option_select_trx').value= left;1217 //$('option_select_try').value= top;1221 };1225 SVGRenderer.prototype.track = function(shape) {1226 // TODO1227 };1230 SVGRenderer.prototype.clic = function(shape) {1231 var end='';1232 if(data_path_close==true){end='z';}1233 var maxcont=setPoints.length;1234 var thispath='M'+setPoints[0]+' ';1235 $('someinfo').value=maxcont;1237 for(var conta=1;conta< maxcont;conta++){1238 thispath+='L'+setPoints[conta]+' ';1239 }1240 //var pointshape=shape.getAttributeNS(null,"d");1241 //shape.setAttributeNS(null,'d',thispath+end);1242 var path=thispath+end;1244 shape.setAttributeNS(null,'d',path);1245 $('control_codebase').value=path;1247 }1250 SVGRenderer.prototype.resize = function(shape, fromX, fromY, toX, toY) {1251 var deltaX = toX - fromX;1252 var deltaY = toY - fromY;1254 /* if (lineColor.length == 0){lineColor = 'none';}1255 if (fillColor.length == 0){fillColor = 'none';}1256 shape.style.fill = fillColor;1257 shape.style.stroke = lineColor;1258 shape.style.strokeWidth = lineWidth;1259 shape.style.fillOpacity = fillOpac;1260 shape.style.strokOpacity = lineOpac;1261 */1262 if (shape.tagName == 'rect' )1263 {1266 if (deltaX < 0) {1267 shape.setAttributeNS(null, 'x', toX + 'px');1268 shape.setAttributeNS(null, 'width', -deltaX + 'px');1269 }1270 else1271 {1272 shape.setAttributeNS(null, 'width', deltaX + 'px');1273 }1275 if (deltaY < 0)1276 {1277 shape.setAttributeNS(null, 'y', toY + 'px');1278 shape.setAttributeNS(null, 'height', -deltaY + 'px');1279 }1280 else1281 {1282 shape.setAttributeNS(null, 'height', deltaY + 'px');1283 }1284 /*shape.style.fill = fillColor;1285 shape.style.stroke = lineColor;1286 shape.style.strokeWidth = lineWidth;1287 shape.style.fillOpacity = fillOpac;1288 shape.style.strokOpacity = lineOpac;1289 */1291 }1293 /* if ( shape.tagName == 'simage' )1294 {1295 var img=shape.firstChild;//nodeName;//nodparseFloatue;//nodes.item(0);1296 //alert(img);1297 if (deltaX < 0) {1298 shape.setAttributeNS(null, 'x', parseFloat(toX) + 'px');1299 shape.setAttributeNS(null, 'width', parseFloat(-deltaX) + 'px');1301 }1302 else1303 {1304 shape.setAttributeNS(null, 'width', parseFloat(deltaX) + 'px');1305 }1307 if (deltaY < 0)1308 {1309 shape.setAttributeNS(null, 'y', parseFloat(toY) + 'px');1310 shape.setAttributeNS(null, 'height', parseFloat(-deltaY) + 'px');1311 }1312 else1313 {1314 shape.setAttributeNS(null, 'height', parseFloat(deltaY) + 'px');1315 }1316 var h=shape.getAttributeNS(null, 'height');1317 var w=shape.getAttributeNS(null, 'width');1318 document.forms[0].code.value= h+' '+w;1322 }*/1323 if (shape.tagName == 'g' || shape.tagName == 'image')1324 {1327 if (deltaX < 0)1328 {1329 shape.setAttributeNS(null, 'x', parseFloat(toX) + 'px' );1330 shape.setAttributeNS(null, 'width', parseFloat(-deltaX) + 'px');1333 }1334 else1335 {1336 shape.setAttributeNS(null, 'width', parseFloat(deltaX) + 'px');1337 }1339 if (deltaY < 0)1340 {1341 shape.setAttributeNS(null, 'y', parseFloat(toY) + 'px');1342 shape.setAttributeNS(null, 'height', parseFloat(-deltaY) + 'px' );1343 }1344 else1345 {1346 shape.setAttributeNS(null, 'height', parseFloat(deltaY) + 'px');1348 }1350 }1351 if (shape.tagName == 'ellipse') {1352 if (deltaX < 0) {1353 shape.setAttributeNS(null, 'cx', (fromX + deltaX / 2) + 'px');1354 shape.setAttributeNS(null, 'rx', (-deltaX / 2) + 'px');1355 }1356 else {1357 shape.setAttributeNS(null, 'cx', (fromX + deltaX / 2) + 'px');1358 shape.setAttributeNS(null, 'rx', (deltaX / 2) + 'px');1359 }1361 if (deltaY < 0) {1362 shape.setAttributeNS(null, 'cy', (fromY + deltaY / 2) + 'px');1363 shape.setAttributeNS(null, 'ry', (-deltaY / 2) + 'px');1364 }1365 else {1366 shape.setAttributeNS(null, 'cy', (fromY + deltaY / 2) + 'px');1367 shape.setAttributeNS(null, 'ry', (deltaY / 2) + 'px');1368 }1369 }1370 if (shape.tagName == 'line') {1371 shape.setAttributeNS(null, 'x2', toX);1372 shape.setAttributeNS(null, 'y2', toY);1373 }1374 if (shape.tagName == 'polyline') {1376 xpArray.push(toX);1377 ypArray.push(toY);1378 var thispath=''+xpArray[1]+','+ypArray[1];1379 var thispath1='';1380 var thispath2='';1381 var maxcont=xpArray.length;1383 for(var conta=2;conta< maxcont;conta++){1384 thispath1+=' '+xpArray[conta]+' '+ypArray[conta];1385 thispath2+=' '+xpArray[conta]+', '+ypArray[conta];1387 }1390 shape.setAttributeNS(null,'points',thispath+thispath1);1393 }1395 if (shape.tagName == 'path') {1397 if (selectmode == 'controlpath')1398 {1399 var end='';1400 if(data_path_close==true){end='z';}1402 var thispath='M'+setPoints[0]+' ';1403 var maxcont=setPoints.length;1405 for(var conta=1;conta< maxcont;conta++){1406 thispath+='L'+setPoints[conta]+' ';1409 }1410 var path=thispath+'L'+toX+','+toY+end;1411 //var pointshape=shape.getAttributeNS(null,"d");1412 shape.setAttributeNS(null,'d',path);1413 document.forms[0].control_codebase.value=path;1414 }1415 else1416 {1418 xpArray.push(toX);1419 ypArray.push(toY);1421 var thispath=''+xpArray[1]+','+ypArray[1];1422 var thispath1='';1423 var thispath2='';1424 var maxcont=xpArray.length;1426 for(var conta=2;conta< maxcont;conta++){1427 //thispath1+=' '+xpArray[conta]+' '+ypArray[conta];1428 thispath2+=' '+xpArray[conta]+','+ypArray[conta];1429 //if((conta+2)%3==0){thispath2+=' C';}1430 }1431 var end='';1432 if(data_path_close==true){end='z';}1433 shape.setAttributeNS(null,'d','M '+thispath+ ' L'+thispath2+end);1437 /*1439 var pointshape=shape.getAttributeNS(null,"points");1440 var thispoint=' '+toX+' '+toY;1441 $('status').innerHTML =pointshape;1442 shape.setAttributeNS(null,'points',pointshape+thispoint)1443 shape.setAttributeNS(null, 'stroke-width', "25");1444 shape.setAttributeNS(null, 'fill', "#FFFF00");1446 //shape.points.push(toX);1447 //shape.points.push(toY);1448 //shape.setAttribute("points",pointshape+);1449 // var maxcont=xpArray.length-1;1450 var thispath=''+xpArray[1]+','+ypArray[1];1451 var maxcont=xpArray.length;1452 //alert(maxcont);1453 for(var conta=2;conta< maxcont;conta++){1454 thispath+=','+xpArray[conta]+','+ypArray[conta];1455 }1456 //alert(shape.points[1]);1457 //shape.setAttribute("points",thispath);1458 //points.Value = thispath;1459 var thispath=''+xpArray[1]+','+ypArray[1];1460 var maxcont=xpArray.length;1461 //alert(maxcont);1462 for(var conta=1;conta< maxcont;conta++){1463 thispath+=','+xpArray[conta]+','+ypArray[conta];1464 }1466 shape.points.Value = thispath;1467 */1472 /*1475 //this.renderer.move(this.selected, this.selectedBounds.x + deltaX, this.selectedBounds.y + deltaY);1476 // shape.setAttributeNS(null,'transform', "translate("+(toX)+","+(toy)+")");1480 var thispath=''+xpArray[0]+','+ypArray[0];1481 var maxcont=xpArray.length;1482 //shape.setAttributeNS(null,'transform', "translate("+toX+","+toY+")");1483 for(var conta=1;conta< maxcont;conta++){1484 thispath+=','+xpArray[conta]+','+ypArray[conta];1485 }1487 shape.setAttributeNS(null, 'x', toX);1488 shape.setAttributeNS(null, 'y', toY);1489 shape.setAttributeNS(null, 'points', thispath);1490 */1491 }1492 }1493 if (shape == 'text') {}1495 };1496 SVGRenderer.prototype.tocurve = function()1497 {1498 var points=$('control_codebase').value.split('L');1499 var chain='';1500 chain+=points[0]+'C';1501 var numpoints=points.length-1;1502 for(var a=1;a<numpoints;a++)1503 {1504 if(a%3==0)1505 {1506 chain+=points[a]+'C';1507 }1508 else1509 {1510 chain+=points[a];1511 }1512 }1513 if(numpoints%3==0){1514 chain+=points[numpoints]+'';1515 }1516 if(numpoints%3==2){1517 chain+=points[numpoints-1]+'';1518 chain+=points[numpoints]+'';1519 }1520 if(numpoints%3==1){1521 chain+=points[numpoints-1]+'';1522 chain+=points[numpoints-1]+'';1523 chain+=points[numpoints]+'';1524 }1525 if(numpoints%3==3){1526 chain+=points[numpoints-1]+'';1527 chain+=points[numpoints-1]+'';1528 chain+=points[numpoints-1]+'';1529 chain+=points[numpoints]+'';1530 }1532 $('someinfo').value=numpoints+ ' '+ numpoints%3;1533 $('control_codebase').value=chain;1534 setShape();1535 };1538 SVGRenderer.prototype.info = function(shape)1539 {1540 var shInfo = {};1541 //shInfo.id =null;1542 //if(shInfo.id !=null){1543 if(shape.id != "tracker")1544 {1545 if(shape.getAttribute('id')==null){1546 var nid='shape:' + createUUID();1547 shape.setAttributeNS(null, 'id', nid);1548 //shInfo.id = shape.id.substr(6);1550 }1551 shInfo.id =shape.getAttribute('id');1552 shInfo.type = shape.tagName;1554 if(shape.tagName=='svg')1555 {1556 shInfo.type ='doc'1557 shInfo.left = parseFloat(shape.getAttribute('x'));1558 shInfo.top = parseFloat(shape.getAttribute('y'));1559 shInfo.width = parseFloat(shape.getAttribute('width'));1560 shInfo.height = parseFloat(shape.getAttribute('height'));1561 shInfo.viewBox = shape.getAttribute('viewBox');1562 shInfo.bgcolor=this.container.style.backgroundColor;1564 return shInfo;1565 }1566 else1567 {1569 }1573 if (shape.hasAttributeNS(null,'transform')) {1574 shInfo.transform = shape.getAttribute('transform');1575 }else{1576 shInfo.transform ='';1577 }1579 if (shape.tagName =='defs')1580 {1581 //alert('dfasd');1582 if(shape.getAttribute('id')==null || shape.getAttribute('id')=='')1583 {1585 //var nid='shape:' + createUUID();1586 shape.setAttributeNS(null, 'id', 'defs');1587 shInfo.id=shape.getAttribute('id');1588 }1589 shInfo.id=shape.getAttribute('id');1590 }1591 if (shape.tagName == 'feGaussianBlur')1592 {1593 shInfo.left = shape.getAttribute('stdDeviation');1594 }1596 if(shape.tagName == "text"){1598 shInfo.textFamily = shape.getAttribute('font-family')1599 shInfo.textSize = parseInt(shape.getAttribute('font-size'))1600 shInfo.top = parseFloat(shape.getAttribute('y'))1601 shInfo.left = parseFloat(shape.getAttribute('x'))1602 shInfo.text = shape.textContent1603 shInfo.lineWidth = parseFloat(shape.getAttribute('stroke-width'))1605 //shInfo.text = shape.nodparseFloatue;1606 }1607 var rendering=true;1608 if(shape.tagName =='image'){rendering=false;}1609 if(shape.tagName =='defs'){rendering=false;}1610 if(shape.tagName =='svg'){rendering=false;}1611 if(shape.tagName =='stop'){rendering=false;}1613 if(shape.tagName =='filter'){rendering=false;}1614 if(shape.tagName =='feGaussianBlur'){rendering=false;}1617 if(rendering==true)1618 {1619 shInfo.fillColor = shape.getAttribute('fill');1620 if((shape.getAttribute('fill')=='' || shape.getAttribute('fill')==null) && shape.parentNode.getAttribute('id')!='svg'){1622 shInfo.fillColor = shape.parentNode.getAttribute('fill');1623 var mystyle= shape.parentNode.getAttribute('style');1624 if(mystyle!= null && mystyle.indexOf('<![CDATA[')>=0)1625 {1627 }1628 else1629 {1630 if(mystyle!= null){1631 //var estilo=shape.getAttribute('style');1632 var data;1634 var estilo=generateJSON(mystyle);1635 eval("data="+estilo);1636 //var data=eval('"'+estilo+'"');1637 //var data=estilo.evalJSON();1639 (data["font-size"])?shInfo.textSize=data["font-size"]:shInfo.textSize;1640 (data["font-family"])?shInfo.textFamily=data["font-family"]:shInfo.textFamily;1642 (data.fill)?shInfo.fillColor=data.fill:shInfo.fillColor;1643 (data.stroke)?shInfo.lineColor=data.stroke:shInfo.lineColor;1644 (data.transform)?shInfo.transform=data.transform:shInfo.transform;1645 (data["fill-opacity"])?shInfo.fillOpac=data["fill-opacity"]:shInfo.fillOpac;1647 }1649 }1650 }1651 shInfo.filter = shape.getAttribute('filter')1652 shInfo.lineColor = shape.getAttribute('stroke')1653 shInfo.fillOpac = parseFloat(shape.getAttribute('fill-opacity'))1654 shInfo.lineOpac = parseFloat(shape.getAttribute('stroke-opacity'))1655 shInfo.lineWidth = parseFloat(shape.getAttribute('stroke-width'))1657 var mystyle= shape.getAttribute('style');1659 if(mystyle!= null && mystyle.indexOf('<![CDATA[')>=0)1660 {1662 }1663 else1664 {1665 // shInfo.style=shape.getAttribute('style');1667 if(mystyle!= null){1668 //var estilo=shape.getAttribute('style');1669 var data;1671 var estilo=generateJSON(mystyle);1672 eval("data="+estilo);1673 //var data=eval('"'+estilo+'"');1674 //var data=estilo.evalJSON();1676 (data["font-size"])?shInfo.textSize=data["font-size"]:shInfo.textSize;1677 (data["font-family"])?shInfo.textFamily=data["font-family"]:shInfo.textFamily;1679 (data.fill)?shInfo.fillColor=data.fill:shInfo.fillColor;1680 (data.stroke)?shInfo.lineColor=data.stroke:shInfo.lineColor;1681 (data.transform)?shInfo.transform=data.transform:shInfo.transform;1682 (data["fill-opacity"])?shInfo.fillOpac=data["fill-opacity"]:shInfo.fillOpac;1683 //(data.color)?shInfo.lineColor=data.color:shInfo.lineColor;1685 //shInfo.fillColor=data.fill;1686 //document.getElementById("someinfo").value +=data.fill+' ';//estilo ;//data['fill']+' ';//1687 }1688 }1689 }1692 if (shape.tagName == 'rect')1693 {1694 if(shape.getAttribute('rx') || shape.getAttribute('ry')){1695 shInfo.type = "rect";1696 shInfo.rx = parseFloat(shape.getAttribute('rx'))1697 shInfo.ry = parseFloat(shape.getAttribute('rx'))1698 }1699 shInfo.left = parseFloat(shape.getAttribute( 'x'));1700 shInfo.top = parseFloat(shape.getAttribute( 'y'));1701 shInfo.width = parseFloat(shape.getAttribute('width'));1702 shInfo.height = parseFloat(shape.getAttribute('height'));1703 }1704 else if (shape.tagName == 'ellipse' || shape.tagName == 'circle')1705 {1706 if(shape.tagName == 'circle'){1707 shInfo.width = parseFloat(shape.getAttribute('r'))*2;1708 shInfo.height = parseFloat(shape.getAttribute('r'))*2;1709 }else{1710 shInfo.width = parseFloat(shape.getAttribute('rx'))*2;1711 shInfo.height = parseFloat(shape.getAttribute('ry'))*2;1712 }1714 shInfo.left = parseFloat(shape.getAttribute('cx')) - (shInfo.width/2);1715 shInfo.top = parseFloat(shape.getAttribute('cy')) - (shInfo.height/2) ;1716 }1717 else if(shape.tagName == 'linearGradient') {1718 shInfo.text =shape.getAttribute('gradientUnits');//"userSpaceOnUse"1719 shInfo.left = shape.getAttribute('x1');1720 shInfo.top = shape.getAttribute('y1');1721 shInfo.width = shape.getAttribute('x2');1722 shInfo.height = shape.getAttribute('y2');1723 shInfo.href = shape.getAttribute('xlink:href');1724 }1725 else if(shape.tagName == 'radialGradient') {1726 shInfo.text =shape.getAttribute('gradientUnits');//"userSpaceOnUse"1727 shInfo.left = shape.getAttribute('cx');1728 shInfo.top = shape.getAttribute('cy');1729 shInfo.width = shape.getAttribute('fx');1730 shInfo.height = shape.getAttribute('fy');1731 shInfo.lineWidth = shape.getAttribute('r');1732 shInfo.href = shape.getAttribute('xlink:href');1733 }1734 else if(shape.tagName == 'stop')1735 {1736 shInfo.fillColor = shape.getAttribute('stop-color');1737 shInfo.fillOpac = shape.getAttribute('stop-opacity');1738 shInfo.lineOpac = shape.getAttribute('offset');1739 var mystyle= shape.getAttribute('style');1740 if(mystyle!= null && mystyle.indexOf('<![CDATA[')>=0)1741 {1743 }1744 else1745 {1746 if(mystyle!= null)1747 {1748 var data;1749 var estilo=generateJSON(mystyle);1750 eval("data="+estilo);1751 (data["stop-color"])?shInfo.fillColor=data["stop-color"]:shInfo.fillColor;1752 (data["stop-opacity"])?shInfo.fillOpac=data["stop-opacity"]:shInfo.fillOpac;1753 //document.getElementById("someinfo").value +=data["stop-color"]+' ';1754 }1755 }1756 }1757 else if (shape.tagName == 'line')1758 {1759 shInfo.left = parseFloat(shape.getAttribute('x1'));1760 shInfo.top = parseFloat(shape.getAttribute('y1'));1761 shInfo.width = parseFloat(shape.getAttribute('x2')) -shInfo.left;1762 shInfo.height = parseFloat(shape.getAttribute('y2')) -shInfo.top;1763 }1764 else if (shape.tagName == 'polyline' || shape.tagName == 'polygon')1765 {1766 shInfo.points = shape.getAttribute('points');1767 }1769 else if (shape.tagName == 'g')1770 {1771 shInfo.type = "group";1772 shInfo.left = parseFloat(shape.getAttribute( 'x'));1773 shInfo.top = parseFloat(shape.getAttribute( 'y'));1774 shInfo.width = parseFloat(shape.getAttribute('width'));1775 shInfo.height = parseFloat(shape.getAttribute('height'));1776 shInfo.fillColor = shape.getAttribute('fill');1777 if(shape.getAttribute('id')==null || shape.getAttribute('id')=='')1778 {1779 var nid='shape:' + createUUID();1780 shape.setAttributeNS(null, 'id', nid);1781 shInfo.id=shape.getAttribute('id');1782 }1784 }1785 else if (shape.tagName == 'path')1786 {1787 shInfo.points = shape.getAttribute('d');1788 //shInfo.transform = shape.getAttribute('transform');1790 //alert(shInfo.transform);1791 //document.forms[0].codebase.value=shape.getAttribute('d');1793 }1794 else if (shape.tagName == 'pattern')1795 {1797 shInfo.left = parseFloat(shape.getAttribute( 'x'));1798 shInfo.top = parseFloat(shape.getAttribute( 'y'));1799 shInfo.width = parseFloat(shape.getAttribute('width'));1800 shInfo.height = parseFloat(shape.getAttribute('height'));1801 shInfo.viewBox = shape.getAttribute('viewBox');1803 if(shape.getAttribute('id')==null || shape.getAttribute('id')=='')1804 {1805 var nid='shape:' + createUUID();1806 shape.setAttributeNS(null, 'id', nid);1807 shInfo.id=shape.getAttribute('id');1808 }1810 }1811 else if (shape.tagName == 'image')1812 {1814 shInfo.left = parseFloat(shape.getAttribute( 'x'));1815 shInfo.top = parseFloat(shape.getAttribute( 'y'));1816 shInfo.width = parseFloat(shape.getAttribute('width'));1817 shInfo.height = parseFloat(shape.getAttribute('height'));1818 shInfo.fillOpac = parseFloat(shape.getAttribute('opacity'));1819 shInfo.href = shape.getAttribute('href');1821 }1822 else if (shape.tagName == 'use')1823 {1825 shInfo.href = shape.getAttribute('xlink:href');1827 }1828 if(shape.parentNode.tagName != 'svg'){1829 //shInfo.width = parseFloat(shape.getAttribute('width'));1830 //shInfo.height = parseFloat(shape.getAttribute('height'));1831 //shInfo.viewBox = shape.getAttribute('viewBox');1832 shInfo.parent=shape.parentNode.getAttribute('id');1834 }1836 return shInfo;1837 }else{1838 //do nothing if its the tracker1839 }1843 };1845 SVGRenderer.prototype.info01 = function(shape)1846 {1847 var shInfo = {};1848 if(shape.id != "tracker"){1849 //shInfo.id = shape.id.substr(6);1850 shInfo.id =shape.getAttribute('id');1851 shInfo.type = shape.tagName;1853 if(shape.tagName=='svg')1854 {1855 shInfo.type ='doc'1856 shInfo.left = parseFloat(shape.getAttribute('x'));1857 shInfo.top = parseFloat(shape.getAttribute('y'));1858 shInfo.width = parseFloat(shape.getAttribute('width'));1859 shInfo.height = parseFloat(shape.getAttribute('height'));1860 shInfo.viewBox = shape.getAttribute('viewBox');1861 shInfo.bgcolor=this.container.style.backgroundColor;1862 }1864 if (shape.hasAttributeNS(null,'transform')) {1865 shInfo.transform = shape.getAttribute('transform');1866 }else{1867 shInfo.transform ='';1868 }1870 if(shape.tagName == "text"){1872 shInfo.textFamily = shape.getAttribute('font-family')1873 shInfo.textSize = parseInt(shape.getAttribute('font-size'))1874 shInfo.top = parseFloat(shape.getAttribute('y'))1875 shInfo.left = parseFloat(shape.getAttribute('x'))1876 shInfo.text = shape.textContent1877 shInfo.lineWidth = parseFloat(shape.getAttribute('stroke-width'))1879 //shInfo.text = shape.nodparseFloatue;1880 }1881 var styled=true;1882 if(shape.tagName =='image'){styled=false;}1883 if(shape.tagName =='g'){styled=false;}1884 if(shape.tagName =='stop'){styled=false;}1885 if(shape.tagName =='svg'){styled=false;}1886 if(styled)1887 {1888 shInfo.fillColor = shape.getAttribute('fill')1889 shInfo.lineColor = shape.getAttribute('stroke')1890 shInfo.fillOpac = parseFloat(shape.getAttribute('fill-opacity'))1891 shInfo.lineOpac = parseFloat(shape.getAttribute('stroke-opacity'))1892 shInfo.lineWidth = parseFloat(shape.getAttribute('stroke-width'))1894 var mystyle= shape.getAttribute('style');1896 if(mystyle!= null && mystyle.indexOf('<![CDATA[')>=0)1897 {1899 }1900 else1901 {1902 // shInfo.style=shape.getAttribute('style');1904 if(mystyle!= null){1905 //var estilo=shape.getAttribute('style');1906 var data;1908 var estilo=generateJSON(mystyle);1909 eval("data="+estilo);1910 //var data=eval('"'+estilo+'"');1911 //var data=estilo.evalJSON();1913 (data["font-size"])?shInfo.textSize=data["font-size"]:shInfo.textSize;1914 (data["font-family"])?shInfo.textFamily=data["font-family"]:shInfo.textFamily;1916 (data.fill)?shInfo.fillColor=data.fill:shInfo.fillColor;1917 (data.stroke)?shInfo.lineColor=data.stroke:shInfo.lineColor;1918 (data.transform)?shInfo.transform=data.transform:shInfo.transform;1919 (data["fill-opacity"])?shInfo.fillOpac=data["fill-opacity"]:shInfo.fillOpac;1920 //shInfo.fillColor=data.fill;1921 //document.getElementById("someinfo").value +=data.fill+' ';//estilo ;//data['fill']+' ';//1922 }1923 }1924 }1927 if (shape.tagName == 'rect')1928 {1929 if(shape.getAttribute('rx') || shape.getAttribute('ry')){1930 shInfo.type = "rect";1931 shInfo.rx = parseFloat(shape.getAttribute('rx'))1932 shInfo.ry = parseFloat(shape.getAttribute('rx'))1933 }1934 shInfo.left = parseFloat(shape.getAttribute( 'x'));1935 shInfo.top = parseFloat(shape.getAttribute( 'y'));1936 shInfo.width = parseFloat(shape.getAttribute('width'));1937 shInfo.height = parseFloat(shape.getAttribute('height'));1938 }1939 else if (shape.tagName == 'ellipse' || shape.tagName == 'circle')1940 {1941 if(shape.tagName == 'circle'){1942 shInfo.width = parseFloat(shape.getAttribute('r'))*2;1943 shInfo.height = parseFloat(shape.getAttribute('r'))*2;1944 }else{1945 shInfo.width = parseFloat(shape.getAttribute('rx'))*2;1946 shInfo.height = parseFloat(shape.getAttribute('ry'))*2;1947 }1949 shInfo.left = parseFloat(shape.getAttribute('cx')) - (shInfo.width/2);1950 shInfo.top = parseFloat(shape.getAttribute('cy')) - (shInfo.height/2) ;1951 }1952 else if(shape.tagName == 'linearGradient') {1953 shInfo.left = (shape.getAttribute( 'x1'));1954 shInfo.top = parseFloat(shape.getAttribute( 'y1'));1955 shInfo.width = parseFloat(shape.getAttribute('x2'));1956 shInfo.height = parseFloat(shape.getAttribute('y2'));1958 }1959 else if(shape.tagName == 'stop') {1960 shInfo.fillColor = shape.getAttribute('stop-color');1961 shInfo.fillOpac = shape.getAttribute('stop-opacity');1962 shInfo.lineOpac = shape.getAttribute('offset');1963 var mystyle= shape.getAttribute('style');1964 if(mystyle!= null && mystyle.indexOf('<![CDATA[')>=0)1965 {1967 }1968 else1969 {1970 if(mystyle!= null){1971 var data;1972 var estilo=generateJSON(mystyle);1973 eval("data="+estilo);1974 (data["stop-color"])?shInfo.fillColor=data["stop-color"]:shInfo.fillColor;1975 (data["stop-opacity"])?shInfo.fillOpac=data["stop-opacity"]:shInfo.fillOpac;1976 document.getElementById("someinfo").value +=data["stop-color"]+' ';1977 }1979 }1980 }1981 else if (shape.tagName == 'line')1982 {1983 shInfo.left = parseFloat(shape.getAttribute('x1'));1984 shInfo.top = parseFloat(shape.getAttribute('y1'));1985 shInfo.width = parseFloat(shape.getAttribute('x2')) -shInfo.left;1986 shInfo.height = parseFloat(shape.getAttribute('y2')) -shInfo.top;1987 }1988 else if (shape.tagName == 'polyline')1989 {1990 shInfo.points = shape.getAttribute('points');1991 }1992 else if (shape.tagName == 'g')1993 {1994 shInfo.type = "group";1995 shInfo.left = parseFloat(shape.getAttribute( 'x'));1996 shInfo.top = parseFloat(shape.getAttribute( 'y'));1997 shInfo.width = parseFloat(shape.getAttribute('width'));1998 shInfo.height = parseFloat(shape.getAttribute('height'));1999 shInfo.fillColor = shape.getAttribute('fill')2001 }2002 else if (shape.tagName == 'path')2003 {2004 shInfo.points = shape.getAttribute('d');2005 //shInfo.transform = shape.getAttribute('transform');2007 //alert(shInfo.transform);2008 //document.forms[0].codebase.value=shape.getAttribute('d');2010 }2011 else2014 if (shape.tagName == 'image')2015 {2017 shInfo.left = parseFloat(shape.getAttribute( 'x'));2018 shInfo.top = parseFloat(shape.getAttribute( 'y'));2019 shInfo.width = parseFloat(shape.getAttribute('width'));2020 shInfo.height = parseFloat(shape.getAttribute('height'));2021 shInfo.fillOpac = parseFloat(shape.getAttribute('opacity'));2022 shInfo.href = shape.getAttribute('href');2024 }2025 if(shape.parentNode.tagName != 'svg'){2026 //shInfo.width = parseFloat(shape.getAttribute('width'));2027 //shInfo.height = parseFloat(shape.getAttribute('height'));2028 //shInfo.viewBox = parseFloat(shape.getAttribute('viewBox'));2029 shInfo.parent=shape.parentNode.getAttribute('id');2031 }2032 return shInfo;2033 }else{2034 //do nothing if its the tracker2035 }2039 };2040 SVGRenderer.prototype.info01 = function(shape)2041 {2043 var shInfo = {};2044 if(shape.id != "tracker"){2045 shInfo.id = shape.id.substr(6);2046 shInfo.type = shape.tagName;2047 if (shape.hasAttributeNS(null,'transform')) {2048 shInfo.transform = shape.getAttribute('transform');2049 }else{2050 shInfo.transform ='';2051 }2054 //if(shape.tagName !='image')2055 // {2056 shInfo.fillColor = shape.getAttribute('fill')2057 shInfo.lineColor = shape.getAttribute('stroke')2058 shInfo.fillOpac = parseFloat(shape.getAttribute('fill-opacity'))2059 shInfo.lineOpac = parseFloat(shape.getAttribute('stroke-opacity'))2060 shInfo.lineWidth = parseFloat(shape.getAttribute('stroke-width'))2061 // }2064 if (shape.tagName == 'rect')2065 {2066 if(shape.getAttribute('rx') || shape.getAttribute('ry')){2067 shInfo.type = "roundrect";2068 shInfo.rx = parseFloat(shape.getAttribute('rx'))2069 shInfo.ry = parseFloat(shape.getAttribute('rx'))2070 }2071 shInfo.left = parseFloat(shape.getAttribute( 'x'));2072 shInfo.top = parseFloat(shape.getAttribute( 'y'));2073 shInfo.width = parseFloat(shape.getAttribute('width'));2074 shInfo.height = parseFloat(shape.getAttribute('height'));2075 }2076 else if (shape.tagName == 'ellipse')2077 {2078 shInfo.width = parseFloat(shape.getAttribute('rx'))*2;2079 shInfo.height = parseFloat(shape.getAttribute('ry'))*2;2080 shInfo.left = parseFloat(shape.getAttribute('cx')) - (shInfo.width/2);2081 shInfo.top = parseFloat(shape.getAttribute('cy')) - (shInfo.height/2) ;2083 }2084 else if (shape.tagName == 'line')2085 {2086 shInfo.left = parseFloat(shape.getAttribute('x1'));2087 shInfo.top = parseFloat(shape.getAttribute('y1'));2088 shInfo.width = parseFloat(shape.getAttribute('x2')) -shInfo.left;2089 shInfo.height = parseFloat(shape.getAttribute('y2')) -shInfo.top;2090 }2091 else if (shape.tagName == 'polyline')2092 {2093 shInfo.points = shape.getAttribute('points');2094 }2095 else2097 if (shape.tagName == 'path')2098 {2099 shInfo.d = shape.getAttribute('d');2100 //shInfo.transform = shape.getAttribute('transform');2102 //alert(shInfo.transform);2103 //document.forms[0].codebase.value=shape.getAttribute('d');2105 }2106 else2108 if(shape.tagName == "text"){2110 shInfo.textFamily = shape.getAttribute('font-family')2111 shInfo.textSize = parseInt(shape.getAttribute('font-size'))2112 shInfo.top = parseFloat(shape.getAttribute('y'))2113 shInfo.left = parseFloat(shape.getAttribute('x'))2114 shInfo.text = shape.textContent2115 shInfo.lineWidth = parseFloat(shape.getAttribute('stroke-width'))2117 //shInfo.text = shape.nodparseFloatue;2118 }2119 else2121 if (shape.tagName == 'image')2122 {2124 shInfo.left = parseFloat(shape.getAttribute( 'x'));2125 shInfo.top = parseFloat(shape.getAttribute( 'y'));2126 shInfo.width = parseFloat(shape.getAttribute('width'));2127 shInfo.height = parseFloat(shape.getAttribute('height'));2128 shInfo.fillOpac = parseFloat(shape.getAttribute('opacity'));2129 shInfo.href = shape.getAttribute('href');2131 }2133 return shInfo;2134 }else{2135 //do nothing if its the tracker2136 }2139 }2145 SVGRenderer.prototype.transformShape = function(shape,data,transform)2146 {2147 var svgNamespace = 'http://www.w3.org/2000/svg';2148 var xlinkNS="http://www.w3.org/1999/xlink";2149 //2151 if(shape.tagName == 'rect')2152 {2153 var box = shape.getBBox();2154 var sdata=data.split(';');2156 //alert(data[0]);2157 shape.setAttributeNS(null,'x',parseFloat(sdata[0]));2158 shape.setAttributeNS(null,'y',parseFloat(sdata[1]));2159 shape.setAttributeNS(null, 'width', parseFloat(sdata[2]));2160 shape.setAttributeNS(null, 'height', parseFloat(sdata[3]));2161 var centerx=parseFloat(sdata[0])+parseFloat(box.width/2);2162 var centery=parseFloat(sdata[1])+parseFloat(box.height/2);2163 shape.setAttributeNS(null, 'transform','rotate('+parseFloat(sdata[4])+','+centerx+','+centery+')');2165 //shape.nodparseFloatue=data;2166 }2167 else2168 if(shape.tagName == 'text')2169 {2170 if(data.indexOf('<;>',0)==-1 )2171 {2172 shape.textContent = data;2173 }2174 else2175 {2176 var sdata=data.split('<;>'); //?????????2177 shape.textContent = sdata[0];2178 shape.setAttributeNS(null,'font-size',parseFloat(sdata[1]));2179 shape.setAttributeNS(null,'font-family',sdata[2]);2180 }2181 //shape.nodparseFloatue=data;2182 }2183 else2184 if (shape.tagName == 'polyline')2185 {2186 shape.setAttributeNS(null,'points',data);2187 }2188 else2189 if (shape.tagName == 'image')2190 {2191 //alert(data);2192 if(data.indexOf(';',0)==-1 )2193 {2194 shape.setAttributeNS(xlinkNS,'href',data);2195 }2196 else2197 {2198 var box = shape.getBBox();2199 var sdata=data.split(';');2200 shape.setAttributeNS(null,'x',parseFloat(sdata[0]));2201 shape.setAttributeNS(null,'y',parseFloat(sdata[1]));2202 shape.setAttributeNS(null, 'width', parseFloat(sdata[2]));2203 shape.setAttributeNS(null, 'height',parseFloat(sdata[3]));2204 var centerx=parseFloat(sdata[0])+parseFloat(box.width/2);2205 var centery=parseFloat(sdata[1])+parseFloat(box.height/2);2206 shape.setAttributeNS(null, 'transform',' rotate('+parseFloat(sdata[4])+','+centerx+','+centery+')');2209 }2211 }2212 else2213 if (shape.tagName == 'path')2214 {2215 if(data.indexOf(';',0)==-1 )2216 {2217 shape.setAttributeNS(null, 'd', data);2218 shape.setAttributeNS(null, 'transform', transform);2219 }2220 else2221 {2222 var box = shape.getBBox();2223 var sdata=data.split(';');2224 var centerx=parseFloat(sdata[0])+parseFloat(box.width/2);2225 var centery=parseFloat(sdata[1])+parseFloat(box.height/2);2226 shape.setAttributeNS(null, 'transform','scale('+parseFloat(sdata[2])+','+parseFloat(sdata[3])+')'+' rotate('+parseFloat(sdata[4])+','+centerx+','+centery+')'+' translate('+parseFloat(sdata[0])+','+parseFloat(sdata[1])+')');2229 }2230 }2233 }2234 SVGRenderer.prototype.editShape = function(shape,data)2235 {2236 if(shape.tagName == 'text'){2237 shape.textContent = data2238 }else2239 if (shape.tagName == 'polyline')2240 {2241 shape.setAttributeNS(null,'points',data);2242 }2243 else2245 if (shape.tagName == 'path')2246 {2247 shape.setAttributeNS(null, 'd', data);2249 }2251 }2252 SVGRenderer.prototype.editCommand = function(shape, cmd, value)2253 {2254 if (shape != null) {2255 if (cmd == 'fillcolor') {2256 if (value != '')2257 shape.setAttributeNS(null, 'fill', value);2258 else2259 shape.setAttributeNS(null, 'fill', 'none');2260 }2261 else if (cmd == 'linecolor') {2262 if (value != '')2263 shape.setAttributeNS(null, 'stroke', value);2264 else2265 shape.setAttributeNS(null, 'stroke', 'none');2266 }2267 else if (cmd == 'linewidth') {2268 shape.setAttributeNS(null, 'stroke-width', parseInt(value) + 'px');2269 }2270 else if (cmd == 'fillopacity') {2271 if(shape.tagName=='image')2272 {2273 shape.setAttributeNS(null, 'opacity', parseFloat(value));2274 }2275 else2276 {2277 shape.setAttributeNS(null, 'fill-opacity', parseFloat(value));2278 }2280 }2281 else if (cmd == 'lineopacity') {2283 shape.setAttributeNS(null, 'stroke-opacity', parseFloat(value));2285 }2287 }2288 }2291 SVGRenderer.prototype.queryCommand = function(shape, cmd)2292 {2293 var result = '';2295 if (shape != null) {2296 if (cmd == 'fillcolor') {2297 result = shape.getAttributeNS(null, 'fill');2298 if (result == 'none')2299 result = '';2300 }2301 else if (cmd == 'linecolor') {2302 result = shape.getAttributeNS(null, 'stroke');2303 if (result == 'none')2304 result = '';2305 }2306 else if (cmd == 'linewidth') {2307 result = shape.getAttributeNS(null, 'stroke');2308 if (result == 'none')2309 result = '';2310 else2311 result = shape.getAttributeNS(null, 'stroke-width');2312 }2313 else if (cmd == 'fillopacity') {2314 if(shape.tagName=='image')2315 {2316 shape.setAttributeNS(null, 'opacity', parseFloat(value));2317 }2318 else2319 {2320 shape.setAttributeNS(null, 'fill-opacity', parseFloat(value));2321 }2323 }2324 else if (cmd == 'lineopacity') {2326 shape.setAttributeNS(null, 'stroke-opacity', parseFloat(value));2328 }2330 }2332 return result;2333 }2335 SVGRenderer.prototype.getProperties = function(shape)2336 {2337 var result = '';2339 if (shape != null)2340 {2341 result = shape.getAttributeNS(null, 'fill');2342 if (result == 'none')2343 {2344 mefillColor.visible = 'hidden';2345 mefillColor.hex = '#000000';2346 filldraw=true;2347 setbe(1,'img_okfill');2348 }2349 else2350 {2351 //alert(mefillColor.hex+' '+result);2352 mefillColor.visible = 'visible';2353 mefillColor.hex = result;2354 var rgb=hex2rgb(result)2355 mefillColor.r=rgb[0];2356 mefillColor.g=rgb[1];2357 mefillColor.b=rgb[2];2358 filldraw=false;2359 setbe(1,'img_okfill');2361 }2363 result = shape.getAttributeNS(null, 'stroke');2364 if (result == 'none')2365 {2366 mestrokeColor.visible = 'hidden';2367 mestrokeColor.hex = '#000000';2368 mestrokeColor.width = 0;2369 strokedraw=true;2370 setbe(2,'img_okstroke');2372 }2373 else2374 {2375 mestrokeColor.visible = 'visible';2376 mestrokeColor.hex = result;2377 var rgb=hex2rgb(result)2378 mestrokeColor.r=rgb[0];2379 mestrokeColor.g=rgb[1];2380 mestrokeColor.b=rgb[2];2381 strokedraw=false;2382 setbe(2,'img_okstroke');2384 }2386 result = shape.getAttributeNS(null, 'stroke-width');2387 mestrokeColor.width = result;2389 result = shape.getAttributeNS(null, 'fill-opacity');2390 mefillColor.opacity = result;2392 result = shape.getAttributeNS(null, 'stroke-opacity');2393 mestrokeColor.opacity = result;2395 setProperties();2396 }2397 }2400 SVGRenderer.prototype.showMultiSelect = function(iniX,iniY) {2401 var tracker = document.getElementById('trackerMultiSelect');2402 if (tracker) {2403 this.remove(tracker);2404 }2406 var coord=this.editor.viewInputxy;2407 toX=parseFloat(coord[0]);2408 toY=parseFloat(coord[1]);2410 tracker = document.createElementNS(svgNamespace, 'rect');2412 tracker.setAttributeNS(null, 'x', iniX);2413 tracker.setAttributeNS(null, 'y', iniY);2414 tracker.setAttributeNS(null, 'width', toX);2415 tracker.setAttributeNS(null, 'height', toY);2416 tracker.setAttributeNS(null, 'fill', '#ffffff');2417 tracker.setAttributeNS(null, 'stroke', 'green');2418 tracker.setAttributeNS(null, 'stroke-width', widthLine);2420 this.svgRoot.appendChild(tracker);2421 }2424 function mouseCoord()2425 {2426 var coord=this.editor.viewInputxy;2427 coord[0]=parseFloat(coord[0]);2428 coord[1]=parseFloat(coord[1]);2429 return coord2430 }2431 /*2432 function nodeHit(node)2433 {2434 node.addEventListener("mousemove", function(event) {nodeMove(node)}, false);2436 }2438 function nodeUp(node)2439 {2440 //node.stopObserving("mousemove");2441 }2443 function nodeMove(node)2444 {2445 var mypath=$('control_codebase').value;2446 var x= $('option_path_x').value;2447 var y= $('option_path_y').value;2448 var precoord=x+','+y;2449 var coord=mouseCoord();2450 node.setAttributeNS(null, 'x', coord[0]-2);2451 node.setAttributeNS(null, 'y', coord[1]-2);2453 $('option_path_x').value=parseFloat(node.getAttributeNS(null,'x'))+2;2454 $('option_path_y').value=parseFloat(node.getAttributeNS(null,'y'))+2;2456 var cadx= $('option_path_x').value;2457 var cady= $('option_path_y').value;2458 var coord=cadx+','+cady;2459 var cad1=new RegExp(precoord,"g");2462 var result=mypath.replace(cad1, coord);2465 $('control_codebase').value=result;2467 $('someinfo').value=precoord;2468 setShape();2472 }2473 */2475 var memoNode=null;2476 var memoPrevControl=new Array();2477 var memoNextControl=new Array();2479 SVGRenderer.prototype.nodeMove = function(newx,newy) {2480 var mypath=$('control_codebase').value;2481 var x= $('option_path_x').value;2482 var y= $('option_path_y').value;2483 var precoord=x+','+y;2485 $('option_path_x').value=newx;2486 $('option_path_y').value=newy;2488 var cadx= newx;2489 var cady= newy;2491 var coord=cadx+','+cady;2492 var cad1=new RegExp(precoord,"g");2495 var result=mypath.replace(cad1, coord);2498 $('control_codebase').value=result;2500 $('someinfo').value=precoord;2501 setShape();2503 }2505 function drawNodeControl(svg,numId){2507 var svgNamespace = 'http://www.w3.org/2000/svg';2508 var color1='#0066ff';2509 // if(parseInt(memoNode.id)==a){2511 var pointprev=memoPrevControl[numId].split(',');2513 var controlNode1 = document.createElementNS(svgNamespace, 'rect');2514 controlNode1.setAttributeNS(null, 'x', pointprev[0]-widthLine*2);2515 controlNode1.setAttributeNS(null, 'y', pointprev[1]-widthLine*2);2517 controlNode1.setAttributeNS(null, 'width', widthLine*4);2518 controlNode1.setAttributeNS(null, 'height', widthLine*4);2519 controlNode1.setAttributeNS(null, 'fill', color1);2520 controlNode1.setAttributeNS(null, 'stroke', '#000000');2521 controlNode1.setAttributeNS(null, 'stroke-width', '0');2522 controlNode1.setAttributeNS(null, 'id', 'controlNode1');2523 controlNode1.addEventListener("mousedown", function(event) {if(memoNode != null){memoNode.setAttributeNS(null, 'stroke-width', 0 );} memoNode=this; this.setAttributeNS(null, 'fill-color', '#ffff00' );this.setAttributeNS(null, 'stroke-width', 1 );$('option_path_num').value=this.getAttributeNS(null,'id'); $('option_path_x').value=parseFloat(this.getAttributeNS(null,'x'))+2; $('option_path_y').value=parseFloat(this.getAttributeNS(null,'y'))+2; }, false);2524 svg.appendChild(controlNode1);2526 var pointnext=memoNextControl[numId].split(',');2529 var controlNode2 = document.createElementNS(svgNamespace, 'rect');2530 controlNode2.setAttributeNS(null, 'x', pointnext[0]-widthLine*2);2531 controlNode2.setAttributeNS(null, 'y', pointnext[1]-widthLine*2);2533 controlNode2.setAttributeNS(null, 'width', widthLine*4);2534 controlNode2.setAttributeNS(null, 'height', widthLine*4);2535 controlNode2.setAttributeNS(null, 'fill', color1);2536 controlNode2.setAttributeNS(null, 'stroke', '#000000');2537 controlNode2.setAttributeNS(null, 'stroke-width', '0');2538 controlNode2.setAttributeNS(null, 'id', 'controlNode1');2539 controlNode2.addEventListener("mousedown", function(event) {if(memoNode != null){memoNode.setAttributeNS(null, 'stroke-width', 0 );} memoNode=this; this.setAttributeNS(null, 'fill-color', '#ffff00' );this.setAttributeNS(null, 'stroke-width', 1 );$('option_path_num').value=this.getAttributeNS(null,'id'); $('option_path_x').value=parseFloat(this.getAttributeNS(null,'x'))+2; $('option_path_y').value=parseFloat(this.getAttributeNS(null,'y'))+2; }, false);2540 svg.appendChild(controlNode2);2542 //}2545 }2547 SVGRenderer.prototype.showNodesCurve = function(path,controlNodeNum){2548 memoNextControl=new Array();2549 memoPrevControl=new Array();2550 var widthLine=this.editor.unit;2551 var svgNamespace = 'http://www.w3.org/2000/svg';2552 // tracker = document.createElementNS(svgNamespace, 'g');2553 var svg = this.container.ownerDocument.createElementNS(svgNamespace, 'g');2554 svg.setAttributeNS(null, 'id', 'editNodesPath');2556 /* var group = document.getElementById('editNodesPath');2557 if (group)2558 {2559 this.remove(group);2560 }2561 */2563 var points=path.split(' ');2564 var chain='';2565 var segment=' ';2566 prevControl=' ';2567 nextControl=' ';2568 nodePoint=' ';2569 var init=points[0].split('M');2570 var allcoords=init[1].split(' ');2571 var point=allcoords[0].split(',');2572 var rect1 = document.createElementNS(svgNamespace, 'rect');2573 rect1.setAttributeNS(null, 'x', point[0]-widthLine*2);2574 rect1.setAttributeNS(null, 'y', point[1]-widthLine*2);2576 rect1.setAttributeNS(null, 'width', widthLine*4);2577 rect1.setAttributeNS(null, 'height', widthLine*4);2578 rect1.setAttributeNS(null, 'fill', '#ff7700');2579 rect1.setAttributeNS(null, 'stroke', '#000000');2580 rect1.setAttributeNS(null, 'stroke-width', '0');2581 rect1.setAttributeNS(null, 'id', '0');2582 //rect1.addEventListener("mouseover", function(event) {this.setAttributeNS(null, 'stroke-width', 1 ); }, false);2583 rect1.addEventListener("mousedown", function(event) {if(memoNode != null){memoNode.setAttributeNS(null, 'stroke-width', 0 );} memoNode=this; this.setAttributeNS(null, 'fill-color', '#ffff00' );this.setAttributeNS(null, 'stroke-width', 1 );$('option_path_num').value=this.getAttributeNS(null,'id'); $('option_path_x').value=parseFloat(this.getAttributeNS(null,'x'))+2; $('option_path_y').value=parseFloat(this.getAttributeNS(null,'y'))+2; }, false);2585 //rect1.addEventListener("mouseout", function(event) {this.setAttributeNS(null, 'stroke-width', 0 );}, false);2587 svg.appendChild(rect1);2589 if(controlNodeNum==0){ var color='#ffff00';}2590 if(controlNodeNum==1){var color='#00ffff';}2591 if(controlNodeNum==2){var color='#00cc00';}2592 var color1='#ffff00';2594 var numpoints=points.length-1;2595 var recalls='';2596 var re = /^[-]?\d*\.?\d*$/;2597 for(var a=1;a<=numpoints;a++)2598 {2600 var ini=points[a].substring(0,1);2601 if (!ini.match(re))2602 {2603 var end=points[a].substring(1);2604 color='#0000ff';2605 if(ini=='L' || ini=='M')2606 {2607 color='#ffff00';2608 }2610 if(ini=='C')2611 {2612 recall=a+2;2613 //color='#ffff00';2614 }2616 }else2617 {2618 var end=points[a];2619 var ini='';2620 color='#ff00ff';2621 if(a==recall)2622 {2623 color='#ffff00';2624 }2625 }2628 //segment=points[a].split(',');2629 prevControl=segment[0]+' ';2630 nextControl=segment[1]+' ';2631 nodePoint=segment[2]+' ';2632 memoPrevControl[a]=prevControl;2633 memoNextControl[a]=nextControl;2634 if(controlNodeNum==0){chain+=prevControl; var point=prevControl.split(',');}2635 if(controlNodeNum==1){chain+=nextControl; var point=nextControl.split(',');}2636 if(controlNodeNum==2){chain+=nodePoint; var point=nodePoint.split(',');}2637 if(controlNodeNum==3){chain+=nodePoint; var point=nodePoint.split(',');}2640 //if (isNaN(valnum))2642 //if(ini=='C'){color='#ff00ff';}2644 var point=end.split(',');2645 if(memoNode!=null){2646 }2647 var rect1 = document.createElementNS(svgNamespace, 'rect');2648 rect1.setAttributeNS(null, 'x', point[0]-widthLine*2);2649 rect1.setAttributeNS(null, 'y', point[1]-widthLine*2);2651 rect1.setAttributeNS(null, 'width', widthLine*4);2652 rect1.setAttributeNS(null, 'height', widthLine*4);2653 rect1.setAttributeNS(null, 'fill', color);2654 rect1.setAttributeNS(null, 'stroke', '#000000');2655 rect1.setAttributeNS(null, 'stroke-width', '0');2656 rect1.setAttributeNS(null, 'id', ''+a);2657 rect1.addEventListener("mousedown", function(event) {if(memoNode != null){memoNode.setAttributeNS(null, 'stroke-width', 0 );}drawNodeControl(svg,this.getAttributeNS(null,'id')); memoNode=this; this.setAttributeNS(null, 'fill-color', '#ffff00' );this.setAttributeNS(null, 'stroke-width', 1 );$('option_path_num').value=this.getAttributeNS(null,'id'); $('option_path_x').value=parseFloat(this.getAttributeNS(null,'x'))+2; $('option_path_y').value=parseFloat(this.getAttributeNS(null,'y'))+2; }, false);2659 //rect1.addEventListener("mouseover", function(event) {this.setAttributeNS(null, 'stroke-width', 1 );$('option_path_num').value=this.getAttributeNS(null,'id'); $('option_path_x').value=parseFloat(this.getAttributeNS(null,'x'))+2; $('option_path_y').value=parseFloat(this.getAttributeNS(null,'y'))+2; }, false);2660 // rect1.addEventListener("mousedown", function(event) {nodeHit(this);if(memoNode != null){memoNode.setAttributeNS(null, 'stroke-width', 0 );} memoNode=this; this.setAttributeNS(null, 'fill-color', '#ffff00' );this.setAttributeNS(null, 'stroke-width', 1 );$('option_path_num').value=this.getAttributeNS(null,'id'); $('option_path_x').value=parseFloat(this.getAttributeNS(null,'x'))+2; $('option_path_y').value=parseFloat(this.getAttributeNS(null,'y'))+2; document.forms[0].option_path_x.focus(); }, false);2661 //rect1.addEventListener("mousedown", function(event) { if(memoNode != null){memoNode.setAttributeNS(null, 'stroke-width', 0 );} nodeHit(this); memoNode=this;this.setAttributeNS(null, 'stroke-width', 1 );$('option_path_num').value=this.getAttributeNS(null,'id'); $('option_path_x').value=parseFloat(this.getAttributeNS(null,'x'))+2; $('option_path_y').value=parseFloat(this.getAttributeNS(null,'y'))+2; }, false);2662 //rect1.addEventListener("mousedown", function(event) {if(memoNode != null){memoNode.setAttributeNS(null, 'stroke-width', 0 );} addControlPoints(segment[0],segment[1],svg); memoNode=this; this.setAttributeNS(null, 'fillColor', '#ffff00' );this.setAttributeNS(null, 'stroke-width', 1 );$('option_path_num').value=this.getAttributeNS(null,'id'); $('option_path_x').value=parseFloat(this.getAttributeNS(null,'x'))+2; $('option_path_y').value=parseFloat(this.getAttributeNS(null,'y'))+2; }, false);2663 //rect1.addEventListener("mouseup", function(event) {nodeUp(this); }, false);2664 //rect1.addEventListener("mouseover", function(event) {this.setAttributeNS(null, 'fillColor', '#ffcc00' ); }, false);2665 //rect1.addEventListener("mouseout", function(event) {this.setAttributeNS(null, 'fillColor', '#00cc00' ); }, false);2668 //rect1.addEventListener("mouseout", function(event) {this.setAttributeNS(null, 'stroke-width', 0 ); }, false);2670 svg.appendChild(rect1);2672 }2673 var info='';2675 if(controlNodeNum==0){info='prev Control'}2676 if(controlNodeNum==1){info='next Control'}2677 if(controlNodeNum==2){info='points node'}2678 // $('someinfo').value=numpoints+ ' '+info+':'+ chain;2679 $('someinfo').value='Crtl+Arrow to move';2680 //return chain;2683 //this.svgRoot.appendChild(svg);2685 return svg;2687 };2689 SVGRenderer.prototype.showNodesCurve1 = function(path,controlNodeNum){2690 memoNextControl=new Array();2691 memoPrevControl=new Array();2692 var svgNamespace = 'http://www.w3.org/2000/svg';2693 // tracker = document.createElementNS(svgNamespace, 'g');2694 var svg = this.container.ownerDocument.createElementNS(svgNamespace, 'g');2695 svg.setAttributeNS(null, 'id', 'editNodesPath');2697 /* var group = document.getElementById('editNodesPath');2698 if (group)2699 {2700 this.remove(group);2701 }2702 */2704 var points=path.split('C');2705 var chain='';2706 var segment=' ';2707 prevControl=' ';2708 nextControl=' ';2709 nodePoint=' ';2710 var init=points[0].split('M');2711 var allcoords=init[1].split(' ');2712 var point=allcoords[0].split(',');2713 var rect1 = document.createElementNS(svgNamespace, 'rect');2714 rect1.setAttributeNS(null, 'x', point[0]-2);2715 rect1.setAttributeNS(null, 'y', point[1]-2);2717 rect1.setAttributeNS(null, 'width', 4);2718 rect1.setAttributeNS(null, 'height', 4);2719 rect1.setAttributeNS(null, 'fill', '#ff7700');2720 rect1.setAttributeNS(null, 'stroke', '#000000');2721 rect1.setAttributeNS(null, 'stroke-width', '0');2722 rect1.setAttributeNS(null, 'id', '0');2723 //rect1.addEventListener("mouseover", function(event) {this.setAttributeNS(null, 'stroke-width', 1 ); }, false);2724 rect1.addEventListener("mousedown", function(event) {if(memoNode != null){memoNode.setAttributeNS(null, 'stroke-width', 0 );} memoNode=this; this.setAttributeNS(null, 'fill-color', '#ffff00' );this.setAttributeNS(null, 'stroke-width', 1 );$('option_path_num').value=this.getAttributeNS(null,'id'); $('option_path_x').value=parseFloat(this.getAttributeNS(null,'x'))+2; $('option_path_y').value=parseFloat(this.getAttributeNS(null,'y'))+2; }, false);2726 //rect1.addEventListener("mouseout", function(event) {this.setAttributeNS(null, 'stroke-width', 0 );}, false);2728 svg.appendChild(rect1);2730 if(controlNodeNum==0){ var color='#ffff00';}2731 if(controlNodeNum==1){var color='#00ffff';}2732 if(controlNodeNum==2){var color='#00cc00';}2733 var color1='#ffff00';2735 var numpoints=points.length-1;2736 for(var a=1;a<=numpoints;a++)2737 {2741 segment=points[a].split(' ');2742 prevControl=segment[0]+' ';2743 nextControl=segment[1]+' ';2744 nodePoint=segment[2]+' ';2745 memoPrevControl[a]=prevControl;2746 memoNextControl[a]=nextControl;2747 if(controlNodeNum==0){chain+=prevControl; var point=prevControl.split(',');}2748 if(controlNodeNum==1){chain+=nextControl; var point=nextControl.split(',');}2749 if(controlNodeNum==2){chain+=nodePoint; var point=nodePoint.split(',');}2750 if(controlNodeNum==3){chain+=nodePoint; var point=nodePoint.split(',');}2752 if(memoNode!=null){2753 }2754 var rect1 = document.createElementNS(svgNamespace, 'rect');2755 rect1.setAttributeNS(null, 'x', point[0]-2);2756 rect1.setAttributeNS(null, 'y', point[1]-2);2758 rect1.setAttributeNS(null, 'width', 4);2759 rect1.setAttributeNS(null, 'height', 4);2760 rect1.setAttributeNS(null, 'fill', color);2761 rect1.setAttributeNS(null, 'stroke', '#000000');2762 rect1.setAttributeNS(null, 'stroke-width', '0');2763 rect1.setAttributeNS(null, 'id', ''+a);2764 rect1.addEventListener("mousedown", function(event) {if(memoNode != null){memoNode.setAttributeNS(null, 'stroke-width', 0 );}drawNodeControl(svg,this.getAttributeNS(null,'id')); memoNode=this; this.setAttributeNS(null, 'fill-color', '#ffff00' );this.setAttributeNS(null, 'stroke-width', 1 );$('option_path_num').value=this.getAttributeNS(null,'id'); $('option_path_x').value=parseFloat(this.getAttributeNS(null,'x'))+2; $('option_path_y').value=parseFloat(this.getAttributeNS(null,'y'))+2; }, false);2766 //rect1.addEventListener("mouseover", function(event) {this.setAttributeNS(null, 'stroke-width', 1 );$('option_path_num').value=this.getAttributeNS(null,'id'); $('option_path_x').value=parseFloat(this.getAttributeNS(null,'x'))+2; $('option_path_y').value=parseFloat(this.getAttributeNS(null,'y'))+2; }, false);2767 // rect1.addEventListener("mousedown", function(event) {nodeHit(this);if(memoNode != null){memoNode.setAttributeNS(null, 'stroke-width', 0 );} memoNode=this; this.setAttributeNS(null, 'fill-color', '#ffff00' );this.setAttributeNS(null, 'stroke-width', 1 );$('option_path_num').value=this.getAttributeNS(null,'id'); $('option_path_x').value=parseFloat(this.getAttributeNS(null,'x'))+2; $('option_path_y').value=parseFloat(this.getAttributeNS(null,'y'))+2; document.forms[0].option_path_x.focus(); }, false);2768 //rect1.addEventListener("mousedown", function(event) { if(memoNode != null){memoNode.setAttributeNS(null, 'stroke-width', 0 );} nodeHit(this); memoNode=this;this.setAttributeNS(null, 'stroke-width', 1 );$('option_path_num').value=this.getAttributeNS(null,'id'); $('option_path_x').value=parseFloat(this.getAttributeNS(null,'x'))+2; $('option_path_y').value=parseFloat(this.getAttributeNS(null,'y'))+2; }, false);2769 //rect1.addEventListener("mousedown", function(event) {if(memoNode != null){memoNode.setAttributeNS(null, 'stroke-width', 0 );} addControlPoints(segment[0],segment[1],svg); memoNode=this; this.setAttributeNS(null, 'fillColor', '#ffff00' );this.setAttributeNS(null, 'stroke-width', 1 );$('option_path_num').value=this.getAttributeNS(null,'id'); $('option_path_x').value=parseFloat(this.getAttributeNS(null,'x'))+2; $('option_path_y').value=parseFloat(this.getAttributeNS(null,'y'))+2; }, false);2770 //rect1.addEventListener("mouseup", function(event) {nodeUp(this); }, false);2771 //rect1.addEventListener("mouseover", function(event) {this.setAttributeNS(null, 'fillColor', '#ffcc00' ); }, false);2772 //rect1.addEventListener("mouseout", function(event) {this.setAttributeNS(null, 'fillColor', '#00cc00' ); }, false);2775 //rect1.addEventListener("mouseout", function(event) {this.setAttributeNS(null, 'stroke-width', 0 ); }, false);2777 svg.appendChild(rect1);2779 }2780 var info='';2782 if(controlNodeNum==0){info='prev Control'}2783 if(controlNodeNum==1){info='next Control'}2784 if(controlNodeNum==2){info='points node'}2785 // $('someinfo').value=numpoints+ ' '+info+':'+ chain;2786 $('someinfo').value='Crtl+Arrow to move';2787 //return chain;2790 //this.svgRoot.appendChild(svg);2792 return svg;2794 };2795 SVGRenderer.prototype.showTracker = function(shape,pathsEdit) {2797 var box = shape.getBBox();2798 var matrix = shape.getScreenCTM();2799 var trshape= shape.getAttributeNS(null, 'transform');2800 var shap=1;2801 var T = shape.getCTM();2802 //a,b,c,d,e,f2804 var widthLine=this.editor.unit;2808 //var thisTransform = { sx: s[0], r: shape.vRotate, t: shape.vTranslate };2809 //if (currentTransform != null) alert(currentTransform.t);2811 if (shape.tagName == 'rect') {2813 $('option_rect_rot').value= T.b* (Math.PI * 2 / 360);2814 $('option_rect_trx').value= box.x;2815 $('option_rect_try').value= box.y;2816 $('option_rect_sclx').value= box.width;2817 $('option_rect_scly').value= box.height;2819 }2821 if (shape.tagName == 'image'){2822 $('option_img_trx').value= box.x;2823 $('option_img_try').value= box.y;2824 $('option_img_sclx').value= box.width;2825 $('option_img_scly').value= box.height;2826 $('option_img_rot').value= T.b* (Math.PI * 2 / 360);2827 }2828 if (shape.tagName == 'text'){2829 //$('option_text_trx').value= box.x;2830 //$('option_text_try').value= box.y;2831 $('option_text_size').value= box.height;2832 /*$('option_text_sclx').value= box.width;2833 $('option_text_scly').value= box.height;2834 $('option_text_rot').value= T.b* (Math.PI * 2 / 360);2835 */2836 }2837 if (shape.tagName == 'line'){2838 /*2839 $('option_line_trx').value= box.x;2840 $('option_line_try').value= box.y;2841 */2842 }2843 if (shape.tagName == 'ellipse'){2844 /*$('option_ellipse_trx').value= putx;2845 $('option_ellipse_try').value= puty;2846 $('option_ellipse_sclx').value= box.width;2847 $('option_ellipse_scly').value= box.height;2848 $('option_ellipse_rot').value= T.b* (Math.PI * 2 / 360);2849 */2850 }2854 /* if (shape.getAttributeNS(null, 'transform') ) {2857 shap=2; }else{2858 }*/2859 var tracker = document.getElementById('tracker');2860 if (tracker) {2861 this.remove(tracker);2862 }2864 var svgNamespace = 'http://www.w3.org/2000/svg';2866 tracker = document.createElementNS(svgNamespace, 'g');2867 tracker.setAttributeNS(null, 'id', 'tracker');2869 var controlPoints=null;2870 if (shape.tagName == 'path') { shap=2;2872 /* $('option_path_trx').value= box.x;2873 $('option_path_try').value= box.y;2874 $('option_path_sclx').value= T.a;2875 $('option_path_scly').value= T.d;2876 $('option_path_rot').value= T.b* (Math.PI * 2 / 360);2877 */2878 var path=shape.getAttributeNS(null, 'd');2879 $('control_codebase').value=path;2881 //controlPoints=this.showNodesCurve(path,0);2882 //controlPoints=this.showNodesCurve(path,1);2883 controlPoints=this.showNodesCurve(path,2);2886 /* controlPoints=this.showNodesCurve(path,1);2888 tracker.appendChild(controlPoints);2890 controlPoints=this.showNodesCurve(path,0);2892 tracker.appendChild(controlPoints);2893 */2894 }2896 var svg = this.container.ownerDocument.createElementNS(svgNamespace, 'g');2897 svg.setAttributeNS(null, 'id', 'transformSquares');2900 //var rect = document.createElementNS(svgNamespace, 'rect');2901 var border = document.createElementNS(svgNamespace, 'path');2903 var trshape='translate (0,0) rotate(0) translate(0,0) ';2904 var trshape_split=trshape.split(') ');2906 // get_between (trshape, s1, s2) ;2907 if(shape.getAttributeNS(null, 'transform')){2908 var trshape=shape.getAttributeNS(null, 'transform') ;2909 //var spl=trshape.replace(', ',' ');2910 //var spl1=spl.replace(')',' ');2911 var trshape_split=trshape.split(') ');2914 }2916 var corners = [];2917 var point = createPoint(box.x, box.y, box.width, box.height);2918 //point = {x:box.x, y:box.y, width: box.width, height:box.height};2919 //point = createPoint(box.x, box.y, box.width, box.height);2920 //12921 corners.push( createPoint(box.x + box.width, box.y, box.width, box.height) );2922 point.x = box.x + box.width;2923 point.y = box.y;2924 //22925 corners.push( createPoint(box.x + box.width, box.y + box.height, box.width, box.height) );2926 point.x = box.x + box.width;2927 point.y = box.y + box.height;2928 //32929 //corners.push( point.matrixTransform(matrix) );2930 corners.push( createPoint(box.x , box.y + box.height, box.width, box.height) );2931 point.x = box.x;2932 point.y = box.y + box.height;2933 //42934 corners.push( createPoint(box.x + box.width, box.y, box.width, box.height) );2936 var max = createPoint(corners[0].x, corners[0].y);2937 var min = createPoint(corners[0].x, corners[0].y);2939 // identify the new corner coordinates of the2940 // fully transformed bounding box2941 for (var i = 1; i < corners.length; i++) {2942 var x = corners[i].x;2943 var y = corners[i].y;2944 if (x < min.x) {2945 min.x = x;2946 }2947 else if (x > max.x) {2948 max.x = x;2949 }2950 if (y < min.y) {2951 min.y = y;2952 }2953 else if (y > max.y) {2954 max.y = y;2955 }2956 }2959 border.setAttributeNS(null, 'd', "M"+(min.x-(widthLine*10))+","+ (min.y-(widthLine*10))+' h'+(box.width+(widthLine*20))+','+(0)+' v'+(0)+','+(box.height+(widthLine*20))+' h'+(-box.width-(widthLine*20))+','+(0)+' z M'+(box.x+box.width+(widthLine*10))+","+ (box.y+(box.height/2)+' h'+(widthLine*25)+',0 '));2962 border.setAttributeNS(null, 'fill', 'none');2963 border.setAttributeNS(null, 'stroke', '#cccccc');2964 border.setAttributeNS(null, 'stroke-width', widthLine);2966 // createRect(min.x, min.y, max.x - min.x, max.y - min.y);2968 var circle1 = document.createElementNS(svgNamespace, 'ellipse');2969 circle1.setAttributeNS(null, 'cx', (box.x + box.width+(widthLine*40)) + 'px');2970 circle1.setAttributeNS(null, 'cy', (box.y + box.height / 2) + 'px');2971 circle1.setAttributeNS(null, 'rx', (widthLine*5) + 'px');2972 circle1.setAttributeNS(null, 'ry', (widthLine*5) + 'px');2973 circle1.setAttributeNS(null, 'fill', '#ffffff');2974 circle1.setAttributeNS(null, 'stroke', 'green');2975 circle1.setAttributeNS(null, 'stroke-width', widthLine);2977 var circleCenter = document.createElementNS(svgNamespace, 'ellipse');2978 circleCenter.setAttributeNS(null, 'cx', (box.x + (box.width/2)) + 'px');2979 circleCenter.setAttributeNS(null, 'cy', (box.y + (box.height /2)) + 'px');2980 circleCenter.setAttributeNS(null, 'rx', (widthLine*10) + 'px');2981 circleCenter.setAttributeNS(null, 'ry', (widthLine*10) + 'px');2982 circleCenter.setAttributeNS(null, 'fill', '#ffffff');2983 circleCenter.setAttributeNS(null, 'stroke', 'green');2984 circleCenter.setAttributeNS(null, 'stroke-width', widthLine);2986 var rect1 = document.createElementNS(svgNamespace, 'rect');2987 rect1.setAttributeNS(null, 'width', widthLine*10);2988 rect1.setAttributeNS(null, 'height', widthLine*10);2989 rect1.setAttributeNS(null, 'fill', '#ffffff');2990 rect1.setAttributeNS(null, 'stroke', 'green');2991 rect1.setAttributeNS(null, 'stroke-width', widthLine);2993 var rect2 = document.createElementNS(svgNamespace, 'rect');2994 rect2.setAttributeNS(null, 'width', widthLine*10);2995 rect2.setAttributeNS(null, 'height', widthLine*10);2996 rect2.setAttributeNS(null, 'fill', '#ffffff');2997 rect2.setAttributeNS(null, 'stroke', 'green');2998 rect2.setAttributeNS(null, 'stroke-width', widthLine);3000 var rect3 = document.createElementNS(svgNamespace, 'rect');3001 rect3.setAttributeNS(null, 'width', widthLine*10);3002 rect3.setAttributeNS(null, 'height', widthLine*10);3003 rect3.setAttributeNS(null, 'fill', '#ffffff');3004 rect3.setAttributeNS(null, 'stroke', 'green');3005 rect3.setAttributeNS(null, 'stroke-width', widthLine);3007 var rect4 = document.createElementNS(svgNamespace, 'rect');3008 rect4.setAttributeNS(null, 'width', widthLine*10);3009 rect4.setAttributeNS(null, 'height', widthLine*10);3010 rect4.setAttributeNS(null, 'fill', '#ffffff');3011 rect4.setAttributeNS(null, 'stroke', 'green');3012 rect4.setAttributeNS(null, 'stroke-width', widthLine);3014 var rectmid12 = document.createElementNS(svgNamespace, 'rect');3015 rectmid12.setAttributeNS(null, 'width', widthLine*10);3016 rectmid12.setAttributeNS(null, 'height', widthLine*10);3017 rectmid12.setAttributeNS(null, 'fill', '#ffffff');3018 rectmid12.setAttributeNS(null, 'stroke', 'green');3019 rectmid12.setAttributeNS(null, 'stroke-width', widthLine);3021 var rectmid23 = document.createElementNS(svgNamespace, 'rect');3022 rectmid23.setAttributeNS(null, 'width', widthLine*10);3023 rectmid23.setAttributeNS(null, 'height', widthLine*10);3024 rectmid23.setAttributeNS(null, 'fill', '#ffffff');3025 rectmid23.setAttributeNS(null, 'stroke', 'green');3026 rectmid23.setAttributeNS(null, 'stroke-width', widthLine);3028 var rectmid34 = document.createElementNS(svgNamespace, 'rect');3029 rectmid34.setAttributeNS(null, 'width', widthLine*10);3030 rectmid34.setAttributeNS(null, 'height', widthLine*10);3031 rectmid34.setAttributeNS(null, 'fill', '#ffffff');3032 rectmid34.setAttributeNS(null, 'stroke', 'green');3033 rectmid34.setAttributeNS(null, 'stroke-width', widthLine);3035 var rectmid41 = document.createElementNS(svgNamespace, 'rect');3036 rectmid41.setAttributeNS(null, 'width', widthLine*10);3037 rectmid41.setAttributeNS(null, 'height', widthLine*10);3038 rectmid41.setAttributeNS(null, 'fill', '#ffffff');3039 rectmid41.setAttributeNS(null, 'stroke', 'green');3040 rectmid41.setAttributeNS(null, 'stroke-width', widthLine);3041 // rect.setAttributeNS(null, 'x', box.x - widthLine*10);3042 // rect.setAttributeNS(null, 'y', box.y - widthLine*10);3044 rect1.setAttributeNS(null, 'x', box.x - widthLine*15);3045 rect1.setAttributeNS(null, 'y', box.y - widthLine*15);3048 rect2.setAttributeNS(null, 'x', box.x + box.width +widthLine*5 );3049 rect2.setAttributeNS(null, 'y', box.y - widthLine*15);3051 rect3.setAttributeNS(null, 'x', box.x + box.width + widthLine*5 );3052 rect3.setAttributeNS(null, 'y', box.y + box.height + widthLine*5);3054 rect4.setAttributeNS(null, 'x', box.x - widthLine*15 );3055 rect4.setAttributeNS(null, 'y', box.y + box.height + widthLine*5);3059 rectmid12.setAttributeNS(null, 'x', box.x + (box.width/2) - widthLine*5);3060 rectmid12.setAttributeNS(null, 'y', box.y - widthLine*15);3062 rectmid23.setAttributeNS(null, 'x', box.x + box.width + widthLine*5 );3063 rectmid23.setAttributeNS(null, 'y', box.y + (box.height/2) - widthLine*5);3065 rectmid34.setAttributeNS(null, 'x', box.x + (box.width/2) - widthLine*5 );3066 rectmid34.setAttributeNS(null, 'y', box.y + box.height + widthLine*5);3068 rectmid41.setAttributeNS(null, 'x', box.x - widthLine*15 );3069 rectmid41.setAttributeNS(null, 'y', box.y + (box.height/2) - widthLine*5);3071 svg.appendChild(border);3072 var colorin="#ff0000";3073 var colorout="#ffffff"3075 circle1.addEventListener("mouseover", function(event) {circle1.setAttributeNS(null, 'cursor', 's-resize'); circle1.setAttributeNS(null, 'fill', colorin ); typeTransform='Rotate'; scaleType='nw'; }, false);3076 circle1.addEventListener("mouseout", function(event) {circle1.setAttributeNS(null, 'cursor', 'default'); circle1.setAttributeNS(null, 'fill', colorout ); typeTransform='Rotate'; }, false); //typeTransform='rotate'3077 circleCenter.addEventListener("mouseover", function(event) {circleCenter.setAttributeNS(null, 'cursor', 'move'); circleCenter.setAttributeNS(null, 'fill', colorin ); typeTransform='spìnCenter'; scaleType='nw'; }, false);3078 circleCenter.addEventListener("mouseout", function(event) {circleCenter.setAttributeNS(null, 'cursor', 'default'); circleCenter.setAttributeNS(null, 'fill', colorout ); typeTransform=''; }, false); //typeTransform='rotate'3081 rect1.addEventListener("mouseover", function(event) {rect1.setAttributeNS(null, 'cursor', 'nw-resize'); rect1.setAttributeNS(null, 'fill', colorin ); typeTransform='Scale'; scaleType='nw';}, false);3082 rect1.addEventListener("mouseout", function(event) {rect1.setAttributeNS(null, 'cursor', 'default'); rect1.setAttributeNS(null, 'fill', colorout ); typeTransform='Scale'; }, false); //typeTransform='rotate'3084 rect2.addEventListener("mouseover", function(event) {rect2.setAttributeNS(null, 'cursor', 'ne-resize'); rect2.setAttributeNS(null, 'fill', colorin ); typeTransform='Scale'; scaleType='ne';}, false);3085 rect2.addEventListener("mouseout", function(event) {rect2.setAttributeNS(null, 'cursor', 'default'); rect2.setAttributeNS(null, 'fill', colorout ); typeTransform='Scale'; }, false);3087 rect3.addEventListener("mouseover", function(event) {rect3.setAttributeNS(null, 'cursor', 'se-resize'); rect3.setAttributeNS(null, 'fill', colorin ); typeTransform='Scale'; scaleType='se';}, false);3088 rect3.addEventListener("mouseout", function(event) {rect3.setAttributeNS(null, 'cursor', 'default'); rect3.setAttributeNS(null, 'fill', colorout ); typeTransform='Scale'; }, false);3090 rect4.addEventListener("mouseover", function(event) {rect4.setAttributeNS(null, 'cursor', 'sw-resize'); rect4.setAttributeNS(null, 'fill', colorin ); typeTransform='Scale'; scaleType='sw';}, false);3091 rect4.addEventListener("mouseout", function(event) {rect4.setAttributeNS(null, 'cursor', 'default'); rect4.setAttributeNS(null, 'fill', colorout ); typeTransform='Scale'; }, false);3093 rectmid12.addEventListener("mouseover", function(event) {rectmid12.setAttributeNS(null, 'cursor', 'n-resize'); rectmid12.setAttributeNS(null, 'fill', colorin ); typeTransform='Scale'; scaleType='n';}, false);3094 rectmid12.addEventListener("mouseout", function(event) {rectmid12.setAttributeNS(null, 'cursor', 'default'); rectmid12.setAttributeNS(null, 'fill', colorout ); typeTransform='Scale'; }, false);3096 rectmid23.addEventListener("mouseover", function(event) {rectmid23.setAttributeNS(null, 'cursor', 'e-resize'); rectmid23.setAttributeNS(null, 'fill', colorin ); typeTransform='Scale'; scaleType='e';}, false);3097 rectmid23.addEventListener("mouseout", function(event) {rectmid23.setAttributeNS(null, 'cursor', 'default'); rectmid23.setAttributeNS(null, 'fill', colorout ); typeTransform='Scale'; }, false);3099 rectmid34.addEventListener("mouseover", function(event) {rectmid34.setAttributeNS(null, 'cursor', 's-resize'); rectmid34.setAttributeNS(null, 'fill', colorin ); typeTransform='Scale'; scaleType='s';}, false);3100 rectmid34.addEventListener("mouseout", function(event) {rectmid34.setAttributeNS(null, 'cursor', 'default'); rectmid34.setAttributeNS(null, 'fill', colorout ); typeTransform='Scale'; }, false);3102 rectmid41.addEventListener("mouseover", function(event) {rectmid41.setAttributeNS(null, 'cursor', 'w-resize'); rectmid41.setAttributeNS(null, 'fill', colorin ); typeTransform='Scale'; scaleType='w'; }, false);3103 rectmid41.addEventListener("mouseout", function(event) {rectmid41.setAttributeNS(null, 'cursor', 'default'); rectmid41.setAttributeNS(null, 'fill', colorout ); typeTransform='Scale'; }, false);3105 //////////3106 svg.setAttributeNS(null, 'transform',trshape);3108 svg.appendChild(circle1);3109 //tracker.appendChild(circleCenter);3110 if (shape.tagName == 'text'){3111 svg.appendChild(rect1);3112 svg.appendChild(rect2);3113 svg.appendChild(rect3);3114 svg.appendChild(rect4);3115 }else{3116 svg.appendChild(rect1);3117 svg.appendChild(rect2);3118 svg.appendChild(rect3);3119 svg.appendChild(rect4);3120 svg.appendChild(rectmid12);3121 svg.appendChild(rectmid23);3122 svg.appendChild(rectmid34);3123 svg.appendChild(rectmid41);3125 }3126 if(pathsEdit)3127 {3128 controlPoints.setAttributeNS(null, 'transform',trshape);3129 tracker.appendChild(controlPoints);3130 }else{3131 tracker.appendChild(svg);3132 }3133 this.svgRoot.appendChild(tracker);3135 }3138 SVGRenderer.prototype.getMarkup = function() {3140 return this.container.innerHTML;3141 }3144 /////////////////////////////////3145 var rotatexxx=0;3147 var scaleType='';3148 var xrot=0;3149 var yrot=0;3151 var point = {x:0, y:0, width: 0, height:0};3153 function createPoint (x, y, width, height) {3154 //var point = {x:34, y:22, width: 22, height:23};3155 //point.x = x;3156 //point.y = y;3157 point = {x:x, y:y, width: width, height:height};3158 return point;3159 }3161 ///////////////////////////////3163 SVGRenderer.prototype.restruct= function(shape)3164 {3165 //alert('end');3166 //forceRedraw();3167 //clearWorkspace();3168 //document.getElementById('richdraw').style.cursor='default';3169 };3173 SVGRenderer.prototype.transform = function() {3174 //document.forms[0].code.value='Im tranforming';3175 };3177 SVGRenderer.prototype.scaleShape = function(shape,previus, toX, toY) {3179 var box = shape.getBBox();3180 var prevbox=previus.getBBox();3181 var centerx= box.x+(box.width/2);3182 var centery= box.y+(box.height/2);3183 var coord=this.editor.viewInputxy;3184 toX=parseFloat(coord[0]);3185 toY=parseFloat(coord[1]);3186 var d2p_center=dist2p(centerx,centery,toX,toY);3188 var d2p=dist2p(box.x,box.y,toX,toY);3190 var shareScale=box.width/d2p;3192 var trans_ShareScale='';3193 var tx, ty, tw, yh;3195 if(scaleType.length==1){3196 if(scaleType== 'w')3197 {3198 trans_ShareScale=shareScale+",1";3199 tx=toX;3200 ty=prevbox.y;3201 var dist=prevbox.x-toX;3202 var w=dist+prevbox.width;3203 if(w<1){w=1;}3204 tw=w;3205 th=prevbox.height;3206 //document.forms[0].code.value=box.x+' '+toX+' '+dist+'';3207 }3208 if(scaleType== 'e')3209 {3210 trans_ShareScale=shareScale+",1";3211 tx=prevbox.x;3212 ty=prevbox.y;3213 var dist=toX-(prevbox.x+prevbox.width); //dist2p(toX,b,c,d);3214 var w=dist+prevbox.width;3215 if(w<1){w=1;}3216 tw=w;3217 th=prevbox.height;3219 }3220 if(scaleType== 'n')3221 {3222 trans_ShareScale="1,"+shareScale;3224 tx=prevbox.x;3225 ty=toY;3226 var dist=prevbox.y-toY;3227 var h=dist+prevbox.height;3228 if(h<1){h=1;}3229 tw=prevbox.width;3230 th=h;3232 }3233 if( scaleType== 's')3234 {3235 trans_ShareScale="1,"+shareScale;3237 tx=prevbox.x;3238 ty=prevbox.y;3239 var dist=toY-(prevbox.y+prevbox.height); //dist2p(toX,b,c,d);3240 var h=dist+prevbox.height;3241 if(h<1){h=1;}3242 tw=prevbox.width;3243 th=h;3245 }3246 }3247 if(scaleType.length==2){3248 if(scaleType== 'nw'){3249 trans_ShareScale=shareScale+","+shareScale;3251 //var angle_diagonal=getAngle(prevbox.width,prevbox.height);3252 var angle_diagonal=ang2v(prevbox.x,prevbox.y,prevbox.x+prevbox.width,prevbox.y+prevbox.height)3254 var ax= prevbox.x;3255 var ay= prevbox.y;3256 var bx= prevbox.x+prevbox.width;3257 var by= prevbox.y+prevbox.height;3259 var cx= toX;3260 var cy= toY;3261 var dx= toX+10*Math.cos(angle_diagonal+(Math.PI/2));3262 var dy= toY+10*Math.sin(angle_diagonal+(Math.PI/2));3264 var section_a=ntrsccn2rb(ax,ay,bx,by,cx,cy,dx,dy);3265 this.editor.log(angle_diagonal* 180 / Math.PI);3267 var tx= section_a[1];3268 var ty= section_a[2];3270 var ax= section_a[1];3271 var ay= section_a[2];3272 var bx= 0;3273 var by= section_a[2] ;3275 var cx=prevbox.x+prevbox.width;3276 var cy= prevbox.y;3278 var dx= prevbox.x+prevbox.width;3279 var dy= 0;3282 var section_b=ntrsccn2rb(ax,ay,bx,by,cx,cy,dx,dy);3284 var distx=dist2p(section_a[1],section_a[2],section_b[1],section_b[2]);3288 var ax= section_a[1];3289 var ay= section_a[2];3290 var bx= section_a[1]3291 var by= 0;3293 var cx= prevbox.x;3294 var cy= prevbox.y+prevbox.height;3296 var dx= 0;3297 var dy= prevbox.y+prevbox.height;3300 var section_c=ntrsccn2rb(ax,ay,bx,by,cx,cy,dx,dy);3301 var disty=dist2p(section_a[1],section_a[2],section_c[1],section_c[2]);3306 if(distx<1){distx=1;}3309 if(disty<1){disty=1;}3310 //document.forms[0].code.value=distx+' '+disty;3311 tw=distx;3312 th=disty;3315 }3317 //////////////////// SE3319 if( scaleType== 'se'){3320 trans_ShareScale=shareScale+","+shareScale;3323 //var angle_diagonal=getAngle(prevbox.width,prevbox.height);3324 var angle_diagonal=ang2v(prevbox.x,prevbox.y,prevbox.x+prevbox.width,prevbox.y+prevbox.height)3328 var ax= prevbox.x;3329 var ay= prevbox.y;3330 var bx= prevbox.x+prevbox.width;3331 var by= prevbox.y+prevbox.height;3333 var cx= toX;3334 var cy= toY;3335 var dx= toX+10*Math.cos(angle_diagonal+(Math.PI/2));3336 var dy= toY+10*Math.sin(angle_diagonal+(Math.PI/2));3338 var section_a=ntrsccn2rb(ax,ay,bx,by,cx,cy,dx,dy);3341 var svgNamespace = 'http://www.w3.org/2000/svg';3342 var tracker = document.getElementById('tracker');3344 //////////3345 var tx= prevbox.x;3346 var ty= prevbox.y;3348 var ax= section_a[1];3349 var ay= section_a[2];3350 var bx= 0;3351 var by= section_a[2] ;3353 var cx=prevbox.x;3354 var cy= prevbox.y;3356 var dx= prevbox.x;3357 var dy= 0;3360 var section_b=ntrsccn2rb(ax,ay,bx,by,cx,cy,dx,dy);3362 /////////////////3365 var distx=dist2p(section_a[1],section_a[2],section_b[1],section_b[2]);3368 var ax= section_a[1];3369 var ay= section_a[2];3370 var bx= section_a[1]3371 var by= 0;3373 var cx= prevbox.x;3374 var cy= prevbox.y;3376 var dx=0;3377 var dy= prevbox.y;3380 var section_c=ntrsccn2rb(ax,ay,bx,by,cx,cy,dx,dy);3382 ///////////////3384 var disty=dist2p(section_a[1],section_a[2],section_c[1],section_c[2]);3388 if(distx<1){distx=1;}3391 if(disty<1){disty=1;}3393 tw=distx;3394 th=disty;3397 }3399 if(scaleType== 'ne'){3401 trans_ShareScale=shareScale+","+shareScale;3403 var angle_diagonal=ang2v(prevbox.x,prevbox.y+prevbox.height,prevbox.x+prevbox.width,prevbox.y)3404 //var angle_diagonal=getAngle(prevbox.width,prevbox.height);3409 var ax= prevbox.x;3410 var ay= prevbox.y+prevbox.height;3411 var bx= prevbox.x+prevbox.width;3412 var by= prevbox.y;3414 var cx= toX;3415 var cy= toY;3416 var dx= toX+10*Math.cos(angle_diagonal+(Math.PI/2));3417 var dy= toY+10*Math.sin(angle_diagonal+(Math.PI/2));3420 this.editor.log(angle_diagonal);3423 var section_a=ntrsccn2rb(ax,ay,bx,by,cx,cy,dx,dy);3426 var svgNamespace = 'http://www.w3.org/2000/svg';3427 var tracker = document.getElementById('tracker');3429 //////////3430 var tx= prevbox.x;3431 var ty= section_a[2];3433 var ax= section_a[1];3434 var ay= section_a[2];3435 var bx= 0;3436 var by= section_a[2] ;3438 var cx=prevbox.x;3439 var cy= prevbox.y;3441 var dx= prevbox.x;3442 var dy= 0;3445 var section_b=ntrsccn2rb(ax,ay,bx,by,cx,cy,dx,dy);3447 /////////////////3450 var distx=dist2p(section_a[1],section_a[2],section_b[1],section_b[2]);3453 var ax= section_a[1];3454 var ay= section_a[2];3455 var bx= section_a[1];3456 var by= 0;3458 var cx= prevbox.x;3459 var cy= prevbox.y+prevbox.height;3461 var dx=0;3462 var dy= prevbox.y+prevbox.height;3465 var section_c=ntrsccn2rb(ax,ay,bx,by,cx,cy,dx,dy);3467 ///////////////3469 var disty=dist2p(section_a[1],section_a[2],section_c[1],section_c[2]);3473 if(distx<1){distx=1;}3476 if(disty<1){disty=1;}3477 //document.forms[0].code.value=distx+' '+disty;3478 tw=distx;3479 th=disty;3485 }3486 if(scaleType== 'sw'){3487 trans_ShareScale=shareScale+","+shareScale;3492 var angle_diagonal=ang2v(prevbox.x,prevbox.y+prevbox.height,prevbox.x+prevbox.width,prevbox.y)3493 //var angle_diagonal=getAngle(prevbox.width,prevbox.height);3498 var ax= prevbox.x;3499 var ay= prevbox.y+prevbox.height;3500 var bx= prevbox.x+prevbox.width;3501 var by= prevbox.y;3503 var cx= toX;3504 var cy= toY;3505 var dx= toX+10*Math.cos(angle_diagonal+(Math.PI/2));3506 var dy= toY+10*Math.sin(angle_diagonal+(Math.PI/2));3509 this.editor.log(angle_diagonal);3512 var section_a=ntrsccn2rb(ax,ay,bx,by,cx,cy,dx,dy);3515 var svgNamespace = 'http://www.w3.org/2000/svg';3516 var tracker = document.getElementById('tracker');3518 //////////3519 var tx= section_a[1];3520 var ty= prevbox.y;3522 var ax= section_a[1];3523 var ay= section_a[2];3524 var bx= 0;3525 var by= section_a[2] ;3527 var cx=prevbox.x+prevbox.width;3528 var cy= prevbox.y+prevbox.height;3530 var dx= prevbox.x+prevbox.width;3531 var dy= 0;3534 var section_b=ntrsccn2rb(ax,ay,bx,by,cx,cy,dx,dy);3535 var distx=dist2p(section_a[1],section_a[2],section_b[1],section_b[2]);3537 /////////////////3538 var ax= section_a[1];3539 var ay= section_a[2];3540 var bx= section_a[1];3541 var by= 0;3543 var cx= prevbox.x;3544 var cy= prevbox.y;3546 var dx=0;3547 var dy= prevbox.y;3550 var section_c=ntrsccn2rb(ax,ay,bx,by,cx,cy,dx,dy);3551 var disty=dist2p(section_a[1],section_a[2],section_c[1],section_c[2]);3552 ///////////////3556 if(distx<1){distx=1;}3559 if(disty<1){disty=1;}3560 //document.forms[0].code.value=distx+' '+disty;3561 tw=distx;3562 th=disty;3564 }3566 }3570 if(shape.tagName == 'rect')3571 {3572 //alert(data[0]);3573 shape.setAttributeNS(null,'x',tx);3574 shape.setAttributeNS(null,'y',ty);3575 shape.setAttributeNS(null, 'width', tw);3576 shape.setAttributeNS(null, 'height', th);3578 //shape.nodparseFloatue=data;3579 }3580 else3581 if(shape.tagName == 'text')3582 {3584 var tsize=shape.getAttributeNS(null, 'font-size') ;3585 // var d2p_center=dist2p(centerx,centery,toX,toY);3587 var d2p=dist2p(0,box.y,0,toY);3588 //shape.setAttributeNS(null, 'x', tx + 'px');3589 //shape.setAttributeNS(null, 'y', ty + 'px');3590 //var mysize=box.height+1 ;3591 //if((toX - centerx)<0){tsize++}else{tsize--}3592 tsize=d2p;3593 //var mysize=parseInt(Math.round(th));3595 if(scaleType== 'ne'){ shape.setAttributeNS(null, 'font-size',tsize);}3596 if(scaleType== 'se'){ shape.setAttributeNS(null, 'font-size',tsize);}3597 if(scaleType== 'nw'){ shape.setAttributeNS(null, 'font-size',tsize);}3598 if(scaleType== 'sw'){ shape.setAttributeNS(null, 'font-size',tsize);}3600 //shape.setAttributeNS(null, 'font-size', mysize);3603 /*3604 shape.setAttributeNS(null,'x',tx);3605 shape.setAttributeNS(null,'y',ty);3606 shape.setAttributeNS(null, 'width', tw);3607 shape.setAttributeNS(null, 'height', th);3609 //previus.setAttributeNS(null,'transform', "scale("+trans_ShareScale+")");3610 shape.setAttributeNS(null, 'x', tx + 'px');3611 shape.setAttributeNS(null, 'y', ty + 'px');3613 shape.setAttributeNS(null, 'textLength', parseInt(Math.round(tw)));3615 */3616 }3617 else3618 if(shape.tagName == 'ellipse')3619 {3620 //shape.getAttributeNS(null, 'transform)3621 shape.setAttributeNS(null, 'cx', (tx + (box.width / 2)) + 'px');3622 shape.setAttributeNS(null, 'cy', (ty + (box.height / 2)) + 'px');3623 shape.setAttributeNS(null, 'rx', (tw / 2) + 'px');3624 shape.setAttributeNS(null, 'ry', (th / 2) + 'px');3627 }3628 else3629 if(shape.tagName == 'line')3630 {3631 shape.setAttributeNS(null, 'x1', tx + 'px');3632 shape.setAttributeNS(null, 'y1', ty + 'px');3633 shape.setAttributeNS(null, 'x2', tx + tw + 'px');3634 shape.setAttributeNS(null, 'y2', ty + th + 'px');3636 }3637 else3638 if (shape.tagName == 'polyline')3639 {3641 }3642 else3643 if (shape.tagName == 'image')3644 {3645 shape.setAttributeNS(null,'x',tx);3646 shape.setAttributeNS(null,'y',ty);3647 shape.setAttributeNS(null, 'width', tw);3648 shape.setAttributeNS(null, 'height', th);3650 }3651 else3652 if (shape.tagName == 'path')3653 {3654 // var xscale= box.width/tw;3655 // var yscale= box.height/th;3656 var xscale= tw/box.width;3657 var yscale= th/box.height;3658 var xinc=xscale;//dist*angx;3659 var yinc=yscale/ty;//dist*angy;3661 if(scaleType== 'n')3662 {3663 tx=box.x+(box.width/2);3664 ty=box.y+box.height;3665 var xinc=1;3666 var yinc=box.y/toY;//dist*angy;3668 }3669 if(scaleType== 's')3670 {3671 tx=box.x+(box.width/2);3672 ty=box.y;3673 var xinc=1;3674 var yinc=toY/(box.y+box.height);//dist*angy;3675 }3676 if(scaleType== 'e')3677 {3678 tx=box.x;3679 ty=box.y+(box.height/2);3680 var xinc=toX/(box.x+box.width);3681 var yinc=1;3683 }3684 if(scaleType== 'w')3685 {3686 tx=box.x+box.width;3687 ty=box.y+(box.height/2);3688 var xinc=box.x/toX;3689 var yinc=1;3691 }3692 if(scaleType== 'ne')3693 {3694 tx=box.x;3695 ty=box.y+box.height;3696 var xinc=toX/(box.x+box.width);3697 var yinc=xinc;3698 }3699 if(scaleType== 'nw')3700 {3701 tx=box.x+box.width;3702 ty=box.y+box.height;3703 var xinc=box.x/toX;3704 var yinc=xinc;3705 }3706 if(scaleType== 'se')3707 {3708 tx=box.x;3709 ty=box.y;3710 var xinc=toX/(box.x+box.width);3711 var yinc=xinc;3712 }3713 if(scaleType== 'sw')3714 {3715 tx=(box.x+box.width);3716 ty=box.y;3717 var xinc=box.x/toX;3718 var yinc=xinc;3719 }3720 if(xinc==0){ xinc= 0.0000001;}3721 if(yinc==0){ yinc= 0.0000001; }3722 var prevpath=previus.getAttributeNS(null, 'd');3723 var path=shape.getAttributeNS(null, 'd');3724 ////////////3727 //xshe=left;3728 //yshe=top;3730 path=path.replace(/, /g, ',');3731 path=path.replace(/ ,/g, ',');3732 var ps =path.split(" ")3733 var pcc = "";3734 var point =ps[0].split(",");3737 var num0= parseFloat(point[0].substring(1));3738 var num1= parseFloat(point[1]);3741 var ang= ang2v(box.x,box.y,tx,ty) ;3742 var angle = Math.round((ang/Math.PI* 2)* 360);3743 var angx = Math.cos(ang);3744 var angy = Math.sin(ang);3745 var dist= dist2p(tx,ty,box.x,box.y);3746 //var xinc=xscale;//dist*angx;3747 //var yinc=yscale;//dist*angy;3748 var re = /^[-]?\d*\.?\d*$/;3749 var axis = $V([tx,ty]);3750 for(var i = 0; i < ps.length; i++)3751 {3752 if(ps[i].indexOf(',')>0){3754 var point =ps[i].split(",");3755 var char1=point[0].substring(0,1);3756 if(char1=='A' || char1=='a'){isArc=true; contArc=0;}3757 if(isArc==true){contArc++}3758 if(contArc==4){contArc=0; isArc=false}3760 //if (isNaN(valnum))3761 if (!char1.match(re))3762 {3763 var num0= parseFloat(point[0].substring(1));3764 var text=char1;3765 }else{3766 if(isArc==true && contArc==2 )3767 {3768 var num0= point[0];3769 }else{3770 var num0= parseFloat(point[0]);3771 }3772 var text='';3774 }3777 if(isArc==true && contArc==2)3778 {3779 point[1]= point[1].toString() ;3780 }3781 else3782 {3784 //num0*=xinc;3785 point[1]= parseFloat(point[1]);3786 //point[1]*=yinc;3787 var pointIni=$V([num0,point[1],1]);3788 var matrT = $M([[1,0,-tx],[0,1,-ty],[0,0,1]]);3789 var matrS = $M([[xinc,0,0],[0,yinc,0],[0,0,1]]);3790 var matrR = $M([[1,0,tx],[0,1,ty],[0,0,1]]);3791 var matr1= matrT.x(pointIni);3792 var matr2= matrS.x(matr1);3793 //var pointR=pointIni.Random(1)3794 //var pointR=pointIni.rotate(Math.PI/180,axis);3795 //var pointRc=pointIni.cross(axis);3796 //var pointR=matr2;3797 var pointR=matrR.x(matr2);3798 num0=pointR.elements[0];3799 point[1]=pointR.elements[1];3800 $('code').value=pointIni.elements[0]+','+pointR.elements[1]+' ';3801 }3802 var cx=num0;3803 var cy=point[1];3804 pcc+=text+cx+','+cy+' ';3805 //pcc+=text+cx+','+cy+' ';3807 }else{3808 pcc+=ps[i]+' ';3809 }3810 }3812 shape.setAttributeNS(null,'d', pcc);3816 //////////////3817 /*3818 path=path.replace(/, /g, ',');3819 path=path.replace(/ ,/g, ',');3820 var ps =path.split(" ")3821 var pcc = "";3823 var xinc=tx-prevbox.x;3824 var yinc=ty-prevbox.y;3826 var re = /^[-]?\d*\.?\d*$/;3827 for(var i = 0; i < ps.length; i++)3828 {3829 if(ps[i].indexOf(',')>0){3831 var point =ps[i].split(",");3832 var char1=point[0].substring(0,1);3833 point[1]= parseFloat(point[1]);3835 // var valnum =char1.charAt(0);3836 //if (isNaN(valnum))3837 if (!char1.match(re))3839 {3840 var num0= parseFloat(point[0].substring(1));3841 var text=char1;3842 }else{3843 var num0= parseFloat(point[0]);3844 var text='';3846 }3847 //num0+=dist*angx;3848 //point[1]+=dist*angy;3849 num0*=xscale;3850 point[1]*=yscale;3852 // num0+=xinc;3853 // point[1]+=yinc;3857 var cx=num0;3858 var cy=point[1];3859 pcc+=text+cx+','+cy+' ';3860 }else{3861 pcc+=ps[i]+' ';3862 }3863 }3869 // $('code').value=dist+' '+ ang+' '+'__'+x+'= '+left+'/ '+y+'= ' +top+'';3871 //shape.setAttributeNS(null,'transform', "rotate("+left+")");3873 // shape.setAttributeNS(null,'transform', "translate("+trax+","+tray+") rotate("+0+") scale(1,1)");3874 shape.setAttributeNS(null,'d', pcc);3882 //document.forms[0].code.value='';3883 //shape.setAttributeNS(null,'transform', "scale("+trans_ShareScale+")");3884 */3886 }3900 //$('status').innerHTML=typeTransform+': '+shareScale;3903 };3906 SVGRenderer.prototype.rotateShape = function(shape, previus, toX, toY) {3908 //document.getElementById('richdraw').style.cursor='e-resize';3909 var box = shape.getBBox();3910 var prevbox=previus.getBBox();3911 var centerx= box.x+(box.width/2);3912 var centery= box.y+(box.height/2);3913 var coord=this.editor.viewInputxy;3915 var actual_angle=ang2v(centerx,centery,coord[0], coord[1]);3917 if(xrot<toX) { rotatexxx+=1;}else{rotatexxx-=1;}3918 xrot=toX;3919 yrot=toY;3921 var xtr=0;3922 var ytr=0;3924 var box= shape.getBBox();3925 var tr1x= box.x;3926 var tr1y= box.y;3930 toX+=xtr;3931 toY+=xtr;3933 //var trax=parseFloat(toX-box.x); var tray= parseFloat(toY-box.y);3934 var trax=parseFloat(box.x/2); var tray= parseFloat(box.y/2);3935 var angler=Math.atan2(toX,toY);3936 var angle=angler*180/Math.PI;3937 var T = shape.getCTM();3938 var rotini=T.a*(180 / Math.PI);3939 var angle=rotini*180/Math.PI;3940 var rot_angle=actual_angle*180/Math.PI;3941 this.editor.log(centerx+' '+centery+' '+coord[0]+' '+coord[1]+'____ '+rot_angle+' '+actual_angle*180/Math.PI);3944 // matrix( a, b, c, d, e, f )3945 // a c e3946 // b d f3947 // 0 0 13948 //a scale factor of 2, a rotation of 30 deg and a translation of (500,50)3949 //T 1.732 -1 500 1 1.732 50 0 0 13950 //T 1 ad-bc d -c -de+cf -b a be-df 0 0 13952 //shape.setAttributeNS(null,'transform', "translate("+(-xshe)+","+(-yshe)+")");3954 // shape.setAttributeNS(null,"transform", " matrix( a, b, c, d, e, f )");3955 // shape.setAttributeNS(null,'transform', "translate("+(box.x+(box.width/2))+","+(box.y+(box.height/2))+") rotate("+rotatexxx+") ");3956 //shape.setAttributeNS(null,'transform', "translate("+(box.x+(box.width/2))+","+(box.y+(box.height/2))+") rotate("+rotatexxx+") translate("+(-box.x-(box.width/2))+","+(-box.y-(box.height/2))+") ");3957 //shape.setAttributeNS(null,'transform', "rotate("+rotatexxx+","+(box.x+(box.width/2))+","+(box.y+(box.height/2))+")");3958 //shape.setAttributeNS(null,'transform', "rotate("+rotatexxx+","+(prevbox.x+(prevbox.width/2))+","+(prevbox.y+(prevbox.height/2))+")");3959 shape.setAttributeNS(null,'transform', "rotate("+rot_angle+","+(prevbox.x+(prevbox.width/2))+","+(prevbox.y+(prevbox.height/2))+")");3962 //alert('[ ['+T.a+' '+T.c+' '+T.e+'] ['+T.b+' '+T.d+' '+T.f+'] [0 0 1] ]');3963 //a,b,c,d,e,f3965 // shape.setAttributeNS(null,'transform', 'matrix('+T.a+', '+T.b+', '+ T.c+', '+ T.d+', '+ T.e+', '+ T.f+')' );3967 var x1=T.e;3968 var y1=T.f;3969 var sp = Math.sin(rotatexxx*(Math.PI / 180));3970 var cp = Math.cos(rotatexxx*(Math.PI / 180));3971 var x2 = 0 + r*rotatexxx*(Math.PI / 180);3972 var y2 = 0;3973 var r=0;3975 var a=cp;3976 var c=sp;3977 var e=T.e;3978 var b=T.b;3979 var d=(-x1*cp+y1*sp+x2);3980 var f=(-x1*sp-y1*cp+y2);3982 var inv=T.inverse;3983 var inv_mat=T.multiply(inv);3984 //var matrix = "matrix(" + cp +"," + sp + "," + (-sp) + "," + cp + ","+ (-x1*cp+y1*sp+x2) + ","+ (-x1*sp-y1*cp+y2) + ")";3985 //var matrix = "matrix(" + a +"," + c + "," + e + "," + b + ","+ d + ","+ f + ")";3986 var matrix='matrix('+inv_mat.a+' '+inv_mat.b+' '+inv_mat.c+' '+inv_mat.d+' '+inv_mat.e+' '+inv_mat.f+')'3988 //++ shape.setAttributeNS(null,'transform',matrix);3990 //shape.setAttributeNS(null,'transform', "rotate("+rotatexxx+")");3991 // shape.setAttributeNS(null,'transform', "translate("+(box.x)+","+(box.y)+")");3993 //shape.setAttributeNS(null,'transform', "rotate("+rotatexxx+")");3994 //shape.setAttributeNS(null, 'x', -box.width/2 + 'px');3995 //shape.setAttributeNS(null, 'y', -box.height/2 + 'px');3996 //shape.setAttributeNS(null,"transform", "matrix("+Math.cos(angle)+", "+Math.sin(angle)+", "+Math.sin(-angle)+", "+Math.cos(angle)+", 0, 0 )");3997 //shape.setAttributeNS(null,'transform', "rotate("+10+")");3999 //shape.setAttributeNS(null, 'x', box.width/2 + 'px');4000 //shape.setAttributeNS(null, 'y', box.height/2 + 'px');4004 //$('status').innerHTML = 'Mode: Draw '+pointshape +'_'+xsh +' '+ ysh+' '+trshape;4006 //$('status').innerHTML=typeTransform+': '+rotatexxx;4008 };4012 // x(u) = x0*(1-u) + x1*u = x0 + (x1-x0)*u4013 // y(u) = y0*(1-u) + y1*u = y0 + (y1-y0)*u4017 SVGRenderer.prototype.getshapes = function(){4018 var shape = document.getElementById('rectDoc');4019 if (shape) {4020 this.remove(shape);4021 }4022 var shape = document.getElementById('tracker');4023 if (shape) {4024 this.remove(shape);4025 }4026 return this.svgRoot.childNodes;4027 // return this.container.childNodes4028 //return this.svgRoot4029 }4031 SVGRenderer.prototype.reflect = function(HorV) {4032 var shape= c.selected;4033 var box = shape.getBBox();4035 if(shape.tagName=="path")4036 {4038 var tx=box.x+(box.width/2);4039 var ty=box.y+(box.height/2);4041 if(HorV=='V'){4042 var xinc=-1;4043 var yinc=1;4044 }4045 if(HorV=='H'){4046 var xinc=1;4047 var yinc=-1;4048 }4051 var path=shape.getAttributeNS(null, 'd');4052 path=path.replace(/, /g, ',');4053 path=path.replace(/ ,/g, ',');4054 var ps =path.split(" ")4055 var pcc = "";4056 var point =ps[0].split(",");4059 var num0= parseFloat(point[0].substring(1));4060 var num1= parseFloat(point[1]);4062 var re = /^[-]?\d*\.?\d*$/;4063 var axis = $V([tx,ty]);4065 for(var i = 0; i < ps.length; i++)4066 {4067 if(ps[i].indexOf(',')>0){4069 var point =ps[i].split(",");4070 var char1=point[0].substring(0,1);4071 if(char1=='A' || char1=='a'){isArc=true; contArc=0;}4072 if(isArc==true){contArc++}4073 if(contArc==4){contArc=0; isArc=false}4075 //if (isNaN(valnum))4076 if (!char1.match(re))4077 {4078 var num0= parseFloat(point[0].substring(1));4079 var text=char1;4080 }else{4081 if(isArc==true && contArc==2 )4082 {4083 var num0= point[0];4084 }else{4085 var num0= parseFloat(point[0]);4086 }4087 var text='';4089 }4092 if(isArc==true && contArc==2)4093 {4094 point[1]= point[1].toString() ;4095 }4096 else4097 {4099 //num0*=xinc;4100 point[1]= parseFloat(point[1]);4101 //point[1]*=yinc;4102 var pointIni=$V([num0,point[1],1]);4103 var matrT = $M([[1,0,-tx],[0,1,-ty],[0,0,1]]);4104 var matrS = $M([[xinc,0,0],[0,yinc,0],[0,0,1]]);4105 var matrR = $M([[1,0,tx],[0,1,ty],[0,0,1]]);4106 var matr1= matrT.x(pointIni);4107 var matr2= matrS.x(matr1);4108 //var pointR=pointIni.Random(1)4109 //var pointR=pointIni.rotate(Math.PI/180,axis);4110 //var pointRc=pointIni.cross(axis);4111 //var pointR=matr2;4112 var pointR=matrR.x(matr2);4113 num0=pointR.elements[0];4114 point[1]=pointR.elements[1];4115 $('code').value=pointIni.elements[0]+','+pointR.elements[1]+' ';4116 }4117 var cx=num0;4118 var cy=point[1];4119 pcc+=text+cx+','+cy+' ';4120 //pcc+=text+cx+','+cy+' ';4122 }else{4123 pcc+=ps[i]+' ';4124 }4125 }4126 var svg =shape.cloneNode(false);4127 svg.setAttributeNS(null,'d', pcc);4128 this.svgRoot.appendChild(svg);4129 return svg;4130 }4131 else4132 {4133 if(shape.tagName=="text" || shape.tagName=="image" )4134 {4137 var tr='';4138 var turn0='';4139 var svg =shape.cloneNode(false);4140 var x= shape.getAttributeNS(null, 'x');4141 var y= shape.getAttributeNS(null, 'y');4142 x+=box.width/2;4143 y+=box.height/2;4144 if(HorV=='V')4145 {4146 svg.setAttributeNS(null,'x',-parseFloat(x));4147 var scaleSim='-1, 1';4148 svg.setAttributeNS(null,'transform','scale('+scaleSim+')');4149 //svg.setAttributeNS(null,'y',parseFloat(x));4150 svg.setAttributeNS(null,'x',-parseFloat(x));4153 }4154 if(HorV=='H')4155 {4156 var scaleSim='1, -1';4157 svg.setAttributeNS(null,'y',-parseFloat(y));4158 svg.setAttributeNS(null,'transform','scale('+scaleSim+')');4159 //svg.setAttributeNS(null,'x',parseFloat(x));4160 svg.setAttributeNS(null,'y',-parseFloat(y));4163 }4165 if(shape.hasAttributeNS(null, 'transform'))4166 {4167 tr=shape.getAttributeNS(null, 'transform');4168 turn0=GetString(tr,'rotate(',')');4170 svg.setAttributeNS(null,'transform','rotate('+turn+'),scale('+scaleSim+')');4171 svg.setAttributeNS(null,'x',parseFloat(x));4172 svg.setAttributeNS(null,'y',parseFloat(y));4174 //svg.setAttributeNS(null,'transform','rotate('+turn+'),scale('+'');4175 }else{4177 }4181 if(shape.tagName=="text"){4182 var text=shape.textContent ;4183 svg.textContent=text;4184 }4185 //svg.setAttributeNS(null,'writing-mode',mode);4186 //svg.setAttributeNS(null,'glyph-orientation-horizontal','0deg');4187 //4188 //svg.appendChild(text);4190 this.svgRoot.appendChild(svg);4191 return svg;4192 }4193 else4194 {4195 if(shape.hasAttributeNS(null, 'transform'))4196 {4199 var tr=shape.getAttributeNS(null, 'transform');4200 var turn0=GetString(tr, 'rotate(',',');4201 turn0=parseFloat(turn0);4202 //alert(turn0);4204 if(HorV=='V'){4205 var angle=180;4206 //var turn=(turn0+angle)-(turn0-90);4207 var turn=turn0+((angle-turn0)*2);4208 }4209 if(HorV=='H'){4210 var angle=90;4211 var turn=turn0+((angle-turn0)*2);4212 }4213 var centerx= box.x+(box.width/2);4214 var centery= box.y+(box.height/2);4215 //this.editor.log(centerx+' '+centery+' '+coord[0]+' '+coord[1]+'____ '+rot_angle+' '+actual_angle*180/Math.PI);4216 var svg =shape.cloneNode(false);4217 svg.setAttributeNS(null,'transform', "rotate("+turn+","+centerx+","+centery+")");4218 this.svgRoot.appendChild(svg);4219 return svg;4220 }4221 else4222 {4223 var centerx= box.x+(box.width/2);4224 var centery= box.y+(box.height/2);4225 shape.setAttributeNS(null,'transform', "rotate("+180+","+centerx+","+centery+")");4227 }4228 }4229 }4230 };4231 //http://dev.opera.com/articles/view/svg-evolution-2-our-first-steps-into-sv/?page=34232 //http://www.w3.org/TR/2000/03/WD-SVG-20000303/exchange.html#StylingAttributes4233 //http://www.xml.com/lpt/a/13904241 //http://xml-utils.com/conferencia-svg.html#d0e5274242 //http://www.xml.com/lpt/a/13214243 //http://phrogz.net/objjob/object.asp?id=1014244 //http://admisource.gouv.fr/plugins/scmcvs/cvsweb.php/Cassini-ihm/js-yosemite/mapApp.js?rev=1.1;cvsroot=cassini4245 //http://groups.google.com/group/prototype-graphic/msg/0547c0caea8869c64246 //http://sylvester.jcoglan.com/