comparison onlypaths/js/svgrenderer.js @ 46:26c2b3ad21c7 laserkard

[svn r47] saving progresswww.cinemassacre.com/new/?page_id=30
author rlm
date Sun, 31 Jan 2010 12:33:33 -0500
parents
children
comparison
equal deleted inserted replaced
45:bff96abdddfa 46:26c2b3ad21c7
1 /*----------------------------------------------------------------------------
2 SVGRENDERER 1.0
3 SVG Renderer For RichDraw
4 -----------------------------------------------------------------------------
5 Created by Mark Finkle (mark.finkle@gmail.com)
6 Implementation of SVG based renderer.
7 -----------------------------------------------------------------------------
8 */
9 function AbstractRenderer() {
10
11 };
12
13 AbstractRenderer.prototype.init = function(elem) {};
14
15
16
17
18 function SVGRenderer() {
19 this.base = AbstractRenderer;
20 this.svgRoot = null;
21 }
22
23
24 SVGRenderer.prototype = new AbstractRenderer;
25
26
27 SVGRenderer.prototype.bounds = function(shape) {
28
29 var box = shape.getBBox();
30
31 return { x:box.x, y:box.y, width:box.width, height: box.height };
32
33 };
34
35 SVGRenderer.prototype.init = function(elem) {
36 this.container = elem;
37
38 this.container.style.MozUserSelect = 'none';
39
40 var svgNamespace = 'http://www.w3.org/2000/svg';
41
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 }
48
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;
65
66 document.title= initialFile +' '+wImage+' x '+hImage;
67
68
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'
83
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;
92
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)
98
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;
107
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 }
113
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));
118
119 this.svgRoot.setAttributeNS(null,'viewBox', viewBox);
120
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';
128
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;
137
138 document.title= initialFile +' '+wImage+' x '+hImage;
139 // ajust proporImage to proporCanvas
140 if(proporCanvas==proporImage)
141 {
142 cornerNEx = parseFloat(tokens[0])-percentX
143 cornerNEy = parseFloat(tokens[1])-percentY
144 var wi=percentRectW;
145 var he=percentRectH;//hImage+percentY+addHimage;
146 zoominit=viewBox;
147 zoominit1 = cornerNEx+' '+cornerNEy+' '+wi+' '+he;
148 tokensZoom=zoominit1.split(' ');
149 }
150
151 if(proporCanvas<proporImage)
152 {
153
154 // add to hImage
155 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 300
166 }
167 if(proporCanvas>proporImage)
168 {
169 // add to hImage
170 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);
189
190
191 }
192 }
193
194 SVGRenderer.prototype.zoomFrame = function(zoom){
195 this.svgRoot.setAttributeNS(null,'viewBox', zoom);
196 }
197
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-right
205 var Hz = parseFloat(tokens[3]) ; // height zoom
206 this.editor.unit = this.editor.initialUnit * (Hz/Ey) ; // 0 to 1
207
208 var svgNamespace = 'http://www.w3.org/2000/svg';
209
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)
224
225 this.svgRoot.insertBefore( rect, this.svgRoot.firstChild );
226 }
227
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 );
245
246 //this.index('rectBackground',0);
247
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 }
265
266 SVGRenderer.prototype.removeAll = function()
267 {
268 while( this.svgRoot.hasChildNodes () )
269 {
270 this.svgRoot.removeChild( this.svgRoot.firstChild );
271 }
272 }
273
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";
277
278 var svg;
279
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');
288
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') {
294
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');
304
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" // 4th
342 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' // 4th
351 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);
391
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 //}
422
423 //else if (shape == 'linearGradient') {
424 //return false
425 }
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');
434
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 slice
455 //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);
471
472 */
473 //svg.setAttributeNS(null, 'color-rendering', fillColor);
474 //svg.setAttributeNS(null, 'display', 'inherit');
475
476 //alert(fillOpac+'lkjlkj');
477 //svg.setAttributeNS(null, 'fill-opacity', parseFloat(fillOpac));
478
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);
491
492 */
493 }
494
495 if(shape == 'zoom')
496 {
497
498 }else
499 {
500 if(transform!='')
501 {
502 svg.setAttributeNS(null, 'transform', transform);
503 }
504
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;}
514
515
516
517 //|| shape != 'group'
518 //if(shape != 'image' || shape != 'stop' || shape != 'def')
519 if(render==true)
520 {
521
522 //var set = this.container.ownerDocument.createElementNS(svgNamespace, "style");
523
524 if (lineColor.length == 0){lineColor = 'none';}
525 if (fillColor.length == 0){fillColor = 'none';}
526 //if (lineWidth == NaN || lineWidth == 0 ){lineColor = '#000000';}
527
528
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');
537
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')
544
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';}
554
555 if (lineColor.length == 0){lineColor = 'none';}
556 */
557 }
558
559
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 }
568
569
570 return svg;
571
572 }
573
574 };
575
576
577
578 SVGRenderer.prototype.zoomFrame = function(zoom){
579 this.svgRoot.setAttributeNS(null,'viewBox', zoom);
580
581
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 through
595 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 through
603 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 values
610 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 */
619
620
621
622 //canvasWidth
623 //canvasheight
624 if(zoommode=='frame')
625 {
626 var viewBox = this.svgRoot.getAttributeNS(null,'viewBox');
627
628 //alert(viewBox);
629
630 var viewBox = zoominit;
631 var viewVals = viewBox.split(' ');
632
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 else
640 {
641
642 var viewBox = this.svgRoot.getAttributeNS(null,'viewBox');
643
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;
651
652 }
653
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;
664
665
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;
680
681 }
682 if(zoommode=='window')
683 {
684
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));
691
692
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);
711
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 }
717
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 };
734
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, ';
739
740 //if(shape.getBBox && shape)
741 if( shapes.indexOf(' '+shape.tagName+',')>0)
742 {
743
744 var box = shape.getBBox();
745 }else
746 {
747 return false;
748 }
749 var p1x = box.x;
750 if(Math.abs(p1x-centerx)>width){result = false}
751
752 var p1y = box.y;
753 if(Math.abs(p1y-centery)>height){result = false}
754
755 var p2x = box.x+box.width;
756 if(Math.abs(p2x-centerx)>width){result = false}
757
758 var p2y = box.y;
759 if(Math.abs(p2y-centery)>height){result = false}
760
761 var p3x = box.x+box.width;
762 if(Math.abs(p3x-centerx)>width){result = false}
763
764 var p3y = box.y+box.height;
765 if(Math.abs(p3y-centery)>height){result = false}
766
767 var p4x = box.x;
768 if(Math.abs(p4x-centerx)>width){result = false}
769
770 var p4y = box.y+box.height;
771 if(Math.abs(p4y-centery)>height){result = false}
772
773 if(result)
774 {
775 return { 'in':result, 'cornersx': p1x+','+p2x+','+p3x+','+p4x+',' ,'cornersy': p1y+','+p2y+','+p3y+','+p4y+',' };
776 }
777 else
778 {
779 return { 'in':result }
780 }
781 //center.distanceFrom(point1);
782
783
784 }
785
786 SVGRenderer.prototype.searchBoxes = function()
787 {
788 var base = this.svgRoot;
789
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;
801
802 }
803
804 SVGRenderer.prototype.DrawBorder= function(numNode, targetElement )
805 {
806 var shapes='names: g, image, rect, path, ellipse, circle, text, line, ';
807
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';
813
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 );
822
823 targetElement.parentNode.insertBefore( outline, targetElement );
824 return 'shapeBoxed'+numNode;
825 }
826 else
827 {
828 return false
829 }
830 }
831
832 SVGRenderer.prototype.index = function(shape,order) {
833
834 if(order==-1)
835 {
836 this.svgRoot.appendChild( shape );
837 }
838 if(order==0){
839
840 this.svgRoot.insertBefore( shape, shape.parentNode.firstChild );
841 }
842
843 if(order==1 || order==2)
844 {
845 var id=shape.getAttributeNS(null, 'id');
846 //alert(id);
847
848
849 var numNodes=this.svgRoot.childNodes.length;
850 //alert(numNodes);
851
852 var num=0;
853 for(var i = 1; i < numNodes; i++)
854 {
855
856 var etiq=this.svgRoot.childNodes[i].getAttributeNS(null, 'id');
857 if (etiq==id)
858 {
859 num=i;
860
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 }
877
878 }
879
880
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;
890
891 }
892 SVGRenderer.prototype.remove = function(shape) {
893 //shape.parentNode.removeChild(shape);
894 this.svgRoot.removeChild(shape);
895 }
896
897
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 };
909
910
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 };
920
921
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 };
930
931 SVGRenderer.prototype.undo = function()
932 {
933 this.svgRoot.removeChild( this.svgRoot.lastChild );
934 };
935
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 }
943
944 SVGRenderer.prototype.moveToTop( svgNode )
945 {
946 this.svgRoot.appendChild( svgNode );
947 }
948
949
950 SVGRenderer.prototype.moveToBottom( svgNode )
951 {
952 this.svgRoot.insertBefore( svgNode, svgNode.parentNode.firstChild );
953 }
954
955 */
956
957
958
959
960
961 var xshe=0; //bad
962 var yshe=0;
963 var isArc=false;
964 var contArc=0;
965
966 SVGRenderer.prototype.move = function(shape, left, top, fromX,fromY) {
967 //typeTransform='Translate';
968
969 var box = shape.getBBox();
970 var angle=0;
971 var dist=0;
972 var rotated=false;
973
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='';
993
994 }
995 }else{
996 if(tran.indexOf('scale')!=-1)
997 {
998 scl= GetString(tran, 'scale(', ')');
999 angle=0;
1000 }else{
1001 //
1002 }
1003 }
1004
1005 //var h=shape.getAttributeNS(null, SVG_TRANSFORM_ROTATE );
1006
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);
1023
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 }
1032
1033 }
1034 //shape.setAttributeNS(null,'transform', 'rotate('+(angle)+', '+centerx+', '+centery+')');
1035 shape.setAttributeNS(null,'transform', cadRot+union+cadScale);
1036
1037 //var angleRad=angle*Math.PI/180;
1038
1039
1040
1041 //dist=dist2p(x,y,left, top) ;
1042 rotated=true;
1043
1044 }
1045 //left=left-box.x;
1046 //top=top-box.y;
1047 //left = centerx-left;
1048 //top = centery-top;
1049
1050 contmove++;
1051
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);
1058
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);
1063
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);
1072
1073
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+' ==============');
1089
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');
1096
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;
1114
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');
1121
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;
1126
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;
1135
1136 }
1137 if (shape.tagName == 'path' || shape.tagName == 'polyline' ) {
1138
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(",");
1149
1150
1151 var num0= parseFloat(point[0].substring(1));
1152 var num1= parseFloat(point[1]);
1153
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){
1165
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}
1171
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='';
1185
1186 }
1187
1188
1189 if(isArc==true && contArc==2)
1190 {
1191 point[1]= point[1].toString() ;
1192 }
1193 else
1194 {
1195
1196 num0+=xinc;
1197 point[1]= parseFloat(point[1]);
1198 point[1]+=yinc;
1199
1200 }
1201 var cx=num0;
1202
1203 var cy=point[1];
1204 pcc+=text+cx+','+cy+' ';
1205 }else{
1206 pcc+=ps[i]+' ';
1207 }
1208 }
1209
1210 shape.setAttributeNS(null,'d', pcc);
1211
1212 }
1213
1214
1215 //$('status').innerHTML=typeTransform+': '+left+' '+top;
1216 //$('option_select_trx').value= left;
1217 //$('option_select_try').value= top;
1218
1219
1220
1221 };
1222
1223
1224
1225 SVGRenderer.prototype.track = function(shape) {
1226 // TODO
1227 };
1228
1229
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;
1236
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;
1243
1244 shape.setAttributeNS(null,'d',path);
1245 $('control_codebase').value=path;
1246
1247 }
1248
1249
1250 SVGRenderer.prototype.resize = function(shape, fromX, fromY, toX, toY) {
1251 var deltaX = toX - fromX;
1252 var deltaY = toY - fromY;
1253
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 {
1264
1265
1266 if (deltaX < 0) {
1267 shape.setAttributeNS(null, 'x', toX + 'px');
1268 shape.setAttributeNS(null, 'width', -deltaX + 'px');
1269 }
1270 else
1271 {
1272 shape.setAttributeNS(null, 'width', deltaX + 'px');
1273 }
1274
1275 if (deltaY < 0)
1276 {
1277 shape.setAttributeNS(null, 'y', toY + 'px');
1278 shape.setAttributeNS(null, 'height', -deltaY + 'px');
1279 }
1280 else
1281 {
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 */
1290
1291 }
1292
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');
1300
1301 }
1302 else
1303 {
1304 shape.setAttributeNS(null, 'width', parseFloat(deltaX) + 'px');
1305 }
1306
1307 if (deltaY < 0)
1308 {
1309 shape.setAttributeNS(null, 'y', parseFloat(toY) + 'px');
1310 shape.setAttributeNS(null, 'height', parseFloat(-deltaY) + 'px');
1311 }
1312 else
1313 {
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;
1319
1320
1321
1322 }*/
1323 if (shape.tagName == 'g' || shape.tagName == 'image')
1324 {
1325
1326
1327 if (deltaX < 0)
1328 {
1329 shape.setAttributeNS(null, 'x', parseFloat(toX) + 'px' );
1330 shape.setAttributeNS(null, 'width', parseFloat(-deltaX) + 'px');
1331
1332
1333 }
1334 else
1335 {
1336 shape.setAttributeNS(null, 'width', parseFloat(deltaX) + 'px');
1337 }
1338
1339 if (deltaY < 0)
1340 {
1341 shape.setAttributeNS(null, 'y', parseFloat(toY) + 'px');
1342 shape.setAttributeNS(null, 'height', parseFloat(-deltaY) + 'px' );
1343 }
1344 else
1345 {
1346 shape.setAttributeNS(null, 'height', parseFloat(deltaY) + 'px');
1347
1348 }
1349
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 }
1360
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') {
1375
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;
1382
1383 for(var conta=2;conta< maxcont;conta++){
1384 thispath1+=' '+xpArray[conta]+' '+ypArray[conta];
1385 thispath2+=' '+xpArray[conta]+', '+ypArray[conta];
1386
1387 }
1388
1389
1390 shape.setAttributeNS(null,'points',thispath+thispath1);
1391
1392
1393 }
1394
1395 if (shape.tagName == 'path') {
1396
1397 if (selectmode == 'controlpath')
1398 {
1399 var end='';
1400 if(data_path_close==true){end='z';}
1401
1402 var thispath='M'+setPoints[0]+' ';
1403 var maxcont=setPoints.length;
1404
1405 for(var conta=1;conta< maxcont;conta++){
1406 thispath+='L'+setPoints[conta]+' ';
1407
1408
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 else
1416 {
1417
1418 xpArray.push(toX);
1419 ypArray.push(toY);
1420
1421 var thispath=''+xpArray[1]+','+ypArray[1];
1422 var thispath1='';
1423 var thispath2='';
1424 var maxcont=xpArray.length;
1425
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);
1434
1435
1436
1437 /*
1438
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");
1445
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 }
1465
1466 shape.points.Value = thispath;
1467 */
1468
1469
1470
1471
1472 /*
1473
1474
1475 //this.renderer.move(this.selected, this.selectedBounds.x + deltaX, this.selectedBounds.y + deltaY);
1476 // shape.setAttributeNS(null,'transform', "translate("+(toX)+","+(toy)+")");
1477
1478
1479
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 }
1486
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') {}
1494
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 else
1509 {
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 }
1531
1532 $('someinfo').value=numpoints+ ' '+ numpoints%3;
1533 $('control_codebase').value=chain;
1534 setShape();
1535 };
1536
1537
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);
1549
1550 }
1551 shInfo.id =shape.getAttribute('id');
1552 shInfo.type = shape.tagName;
1553
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;
1563
1564 return shInfo;
1565 }
1566 else
1567 {
1568
1569 }
1570
1571
1572
1573 if (shape.hasAttributeNS(null,'transform')) {
1574 shInfo.transform = shape.getAttribute('transform');
1575 }else{
1576 shInfo.transform ='';
1577 }
1578
1579 if (shape.tagName =='defs')
1580 {
1581 //alert('dfasd');
1582 if(shape.getAttribute('id')==null || shape.getAttribute('id')=='')
1583 {
1584
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 }
1595
1596 if(shape.tagName == "text"){
1597
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.textContent
1603 shInfo.lineWidth = parseFloat(shape.getAttribute('stroke-width'))
1604
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;}
1612
1613 if(shape.tagName =='filter'){rendering=false;}
1614 if(shape.tagName =='feGaussianBlur'){rendering=false;}
1615
1616
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'){
1621
1622 shInfo.fillColor = shape.parentNode.getAttribute('fill');
1623 var mystyle= shape.parentNode.getAttribute('style');
1624 if(mystyle!= null && mystyle.indexOf('<![CDATA[')>=0)
1625 {
1626
1627 }
1628 else
1629 {
1630 if(mystyle!= null){
1631 //var estilo=shape.getAttribute('style');
1632 var data;
1633
1634 var estilo=generateJSON(mystyle);
1635 eval("data="+estilo);
1636 //var data=eval('"'+estilo+'"');
1637 //var data=estilo.evalJSON();
1638
1639 (data["font-size"])?shInfo.textSize=data["font-size"]:shInfo.textSize;
1640 (data["font-family"])?shInfo.textFamily=data["font-family"]:shInfo.textFamily;
1641
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;
1646
1647 }
1648
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'))
1656
1657 var mystyle= shape.getAttribute('style');
1658
1659 if(mystyle!= null && mystyle.indexOf('<![CDATA[')>=0)
1660 {
1661
1662 }
1663 else
1664 {
1665 // shInfo.style=shape.getAttribute('style');
1666
1667 if(mystyle!= null){
1668 //var estilo=shape.getAttribute('style');
1669 var data;
1670
1671 var estilo=generateJSON(mystyle);
1672 eval("data="+estilo);
1673 //var data=eval('"'+estilo+'"');
1674 //var data=estilo.evalJSON();
1675
1676 (data["font-size"])?shInfo.textSize=data["font-size"]:shInfo.textSize;
1677 (data["font-family"])?shInfo.textFamily=data["font-family"]:shInfo.textFamily;
1678
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;
1684
1685 //shInfo.fillColor=data.fill;
1686 //document.getElementById("someinfo").value +=data.fill+' ';//estilo ;//data['fill']+' ';//
1687 }
1688 }
1689 }
1690
1691
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 }
1713
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 {
1742
1743 }
1744 else
1745 {
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 }
1768
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 }
1783
1784 }
1785 else if (shape.tagName == 'path')
1786 {
1787 shInfo.points = shape.getAttribute('d');
1788 //shInfo.transform = shape.getAttribute('transform');
1789
1790 //alert(shInfo.transform);
1791 //document.forms[0].codebase.value=shape.getAttribute('d');
1792
1793 }
1794 else if (shape.tagName == 'pattern')
1795 {
1796
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');
1802
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 }
1809
1810 }
1811 else if (shape.tagName == 'image')
1812 {
1813
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');
1820
1821 }
1822 else if (shape.tagName == 'use')
1823 {
1824
1825 shInfo.href = shape.getAttribute('xlink:href');
1826
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');
1833
1834 }
1835
1836 return shInfo;
1837 }else{
1838 //do nothing if its the tracker
1839 }
1840
1841
1842
1843 };
1844
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;
1852
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 }
1863
1864 if (shape.hasAttributeNS(null,'transform')) {
1865 shInfo.transform = shape.getAttribute('transform');
1866 }else{
1867 shInfo.transform ='';
1868 }
1869
1870 if(shape.tagName == "text"){
1871
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.textContent
1877 shInfo.lineWidth = parseFloat(shape.getAttribute('stroke-width'))
1878
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'))
1893
1894 var mystyle= shape.getAttribute('style');
1895
1896 if(mystyle!= null && mystyle.indexOf('<![CDATA[')>=0)
1897 {
1898
1899 }
1900 else
1901 {
1902 // shInfo.style=shape.getAttribute('style');
1903
1904 if(mystyle!= null){
1905 //var estilo=shape.getAttribute('style');
1906 var data;
1907
1908 var estilo=generateJSON(mystyle);
1909 eval("data="+estilo);
1910 //var data=eval('"'+estilo+'"');
1911 //var data=estilo.evalJSON();
1912
1913 (data["font-size"])?shInfo.textSize=data["font-size"]:shInfo.textSize;
1914 (data["font-family"])?shInfo.textFamily=data["font-family"]:shInfo.textFamily;
1915
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 }
1925
1926
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 }
1948
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'));
1957
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 {
1966
1967 }
1968 else
1969 {
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 }
1978
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')
2000
2001 }
2002 else if (shape.tagName == 'path')
2003 {
2004 shInfo.points = shape.getAttribute('d');
2005 //shInfo.transform = shape.getAttribute('transform');
2006
2007 //alert(shInfo.transform);
2008 //document.forms[0].codebase.value=shape.getAttribute('d');
2009
2010 }
2011 else
2012
2013
2014 if (shape.tagName == 'image')
2015 {
2016
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');
2023
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');
2030
2031 }
2032 return shInfo;
2033 }else{
2034 //do nothing if its the tracker
2035 }
2036
2037
2038
2039 };
2040 SVGRenderer.prototype.info01 = function(shape)
2041 {
2042
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 }
2052
2053
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 // }
2062
2063
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) ;
2082
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 else
2096
2097 if (shape.tagName == 'path')
2098 {
2099 shInfo.d = shape.getAttribute('d');
2100 //shInfo.transform = shape.getAttribute('transform');
2101
2102 //alert(shInfo.transform);
2103 //document.forms[0].codebase.value=shape.getAttribute('d');
2104
2105 }
2106 else
2107
2108 if(shape.tagName == "text"){
2109
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.textContent
2115 shInfo.lineWidth = parseFloat(shape.getAttribute('stroke-width'))
2116
2117 //shInfo.text = shape.nodparseFloatue;
2118 }
2119 else
2120
2121 if (shape.tagName == 'image')
2122 {
2123
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');
2130
2131 }
2132
2133 return shInfo;
2134 }else{
2135 //do nothing if its the tracker
2136 }
2137
2138
2139 }
2140
2141
2142
2143
2144
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 //
2150
2151 if(shape.tagName == 'rect')
2152 {
2153 var box = shape.getBBox();
2154 var sdata=data.split(';');
2155
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+')');
2164
2165 //shape.nodparseFloatue=data;
2166 }
2167 else
2168 if(shape.tagName == 'text')
2169 {
2170 if(data.indexOf('<;>',0)==-1 )
2171 {
2172 shape.textContent = data;
2173 }
2174 else
2175 {
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 else
2184 if (shape.tagName == 'polyline')
2185 {
2186 shape.setAttributeNS(null,'points',data);
2187 }
2188 else
2189 if (shape.tagName == 'image')
2190 {
2191 //alert(data);
2192 if(data.indexOf(';',0)==-1 )
2193 {
2194 shape.setAttributeNS(xlinkNS,'href',data);
2195 }
2196 else
2197 {
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+')');
2207
2208
2209 }
2210
2211 }
2212 else
2213 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 else
2221 {
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])+')');
2227
2228
2229 }
2230 }
2231
2232
2233 }
2234 SVGRenderer.prototype.editShape = function(shape,data)
2235 {
2236 if(shape.tagName == 'text'){
2237 shape.textContent = data
2238 }else
2239 if (shape.tagName == 'polyline')
2240 {
2241 shape.setAttributeNS(null,'points',data);
2242 }
2243 else
2244
2245 if (shape.tagName == 'path')
2246 {
2247 shape.setAttributeNS(null, 'd', data);
2248
2249 }
2250
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 else
2259 shape.setAttributeNS(null, 'fill', 'none');
2260 }
2261 else if (cmd == 'linecolor') {
2262 if (value != '')
2263 shape.setAttributeNS(null, 'stroke', value);
2264 else
2265 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 else
2276 {
2277 shape.setAttributeNS(null, 'fill-opacity', parseFloat(value));
2278 }
2279
2280 }
2281 else if (cmd == 'lineopacity') {
2282
2283 shape.setAttributeNS(null, 'stroke-opacity', parseFloat(value));
2284
2285 }
2286
2287 }
2288 }
2289
2290
2291 SVGRenderer.prototype.queryCommand = function(shape, cmd)
2292 {
2293 var result = '';
2294
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 else
2311 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 else
2319 {
2320 shape.setAttributeNS(null, 'fill-opacity', parseFloat(value));
2321 }
2322
2323 }
2324 else if (cmd == 'lineopacity') {
2325
2326 shape.setAttributeNS(null, 'stroke-opacity', parseFloat(value));
2327
2328 }
2329
2330 }
2331
2332 return result;
2333 }
2334
2335 SVGRenderer.prototype.getProperties = function(shape)
2336 {
2337 var result = '';
2338
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 else
2350 {
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');
2360
2361 }
2362
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');
2371
2372 }
2373 else
2374 {
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');
2383
2384 }
2385
2386 result = shape.getAttributeNS(null, 'stroke-width');
2387 mestrokeColor.width = result;
2388
2389 result = shape.getAttributeNS(null, 'fill-opacity');
2390 mefillColor.opacity = result;
2391
2392 result = shape.getAttributeNS(null, 'stroke-opacity');
2393 mestrokeColor.opacity = result;
2394
2395 setProperties();
2396 }
2397 }
2398
2399
2400 SVGRenderer.prototype.showMultiSelect = function(iniX,iniY) {
2401 var tracker = document.getElementById('trackerMultiSelect');
2402 if (tracker) {
2403 this.remove(tracker);
2404 }
2405
2406 var coord=this.editor.viewInputxy;
2407 toX=parseFloat(coord[0]);
2408 toY=parseFloat(coord[1]);
2409
2410 tracker = document.createElementNS(svgNamespace, 'rect');
2411
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);
2419
2420 this.svgRoot.appendChild(tracker);
2421 }
2422
2423
2424 function mouseCoord()
2425 {
2426 var coord=this.editor.viewInputxy;
2427 coord[0]=parseFloat(coord[0]);
2428 coord[1]=parseFloat(coord[1]);
2429 return coord
2430 }
2431 /*
2432 function nodeHit(node)
2433 {
2434 node.addEventListener("mousemove", function(event) {nodeMove(node)}, false);
2435
2436 }
2437
2438 function nodeUp(node)
2439 {
2440 //node.stopObserving("mousemove");
2441 }
2442
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);
2452
2453 $('option_path_x').value=parseFloat(node.getAttributeNS(null,'x'))+2;
2454 $('option_path_y').value=parseFloat(node.getAttributeNS(null,'y'))+2;
2455
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");
2460
2461
2462 var result=mypath.replace(cad1, coord);
2463
2464
2465 $('control_codebase').value=result;
2466
2467 $('someinfo').value=precoord;
2468 setShape();
2469
2470
2471
2472 }
2473 */
2474
2475 var memoNode=null;
2476 var memoPrevControl=new Array();
2477 var memoNextControl=new Array();
2478
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;
2484
2485 $('option_path_x').value=newx;
2486 $('option_path_y').value=newy;
2487
2488 var cadx= newx;
2489 var cady= newy;
2490
2491 var coord=cadx+','+cady;
2492 var cad1=new RegExp(precoord,"g");
2493
2494
2495 var result=mypath.replace(cad1, coord);
2496
2497
2498 $('control_codebase').value=result;
2499
2500 $('someinfo').value=precoord;
2501 setShape();
2502
2503 }
2504
2505 function drawNodeControl(svg,numId){
2506
2507 var svgNamespace = 'http://www.w3.org/2000/svg';
2508 var color1='#0066ff';
2509 // if(parseInt(memoNode.id)==a){
2510
2511 var pointprev=memoPrevControl[numId].split(',');
2512
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);
2516
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);
2525
2526 var pointnext=memoNextControl[numId].split(',');
2527
2528
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);
2532
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);
2541
2542 //}
2543
2544
2545 }
2546
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');
2555
2556 /* var group = document.getElementById('editNodesPath');
2557 if (group)
2558 {
2559 this.remove(group);
2560 }
2561 */
2562
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);
2575
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);
2584
2585 //rect1.addEventListener("mouseout", function(event) {this.setAttributeNS(null, 'stroke-width', 0 );}, false);
2586
2587 svg.appendChild(rect1);
2588
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';
2593
2594 var numpoints=points.length-1;
2595 var recalls='';
2596 var re = /^[-]?\d*\.?\d*$/;
2597 for(var a=1;a<=numpoints;a++)
2598 {
2599
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 }
2609
2610 if(ini=='C')
2611 {
2612 recall=a+2;
2613 //color='#ffff00';
2614 }
2615
2616 }else
2617 {
2618 var end=points[a];
2619 var ini='';
2620 color='#ff00ff';
2621 if(a==recall)
2622 {
2623 color='#ffff00';
2624 }
2625 }
2626
2627
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(',');}
2638
2639
2640 //if (isNaN(valnum))
2641
2642 //if(ini=='C'){color='#ff00ff';}
2643
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);
2650
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);
2658
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);
2666
2667
2668 //rect1.addEventListener("mouseout", function(event) {this.setAttributeNS(null, 'stroke-width', 0 ); }, false);
2669
2670 svg.appendChild(rect1);
2671
2672 }
2673 var info='';
2674
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;
2681
2682
2683 //this.svgRoot.appendChild(svg);
2684
2685 return svg;
2686
2687 };
2688
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');
2696
2697 /* var group = document.getElementById('editNodesPath');
2698 if (group)
2699 {
2700 this.remove(group);
2701 }
2702 */
2703
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);
2716
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);
2725
2726 //rect1.addEventListener("mouseout", function(event) {this.setAttributeNS(null, 'stroke-width', 0 );}, false);
2727
2728 svg.appendChild(rect1);
2729
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';
2734
2735 var numpoints=points.length-1;
2736 for(var a=1;a<=numpoints;a++)
2737 {
2738
2739
2740
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(',');}
2751
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);
2757
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);
2765
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);
2773
2774
2775 //rect1.addEventListener("mouseout", function(event) {this.setAttributeNS(null, 'stroke-width', 0 ); }, false);
2776
2777 svg.appendChild(rect1);
2778
2779 }
2780 var info='';
2781
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;
2788
2789
2790 //this.svgRoot.appendChild(svg);
2791
2792 return svg;
2793
2794 };
2795 SVGRenderer.prototype.showTracker = function(shape,pathsEdit) {
2796
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,f
2803
2804 var widthLine=this.editor.unit;
2805
2806
2807
2808 //var thisTransform = { sx: s[0], r: shape.vRotate, t: shape.vTranslate };
2809 //if (currentTransform != null) alert(currentTransform.t);
2810
2811 if (shape.tagName == 'rect') {
2812
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;
2818
2819 }
2820
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 }
2851
2852
2853
2854 /* if (shape.getAttributeNS(null, 'transform') ) {
2855
2856
2857 shap=2; }else{
2858 }*/
2859 var tracker = document.getElementById('tracker');
2860 if (tracker) {
2861 this.remove(tracker);
2862 }
2863
2864 var svgNamespace = 'http://www.w3.org/2000/svg';
2865
2866 tracker = document.createElementNS(svgNamespace, 'g');
2867 tracker.setAttributeNS(null, 'id', 'tracker');
2868
2869 var controlPoints=null;
2870 if (shape.tagName == 'path') { shap=2;
2871
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;
2880
2881 //controlPoints=this.showNodesCurve(path,0);
2882 //controlPoints=this.showNodesCurve(path,1);
2883 controlPoints=this.showNodesCurve(path,2);
2884
2885
2886 /* controlPoints=this.showNodesCurve(path,1);
2887
2888 tracker.appendChild(controlPoints);
2889
2890 controlPoints=this.showNodesCurve(path,0);
2891
2892 tracker.appendChild(controlPoints);
2893 */
2894 }
2895
2896 var svg = this.container.ownerDocument.createElementNS(svgNamespace, 'g');
2897 svg.setAttributeNS(null, 'id', 'transformSquares');
2898
2899
2900 //var rect = document.createElementNS(svgNamespace, 'rect');
2901 var border = document.createElementNS(svgNamespace, 'path');
2902
2903 var trshape='translate (0,0) rotate(0) translate(0,0) ';
2904 var trshape_split=trshape.split(') ');
2905
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(') ');
2912
2913
2914 }
2915
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 //1
2921 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 //2
2925 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 //3
2929 //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 //4
2934 corners.push( createPoint(box.x + box.width, box.y, box.width, box.height) );
2935
2936 var max = createPoint(corners[0].x, corners[0].y);
2937 var min = createPoint(corners[0].x, corners[0].y);
2938
2939 // identify the new corner coordinates of the
2940 // fully transformed bounding box
2941 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 }
2957
2958
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 '));
2960
2961
2962 border.setAttributeNS(null, 'fill', 'none');
2963 border.setAttributeNS(null, 'stroke', '#cccccc');
2964 border.setAttributeNS(null, 'stroke-width', widthLine);
2965
2966 // createRect(min.x, min.y, max.x - min.x, max.y - min.y);
2967
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);
2976
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);
2985
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);
2992
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);
2999
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);
3006
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);
3013
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);
3020
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);
3027
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);
3034
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);
3043
3044 rect1.setAttributeNS(null, 'x', box.x - widthLine*15);
3045 rect1.setAttributeNS(null, 'y', box.y - widthLine*15);
3046
3047
3048 rect2.setAttributeNS(null, 'x', box.x + box.width +widthLine*5 );
3049 rect2.setAttributeNS(null, 'y', box.y - widthLine*15);
3050
3051 rect3.setAttributeNS(null, 'x', box.x + box.width + widthLine*5 );
3052 rect3.setAttributeNS(null, 'y', box.y + box.height + widthLine*5);
3053
3054 rect4.setAttributeNS(null, 'x', box.x - widthLine*15 );
3055 rect4.setAttributeNS(null, 'y', box.y + box.height + widthLine*5);
3056
3057
3058
3059 rectmid12.setAttributeNS(null, 'x', box.x + (box.width/2) - widthLine*5);
3060 rectmid12.setAttributeNS(null, 'y', box.y - widthLine*15);
3061
3062 rectmid23.setAttributeNS(null, 'x', box.x + box.width + widthLine*5 );
3063 rectmid23.setAttributeNS(null, 'y', box.y + (box.height/2) - widthLine*5);
3064
3065 rectmid34.setAttributeNS(null, 'x', box.x + (box.width/2) - widthLine*5 );
3066 rectmid34.setAttributeNS(null, 'y', box.y + box.height + widthLine*5);
3067
3068 rectmid41.setAttributeNS(null, 'x', box.x - widthLine*15 );
3069 rectmid41.setAttributeNS(null, 'y', box.y + (box.height/2) - widthLine*5);
3070
3071 svg.appendChild(border);
3072 var colorin="#ff0000";
3073 var colorout="#ffffff"
3074
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'
3079
3080
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'
3083
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);
3086
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);
3089
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);
3092
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);
3095
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);
3098
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);
3101
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);
3104
3105 //////////
3106 svg.setAttributeNS(null, 'transform',trshape);
3107
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);
3124
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);
3134
3135 }
3136
3137
3138 SVGRenderer.prototype.getMarkup = function() {
3139
3140 return this.container.innerHTML;
3141 }
3142
3143
3144 /////////////////////////////////
3145 var rotatexxx=0;
3146
3147 var scaleType='';
3148 var xrot=0;
3149 var yrot=0;
3150
3151 var point = {x:0, y:0, width: 0, height:0};
3152
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 }
3160
3161 ///////////////////////////////
3162
3163 SVGRenderer.prototype.restruct= function(shape)
3164 {
3165 //alert('end');
3166 //forceRedraw();
3167 //clearWorkspace();
3168 //document.getElementById('richdraw').style.cursor='default';
3169 };
3170
3171
3172
3173 SVGRenderer.prototype.transform = function() {
3174 //document.forms[0].code.value='Im tranforming';
3175 };
3176
3177 SVGRenderer.prototype.scaleShape = function(shape,previus, toX, toY) {
3178
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);
3187
3188 var d2p=dist2p(box.x,box.y,toX,toY);
3189
3190 var shareScale=box.width/d2p;
3191
3192 var trans_ShareScale='';
3193 var tx, ty, tw, yh;
3194
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;
3218
3219 }
3220 if(scaleType== 'n')
3221 {
3222 trans_ShareScale="1,"+shareScale;
3223
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;
3231
3232 }
3233 if( scaleType== 's')
3234 {
3235 trans_ShareScale="1,"+shareScale;
3236
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;
3244
3245 }
3246 }
3247 if(scaleType.length==2){
3248 if(scaleType== 'nw'){
3249 trans_ShareScale=shareScale+","+shareScale;
3250
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)
3253
3254 var ax= prevbox.x;
3255 var ay= prevbox.y;
3256 var bx= prevbox.x+prevbox.width;
3257 var by= prevbox.y+prevbox.height;
3258
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));
3263
3264 var section_a=ntrsccn2rb(ax,ay,bx,by,cx,cy,dx,dy);
3265 this.editor.log(angle_diagonal* 180 / Math.PI);
3266
3267 var tx= section_a[1];
3268 var ty= section_a[2];
3269
3270 var ax= section_a[1];
3271 var ay= section_a[2];
3272 var bx= 0;
3273 var by= section_a[2] ;
3274
3275 var cx=prevbox.x+prevbox.width;
3276 var cy= prevbox.y;
3277
3278 var dx= prevbox.x+prevbox.width;
3279 var dy= 0;
3280
3281
3282 var section_b=ntrsccn2rb(ax,ay,bx,by,cx,cy,dx,dy);
3283
3284 var distx=dist2p(section_a[1],section_a[2],section_b[1],section_b[2]);
3285
3286
3287
3288 var ax= section_a[1];
3289 var ay= section_a[2];
3290 var bx= section_a[1]
3291 var by= 0;
3292
3293 var cx= prevbox.x;
3294 var cy= prevbox.y+prevbox.height;
3295
3296 var dx= 0;
3297 var dy= prevbox.y+prevbox.height;
3298
3299
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]);
3302
3303
3304
3305
3306 if(distx<1){distx=1;}
3307
3308
3309 if(disty<1){disty=1;}
3310 //document.forms[0].code.value=distx+' '+disty;
3311 tw=distx;
3312 th=disty;
3313
3314
3315 }
3316
3317 //////////////////// SE
3318
3319 if( scaleType== 'se'){
3320 trans_ShareScale=shareScale+","+shareScale;
3321
3322
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)
3325
3326
3327
3328 var ax= prevbox.x;
3329 var ay= prevbox.y;
3330 var bx= prevbox.x+prevbox.width;
3331 var by= prevbox.y+prevbox.height;
3332
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));
3337
3338 var section_a=ntrsccn2rb(ax,ay,bx,by,cx,cy,dx,dy);
3339
3340
3341 var svgNamespace = 'http://www.w3.org/2000/svg';
3342 var tracker = document.getElementById('tracker');
3343
3344 //////////
3345 var tx= prevbox.x;
3346 var ty= prevbox.y;
3347
3348 var ax= section_a[1];
3349 var ay= section_a[2];
3350 var bx= 0;
3351 var by= section_a[2] ;
3352
3353 var cx=prevbox.x;
3354 var cy= prevbox.y;
3355
3356 var dx= prevbox.x;
3357 var dy= 0;
3358
3359
3360 var section_b=ntrsccn2rb(ax,ay,bx,by,cx,cy,dx,dy);
3361
3362 /////////////////
3363
3364
3365 var distx=dist2p(section_a[1],section_a[2],section_b[1],section_b[2]);
3366
3367
3368 var ax= section_a[1];
3369 var ay= section_a[2];
3370 var bx= section_a[1]
3371 var by= 0;
3372
3373 var cx= prevbox.x;
3374 var cy= prevbox.y;
3375
3376 var dx=0;
3377 var dy= prevbox.y;
3378
3379
3380 var section_c=ntrsccn2rb(ax,ay,bx,by,cx,cy,dx,dy);
3381
3382 ///////////////
3383
3384 var disty=dist2p(section_a[1],section_a[2],section_c[1],section_c[2]);
3385
3386
3387
3388 if(distx<1){distx=1;}
3389
3390
3391 if(disty<1){disty=1;}
3392
3393 tw=distx;
3394 th=disty;
3395
3396
3397 }
3398
3399 if(scaleType== 'ne'){
3400
3401 trans_ShareScale=shareScale+","+shareScale;
3402
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);
3405
3406
3407
3408
3409 var ax= prevbox.x;
3410 var ay= prevbox.y+prevbox.height;
3411 var bx= prevbox.x+prevbox.width;
3412 var by= prevbox.y;
3413
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));
3418
3419
3420 this.editor.log(angle_diagonal);
3421
3422
3423 var section_a=ntrsccn2rb(ax,ay,bx,by,cx,cy,dx,dy);
3424
3425
3426 var svgNamespace = 'http://www.w3.org/2000/svg';
3427 var tracker = document.getElementById('tracker');
3428
3429 //////////
3430 var tx= prevbox.x;
3431 var ty= section_a[2];
3432
3433 var ax= section_a[1];
3434 var ay= section_a[2];
3435 var bx= 0;
3436 var by= section_a[2] ;
3437
3438 var cx=prevbox.x;
3439 var cy= prevbox.y;
3440
3441 var dx= prevbox.x;
3442 var dy= 0;
3443
3444
3445 var section_b=ntrsccn2rb(ax,ay,bx,by,cx,cy,dx,dy);
3446
3447 /////////////////
3448
3449
3450 var distx=dist2p(section_a[1],section_a[2],section_b[1],section_b[2]);
3451
3452
3453 var ax= section_a[1];
3454 var ay= section_a[2];
3455 var bx= section_a[1];
3456 var by= 0;
3457
3458 var cx= prevbox.x;
3459 var cy= prevbox.y+prevbox.height;
3460
3461 var dx=0;
3462 var dy= prevbox.y+prevbox.height;
3463
3464
3465 var section_c=ntrsccn2rb(ax,ay,bx,by,cx,cy,dx,dy);
3466
3467 ///////////////
3468
3469 var disty=dist2p(section_a[1],section_a[2],section_c[1],section_c[2]);
3470
3471
3472
3473 if(distx<1){distx=1;}
3474
3475
3476 if(disty<1){disty=1;}
3477 //document.forms[0].code.value=distx+' '+disty;
3478 tw=distx;
3479 th=disty;
3480
3481
3482
3483
3484
3485 }
3486 if(scaleType== 'sw'){
3487 trans_ShareScale=shareScale+","+shareScale;
3488
3489
3490
3491
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);
3494
3495
3496
3497
3498 var ax= prevbox.x;
3499 var ay= prevbox.y+prevbox.height;
3500 var bx= prevbox.x+prevbox.width;
3501 var by= prevbox.y;
3502
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));
3507
3508
3509 this.editor.log(angle_diagonal);
3510
3511
3512 var section_a=ntrsccn2rb(ax,ay,bx,by,cx,cy,dx,dy);
3513
3514
3515 var svgNamespace = 'http://www.w3.org/2000/svg';
3516 var tracker = document.getElementById('tracker');
3517
3518 //////////
3519 var tx= section_a[1];
3520 var ty= prevbox.y;
3521
3522 var ax= section_a[1];
3523 var ay= section_a[2];
3524 var bx= 0;
3525 var by= section_a[2] ;
3526
3527 var cx=prevbox.x+prevbox.width;
3528 var cy= prevbox.y+prevbox.height;
3529
3530 var dx= prevbox.x+prevbox.width;
3531 var dy= 0;
3532
3533
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]);
3536
3537 /////////////////
3538 var ax= section_a[1];
3539 var ay= section_a[2];
3540 var bx= section_a[1];
3541 var by= 0;
3542
3543 var cx= prevbox.x;
3544 var cy= prevbox.y;
3545
3546 var dx=0;
3547 var dy= prevbox.y;
3548
3549
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 ///////////////
3553
3554
3555
3556 if(distx<1){distx=1;}
3557
3558
3559 if(disty<1){disty=1;}
3560 //document.forms[0].code.value=distx+' '+disty;
3561 tw=distx;
3562 th=disty;
3563
3564 }
3565
3566 }
3567
3568
3569
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);
3577
3578 //shape.nodparseFloatue=data;
3579 }
3580 else
3581 if(shape.tagName == 'text')
3582 {
3583
3584 var tsize=shape.getAttributeNS(null, 'font-size') ;
3585 // var d2p_center=dist2p(centerx,centery,toX,toY);
3586
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));
3594
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);}
3599
3600 //shape.setAttributeNS(null, 'font-size', mysize);
3601
3602
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);
3608
3609 //previus.setAttributeNS(null,'transform', "scale("+trans_ShareScale+")");
3610 shape.setAttributeNS(null, 'x', tx + 'px');
3611 shape.setAttributeNS(null, 'y', ty + 'px');
3612
3613 shape.setAttributeNS(null, 'textLength', parseInt(Math.round(tw)));
3614
3615 */
3616 }
3617 else
3618 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');
3625
3626
3627 }
3628 else
3629 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');
3635
3636 }
3637 else
3638 if (shape.tagName == 'polyline')
3639 {
3640
3641 }
3642 else
3643 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);
3649
3650 }
3651 else
3652 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;
3660
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;
3667
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;
3682
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;
3690
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 ////////////
3725
3726
3727 //xshe=left;
3728 //yshe=top;
3729
3730 path=path.replace(/, /g, ',');
3731 path=path.replace(/ ,/g, ',');
3732 var ps =path.split(" ")
3733 var pcc = "";
3734 var point =ps[0].split(",");
3735
3736
3737 var num0= parseFloat(point[0].substring(1));
3738 var num1= parseFloat(point[1]);
3739
3740
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){
3753
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}
3759
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='';
3773
3774 }
3775
3776
3777 if(isArc==true && contArc==2)
3778 {
3779 point[1]= point[1].toString() ;
3780 }
3781 else
3782 {
3783
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+' ';
3806
3807 }else{
3808 pcc+=ps[i]+' ';
3809 }
3810 }
3811
3812 shape.setAttributeNS(null,'d', pcc);
3813
3814
3815
3816 //////////////
3817 /*
3818 path=path.replace(/, /g, ',');
3819 path=path.replace(/ ,/g, ',');
3820 var ps =path.split(" ")
3821 var pcc = "";
3822
3823 var xinc=tx-prevbox.x;
3824 var yinc=ty-prevbox.y;
3825
3826 var re = /^[-]?\d*\.?\d*$/;
3827 for(var i = 0; i < ps.length; i++)
3828 {
3829 if(ps[i].indexOf(',')>0){
3830
3831 var point =ps[i].split(",");
3832 var char1=point[0].substring(0,1);
3833 point[1]= parseFloat(point[1]);
3834
3835 // var valnum =char1.charAt(0);
3836 //if (isNaN(valnum))
3837 if (!char1.match(re))
3838
3839 {
3840 var num0= parseFloat(point[0].substring(1));
3841 var text=char1;
3842 }else{
3843 var num0= parseFloat(point[0]);
3844 var text='';
3845
3846 }
3847 //num0+=dist*angx;
3848 //point[1]+=dist*angy;
3849 num0*=xscale;
3850 point[1]*=yscale;
3851
3852 // num0+=xinc;
3853 // point[1]+=yinc;
3854
3855
3856
3857 var cx=num0;
3858 var cy=point[1];
3859 pcc+=text+cx+','+cy+' ';
3860 }else{
3861 pcc+=ps[i]+' ';
3862 }
3863 }
3864
3865
3866
3867
3868
3869 // $('code').value=dist+' '+ ang+' '+'__'+x+'= '+left+'/ '+y+'= ' +top+'';
3870
3871 //shape.setAttributeNS(null,'transform', "rotate("+left+")");
3872
3873 // shape.setAttributeNS(null,'transform', "translate("+trax+","+tray+") rotate("+0+") scale(1,1)");
3874 shape.setAttributeNS(null,'d', pcc);
3875
3876
3877
3878
3879
3880
3881
3882 //document.forms[0].code.value='';
3883 //shape.setAttributeNS(null,'transform', "scale("+trans_ShareScale+")");
3884 */
3885
3886 }
3887
3888
3889
3890
3891
3892
3893
3894
3895
3896
3897
3898
3899
3900 //$('status').innerHTML=typeTransform+': '+shareScale;
3901
3902
3903 };
3904
3905
3906 SVGRenderer.prototype.rotateShape = function(shape, previus, toX, toY) {
3907
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;
3914
3915 var actual_angle=ang2v(centerx,centery,coord[0], coord[1]);
3916
3917 if(xrot<toX) { rotatexxx+=1;}else{rotatexxx-=1;}
3918 xrot=toX;
3919 yrot=toY;
3920
3921 var xtr=0;
3922 var ytr=0;
3923
3924 var box= shape.getBBox();
3925 var tr1x= box.x;
3926 var tr1y= box.y;
3927
3928
3929
3930 toX+=xtr;
3931 toY+=xtr;
3932
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);
3942
3943
3944 // matrix( a, b, c, d, e, f )
3945 // a c e
3946 // b d f
3947 // 0 0 1
3948 //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 1
3950 //T 1 ad-bc d -c -de+cf -b a be-df 0 0 1
3951
3952 //shape.setAttributeNS(null,'transform', "translate("+(-xshe)+","+(-yshe)+")");
3953
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))+")");
3960
3961
3962 //alert('[ ['+T.a+' '+T.c+' '+T.e+'] ['+T.b+' '+T.d+' '+T.f+'] [0 0 1] ]');
3963 //a,b,c,d,e,f
3964
3965 // shape.setAttributeNS(null,'transform', 'matrix('+T.a+', '+T.b+', '+ T.c+', '+ T.d+', '+ T.e+', '+ T.f+')' );
3966
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;
3974
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);
3981
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+')'
3987
3988 //++ shape.setAttributeNS(null,'transform',matrix);
3989
3990 //shape.setAttributeNS(null,'transform', "rotate("+rotatexxx+")");
3991 // shape.setAttributeNS(null,'transform', "translate("+(box.x)+","+(box.y)+")");
3992
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+")");
3998
3999 //shape.setAttributeNS(null, 'x', box.width/2 + 'px');
4000 //shape.setAttributeNS(null, 'y', box.height/2 + 'px');
4001
4002
4003
4004 //$('status').innerHTML = 'Mode: Draw '+pointshape +'_'+xsh +' '+ ysh+' '+trshape;
4005
4006 //$('status').innerHTML=typeTransform+': '+rotatexxx;
4007
4008 };
4009
4010
4011
4012 // x(u) = x0*(1-u) + x1*u = x0 + (x1-x0)*u
4013 // y(u) = y0*(1-u) + y1*u = y0 + (y1-y0)*u
4014
4015
4016
4017 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.childNodes
4028 //return this.svgRoot
4029 }
4030
4031 SVGRenderer.prototype.reflect = function(HorV) {
4032 var shape= c.selected;
4033 var box = shape.getBBox();
4034
4035 if(shape.tagName=="path")
4036 {
4037
4038 var tx=box.x+(box.width/2);
4039 var ty=box.y+(box.height/2);
4040
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 }
4049
4050
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(",");
4057
4058
4059 var num0= parseFloat(point[0].substring(1));
4060 var num1= parseFloat(point[1]);
4061
4062 var re = /^[-]?\d*\.?\d*$/;
4063 var axis = $V([tx,ty]);
4064
4065 for(var i = 0; i < ps.length; i++)
4066 {
4067 if(ps[i].indexOf(',')>0){
4068
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}
4074
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='';
4088
4089 }
4090
4091
4092 if(isArc==true && contArc==2)
4093 {
4094 point[1]= point[1].toString() ;
4095 }
4096 else
4097 {
4098
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+' ';
4121
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 else
4132 {
4133 if(shape.tagName=="text" || shape.tagName=="image" )
4134 {
4135
4136
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));
4151
4152
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));
4161
4162
4163 }
4164
4165 if(shape.hasAttributeNS(null, 'transform'))
4166 {
4167 tr=shape.getAttributeNS(null, 'transform');
4168 turn0=GetString(tr,'rotate(',')');
4169
4170 svg.setAttributeNS(null,'transform','rotate('+turn+'),scale('+scaleSim+')');
4171 svg.setAttributeNS(null,'x',parseFloat(x));
4172 svg.setAttributeNS(null,'y',parseFloat(y));
4173
4174 //svg.setAttributeNS(null,'transform','rotate('+turn+'),scale('+'');
4175 }else{
4176
4177 }
4178
4179
4180
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);
4189
4190 this.svgRoot.appendChild(svg);
4191 return svg;
4192 }
4193 else
4194 {
4195 if(shape.hasAttributeNS(null, 'transform'))
4196 {
4197
4198
4199 var tr=shape.getAttributeNS(null, 'transform');
4200 var turn0=GetString(tr, 'rotate(',',');
4201 turn0=parseFloat(turn0);
4202 //alert(turn0);
4203
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 else
4222 {
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+")");
4226
4227 }
4228 }
4229 }
4230 };
4231 //http://dev.opera.com/articles/view/svg-evolution-2-our-first-steps-into-sv/?page=3
4232 //http://www.w3.org/TR/2000/03/WD-SVG-20000303/exchange.html#StylingAttributes
4233 //http://www.xml.com/lpt/a/1390
4234
4235
4236
4237
4238
4239
4240
4241 //http://xml-utils.com/conferencia-svg.html#d0e527
4242 //http://www.xml.com/lpt/a/1321
4243 //http://phrogz.net/objjob/object.asp?id=101
4244 //http://admisource.gouv.fr/plugins/scmcvs/cvsweb.php/Cassini-ihm/js-yosemite/mapApp.js?rev=1.1;cvsroot=cassini
4245 //http://groups.google.com/group/prototype-graphic/msg/0547c0caea8869c6
4246 //http://sylvester.jcoglan.com/