annotate onlypaths/js/vmlrenderer_mini.js @ 61:14271eedf004 laserkard

[svn r62] saving for transference to cd
author rlm
date Fri, 19 Mar 2010 07:27:37 -0400
parents 26c2b3ad21c7
children
rev   line source
rlm@46 1 /*----------------------------------------------------------------------------
rlm@46 2 VMLRENDERER 1.0
rlm@46 3 VML Renderer For RichDraw
rlm@46 4 -----------------------------------------------------------------------------
rlm@46 5 Created by Mark Finkle (mark.finkle@gmail.com)
rlm@46 6 Implementation of VML based renderer.
rlm@46 7 -----------------------------------------------------------------------------
rlm@46 8 Copyright (c) 2006 Mark Finkle
rlm@46 9
rlm@46 10 This program is free software; you can redistribute it and/or modify it
rlm@46 11 under the terms of the MIT License.
rlm@46 12
rlm@46 13 Permission is hereby granted, free of charge, to any person obtaining a
rlm@46 14 copy of this software and associated documentation files (the "Software"),
rlm@46 15 to deal in the Software without restriction, including without limitation
rlm@46 16 the rights to use, copy, modify, merge, publish, distribute, sublicense,
rlm@46 17 and/or sell copies of the Software, and to permit persons to whom the
rlm@46 18 Software is furnished to do so, subject to the following conditions:
rlm@46 19 The above copyright notice and this permission notice shall be included in
rlm@46 20 all copies or substantial portions of the Software.
rlm@46 21
rlm@46 22 THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
rlm@46 23 IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
rlm@46 24 FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
rlm@46 25 AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
rlm@46 26 LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
rlm@46 27 FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
rlm@46 28 DEALINGS IN THE SOFTWARE.
rlm@46 29 -----------------------------------------------------------------------------
rlm@46 30 Dependencies:
rlm@46 31 History:
rlm@46 32 2006-04-05 | Created
rlm@46 33 --------------------------------------------------------------------------*/
rlm@46 34
rlm@46 35
rlm@46 36
rlm@46 37 function VMLRenderer() {
rlm@46 38 this.base = AbstractRenderer;
rlm@46 39 }
rlm@46 40
rlm@46 41
rlm@46 42 VMLRenderer.prototype = new AbstractRenderer;
rlm@46 43
rlm@46 44
rlm@46 45 VMLRenderer.prototype.init = function(elem)
rlm@46 46 {
rlm@46 47 this.container = elem;
rlm@46 48 // this.container.style.overflow = 'hidden';
rlm@46 49 this.container.unselectable = "on";
rlm@46 50 // Add VML includes and namespace
rlm@46 51 elem.ownerDocument.namespaces.add("v", "urn:schemas-microsoft-com:vml");
rlm@46 52 var style = elem.ownerDocument.createStyleSheet();
rlm@46 53 style.addRule('v\\:*', "behavior: url(#default#VML); display:inline-block");
rlm@46 54 //NOT VML biewBox
rlm@46 55 //http://blogs.msdn.com/ie/archive/2008/03/18/webbrowser-control-rendering-modes-in-ie8.aspx
rlm@46 56 }
rlm@46 57
rlm@46 58 VMLRenderer.prototype.view = function(left,top,width,height,viewBox) {
rlm@46 59 if(mode=='preview')
rlm@46 60 {
rlm@46 61
rlm@46 62 var tokens = viewBox.split(' ');
rlm@46 63 var prx=100;
rlm@46 64 this.container.style.top =(parseInt(document.getElementById('FRONT').style.height)-height)/2+'px'
rlm@46 65 this.container.style.left =(parseInt(document.getElementById('FRONT').style.width)-width)/2+'px'
rlm@46 66
rlm@46 67 this.container.style.width = width;//document.getElementById('FRONT').style.width;
rlm@46 68 this.container.style.height =height;//document.getElementById('FRONT').style.height;
rlm@46 69
rlm@46 70
rlm@46 71 canvasLeft = left;
rlm@46 72 canvasTop = top;
rlm@46 73 canvasWidth = width;
rlm@46 74 canvasHeight = height;
rlm@46 75 zoominit = viewBox;
rlm@46 76 zoominit1 = viewBox;
rlm@46 77 zoominit2 = viewBox;
rlm@46 78 var tokens = zoominit.split(' ');
rlm@46 79 proporx = width/tokens[2];
rlm@46 80 propory = height/tokens[3];
rlm@46 81 /* var x=parseFloat(tokens[0])-prx;
rlm@46 82 var y=parseFloat(tokens[1])-prx;
rlm@46 83 var w=parseFloat(tokens[2])+prx;
rlm@46 84 var h=parseFloat(tokens[3])+prx;
rlm@46 85 workspace= x+''+y+''+w+''+h;
rlm@46 86 //zoominit = workspace;
rlm@46 87 */
rlm@46 88 //VMLviewBox('',left,top,width,height)
rlm@46 89 }
rlm@46 90 else
rlm@46 91 {
rlm@46 92
rlm@46 93 //
rlm@46 94 this.container.style.top =0+'px';
rlm@46 95
rlm@46 96 var tokens = viewBox.split(' ');
rlm@46 97 proporImage= (parseFloat(tokens[2])-parseFloat(tokens[0]))/(parseFloat(tokens[3])-parseFloat(tokens[1]));
rlm@46 98 var marginx=(parseInt(document.getElementById('FRONT').style.width)-(parseFloat(tokens[2])-parseFloat(tokens[0])))/2;
rlm@46 99 var marginy=(parseInt(document.getElementById('FRONT').style.height)-(parseFloat(tokens[3])-parseFloat(tokens[1])))/2;
rlm@46 100 var x=(parseFloat(tokens[0])-marginx);
rlm@46 101 var y=(parseFloat(tokens[1])-marginy);
rlm@46 102 var w=(parseFloat(tokens[2])+marginx*2);
rlm@46 103 var h=(parseFloat(tokens[3])+marginy*2);
rlm@46 104 //alert(tokens[3]+' '+tokens[1]+' / '+(parseFloat(tokens[3])-parseFloat(tokens[1]))+' '+parseInt(document.getElementById('FRONT').style.height)+' /'+h+' '+height);
rlm@46 105 //if(h>=parseInt(document.getElementById('FRONT').style.height)){h=parseInt(document.getElementById('FRONT').style.height);}
rlm@46 106 //if(h>=parseInt(document.getElementById('FRONT').style.height)){y=0;h=600;}//parseInt(document.getElementById('FRONT').style.height)*2}
rlm@46 107 //zoominit = x+' '+y+' '+w+' '+h;
rlm@46 108 canvasLeft = 0;
rlm@46 109 canvasTop = 0;
rlm@46 110 canvasWidth = w;
rlm@46 111 canvasHeight = h;
rlm@46 112 //proporx = w/tokens[2];
rlm@46 113 //propory = h/tokens[3];
rlm@46 114
rlm@46 115 this.container.style.left =canvasLeft+'px'
rlm@46 116 this.container.style.top =canvasTop+'px'
rlm@46 117
rlm@46 118 this.container.style.width = canvasWidth;//document.getElementById('FRONT').style.width;
rlm@46 119 this.container.style.height =canvasHeight;//document.getElementById('FRONT').style.height;
rlm@46 120 zoominit1 = canvasLeft+' '+canvasTop+' '+canvasWidth+' '+canvasHeight;
rlm@46 121 zoominit2= x+' '+y+' '+w+' '+h;
rlm@46 122 //VMLviewBox('',x,canvasTop,w,h)
rlm@46 123 //this.rectCanvas(x,y,w,h,zoominit)
rlm@46 124 // this.rectCanvas(x,y,canvasWidth,canvasHeight,zoominit2)
rlm@46 125 // zoominit = viewBox;
rlm@46 126 }
rlm@46 127 }
rlm@46 128
rlm@46 129 VMLRenderer.prototype.zoomFrame = function(zoom){
rlm@46 130 myOPF.viewBox=zoom;
rlm@46 131 load(myOPF,c);
rlm@46 132 document.getElementById("source").value=myOPF.toJSONString();
rlm@46 133 }
rlm@46 134 VMLRenderer.prototype.rectDoc = function(viewBox) {
rlm@46 135 var tokens2 = zoominit2.split(' ');
rlm@46 136 var tokens = zoominit.split(' ');
rlm@46 137 var shape = document.getElementById('rectDoc');
rlm@46 138 if (shape) {
rlm@46 139 this.remove(shape);
rlm@46 140 }
rlm@46 141 var rect=this.container.ownerDocument.createElement('v:rect');
rlm@46 142 rect.id='rectDoc';
rlm@46 143 rect.style.position = 'absolute';
rlm@46 144 rect.style.left =-parseInt(tokens2[0]);
rlm@46 145 rect.style.top = -parseInt(tokens2[1]);
rlm@46 146 rect.style.width = parseInt(tokens[2]);
rlm@46 147 rect.style.height = parseInt(tokens[3]);
rlm@46 148 rect.setAttribute('filled', 'false');
rlm@46 149 rect.setAttribute('stroked', 'true');
rlm@46 150 rect.setAttribute('strokeweight', 2);
rlm@46 151 rect.setAttribute('strokecolor',"#ff0000");
rlm@46 152 this.container.appendChild(rect);
rlm@46 153 //this.container.insertBefore(rect, this.container.firstChild );
rlm@46 154 //alert(docx+' '+docy+' '+docw+' '+doch+' '+viewBox)
rlm@46 155 }
rlm@46 156 VMLRenderer.prototype.rectCanvas = function(docx,docy,docw,doch,viewBox) {
rlm@46 157
rlm@46 158 var tokens = zoominit1.split(' ');
rlm@46 159 var shape = document.getElementById('rectCanvas');
rlm@46 160 if (shape) {
rlm@46 161 this.remove(shape);
rlm@46 162 }
rlm@46 163
rlm@46 164 var rect=this.container.ownerDocument.createElement('v:rect');
rlm@46 165 rect.id='rectBackground';
rlm@46 166 rect.style.position = 'absolute';
rlm@46 167 rect.style.left = tokens[0] ;
rlm@46 168 rect.style.top =tokens[1];
rlm@46 169 rect.style.width=tokens[2];
rlm@46 170 rect.style.height= tokens[3] ;
rlm@46 171 rect.setAttribute('filled', 'true');
rlm@46 172 rect.setAttribute('fillcolor',"#666666");
rlm@46 173 rect.setAttribute('stroked', 'false');
rlm@46 174
rlm@46 175 this.container.insertBefore(rect, this.container.firstChild );
rlm@46 176
rlm@46 177 }
rlm@46 178
rlm@46 179 VMLRenderer.prototype.removeAll = function(){
rlm@46 180 while (this.container.hasChildNodes()) {
rlm@46 181 this.container.removeChild(this.container.firstChild);
rlm@46 182 }
rlm@46 183 }
rlm@46 184
rlm@46 185 function VMLviewBox(container,left,top,width,height){
rlm@46 186 var tokens = zoominit2.split(' ');
rlm@46 187 left *= proporx;
rlm@46 188 left = left - parseFloat(tokens[0]);
rlm@46 189 top *= propory;
rlm@46 190 top = top - parseFloat(tokens[1]);
rlm@46 191 width *= proporx;
rlm@46 192 height *= propory;
rlm@46 193
rlm@46 194 return {"x":parseFloat(Math.round(left)), "y":parseFloat(Math.round(top)), "w":parseFloat(Math.round(width)), "h":parseFloat(Math.round(height))};
rlm@46 195 }
rlm@46 196 function VMLviewBox1(container,left,top,width,height){
rlm@46 197 var tokens = zoominit2.split(' ');
rlm@46 198 left *= proporx;
rlm@46 199 left = left - parseFloat(tokens[0]);
rlm@46 200 top *= propory;
rlm@46 201 top = top - parseFloat(tokens[1]);
rlm@46 202 width *= proporx;
rlm@46 203 height *= propory;
rlm@46 204
rlm@46 205 return {"x":parseFloat(Math.round(left)), "y":parseFloat(Math.round(top)), "w":parseFloat(Math.round(width)), "h":parseFloat(Math.round(height))};
rlm@46 206 }
rlm@46 207
rlm@46 208 VMLRenderer.prototype.create = function(shape, fillColor, lineColor, fillOpac, lineOpac, lineWidth, left, top, width, height, textMessaje, textSize, textFamily, imageHref, points, transform, parent) {
rlm@46 209 var tokens = zoominit2.split(' ');
rlm@46 210 var zoom=VMLviewBox(this.container,left,top,width,height);
rlm@46 211 left=zoom.x;
rlm@46 212 top=zoom.y;
rlm@46 213 width=zoom.w;
rlm@46 214 height=zoom.h;
rlm@46 215
rlm@46 216 var zoom=VMLviewBox(this.container,left,top,textSize,textSize);
rlm@46 217 if(zoom.w<1){zoom.w=1}
rlm@46 218 textSize=zoom.h;
rlm@46 219
rlm@46 220 var zoom=VMLviewBox(this.container,left,top,lineWidth*2/3,lineWidth);
rlm@46 221 if(zoom.w<1){zoom.w=1}
rlm@46 222 lineWidth=zoom.w;
rlm@46 223
rlm@46 224
rlm@46 225 var vml;
rlm@46 226
rlm@46 227 var shap=1;
rlm@46 228 if (shape == 'rect') {
rlm@46 229 vml = this.container.ownerDocument.createElement('v:rect');
rlm@46 230 vml.style.position = 'absolute';
rlm@46 231 vml.style.left = left;
rlm@46 232 vml.style.top = top;
rlm@46 233 vml.style.width = width;
rlm@46 234 vml.style.height = height;
rlm@46 235 }
rlm@46 236 else if (shape == 'roundrect') {
rlm@46 237 vml = this.container.ownerDocument.createElement('v:roundrect');
rlm@46 238 vml.style.position = 'absolute';
rlm@46 239 vml.style.left = left;
rlm@46 240 vml.style.top = top;
rlm@46 241 vml.style.width = width;
rlm@46 242 vml.style.height = height;
rlm@46 243 vml.setAttribute('arcsize', '20%');
rlm@46 244
rlm@46 245 }
rlm@46 246 else if (shape == 'ellipse') {
rlm@46 247 vml = this.container.ownerDocument.createElement('v:oval');
rlm@46 248 vml.style.left = left;
rlm@46 249 vml.style.top = top;
rlm@46 250 vml.style.width = width;
rlm@46 251 vml.style.height = height;
rlm@46 252 vml.style.position = 'absolute';
rlm@46 253 }
rlm@46 254 else if (shape == 'line') {
rlm@46 255 vml = this.container.ownerDocument.createElement('v:line');
rlm@46 256 vml.style.position = 'absolute';
rlm@46 257 vml.setAttribute('from', left-80 + 'px,' + top + 'px');
rlm@46 258 vml.setAttribute('to', (left-80+width) + 'px,' + (top+height) + 'px');
rlm@46 259
rlm@46 260 }
rlm@46 261 else if (shape == 'polyline') {
rlm@46 262 vml = this.container.ownerDocument.createElement('v:polyline');
rlm@46 263 vml.setAttribute("points", points);
rlm@46 264
rlm@46 265 }
rlm@46 266 else if (shape == 'path')
rlm@46 267 {
rlm@46 268 vml = this.container.ownerDocument.createElement('v:shape');
rlm@46 269 var tokens = zoominit1.split(' ');
rlm@46 270 var tokens1 = zoominit1.split(' ');
rlm@46 271 var tokens2 = zoominit2.split(' ');
rlm@46 272 tokens[0]=0;
rlm@46 273 tokens[1]=0;
rlm@46 274 var path=points;
rlm@46 275 path=path.replace(/, /g, ',');
rlm@46 276 path=path.replace(/ ,/g, ',');
rlm@46 277 var ps =path.split(" ")
rlm@46 278 var pcc = "";
rlm@46 279
rlm@46 280 var re = /^[-]?\d*\.?\d*$/;
rlm@46 281 var contArc=0;
rlm@46 282 var isArc=false;
rlm@46 283 for(var i = 0; i < ps.length; i++)
rlm@46 284 {
rlm@46 285 if(ps[i].indexOf(',')>0){
rlm@46 286
rlm@46 287 var point =ps[i].split(",");
rlm@46 288 var char1=point[0].substring(0,1);
rlm@46 289
rlm@46 290 if (!char1.match(re))
rlm@46 291 {
rlm@46 292 var num0= parseFloat(point[0].substring(1));
rlm@46 293 var zoom=VMLviewBox(this.container,num0+(parseInt(tokens2[0])*proporx),0,parseInt(tokens2[2]),parseInt(tokens2[3]));
rlm@46 294 num0=zoom.x;
rlm@46 295
rlm@46 296 var text=char1;
rlm@46 297 }else{
rlm@46 298 var num0= parseFloat(point[0]);
rlm@46 299 var zoom=VMLviewBox(this.container,num0+(parseInt(tokens2[0])*proporx),0,parseInt(tokens2[2]),parseInt(tokens2[3]));
rlm@46 300 num0=zoom.x;
rlm@46 301
rlm@46 302 }
rlm@46 303 point[1]= parseFloat(point[1]);
rlm@46 304 var zoom=VMLviewBox(this.container,0,point[1],parseInt(tokens2[2]),parseInt(tokens2[3]));
rlm@46 305 point[1]=zoom.y;
rlm@46 306 var cx=num0;
rlm@46 307 var cy=point[1]+parseInt(tokens2[1]);
rlm@46 308 pcc+=text+cx+','+cy+' ';
rlm@46 309 }
rlm@46 310 else
rlm@46 311 {
rlm@46 312 pcc+=ps[i]+' ';
rlm@46 313 }
rlm@46 314
rlm@46 315 }
rlm@46 316 ////////////////////
rlm@46 317 var thispath=pcc;
rlm@46 318 thispath=thispath.replace(/M/g,'m');
rlm@46 319 thispath=thispath.replace(/C/g,'c');
rlm@46 320 thispath=thispath.replace(/L/g,'l');
rlm@46 321 thispath=thispath.replace(/z/g,'x');
rlm@46 322
rlm@46 323 //document.getElementById('source').value=points+'\r\n'+thispath +'\r\n'+'________'+'\r\n'
rlm@46 324 var zoom=VMLviewBox(this.container,tokens[0],tokens[1],tokens[2],tokens[3]);
rlm@46 325
rlm@46 326 vml.style.position="absolute";
rlm@46 327 vml.style.width= zoom.w+"px";
rlm@46 328 vml.style.height=zoom.h+"px";
rlm@46 329 vml.style.left=zoom.x+"px";
rlm@46 330 vml.style.top=zoom.y+"px";
rlm@46 331 vml.setAttribute('coordsize', zoom.w+','+zoom.h);
rlm@46 332
rlm@46 333 var path01 = this.container.ownerDocument.createElement('v:path');
rlm@46 334 path01.setAttribute("v", thispath+' e');
rlm@46 335
rlm@46 336
rlm@46 337
rlm@46 338 vml.appendChild(path01)
rlm@46 339
rlm@46 340 }
rlm@46 341
rlm@46 342 else if (shape == 'controlpath')
rlm@46 343 {
rlm@46 344
rlm@46 345 vml = this.container.ownerDocument.createElement('v:shape');
rlm@46 346 vml.style.position="absolute";
rlm@46 347 vml.style.width= 700+"px";
rlm@46 348 vml.style.height=500+"px";
rlm@46 349 vml.style.left=left+"px";
rlm@46 350 vml.style.top=top+"px";
rlm@46 351 vml.setAttribute('coordsize', '700,500');
rlm@46 352
rlm@46 353 var path01 = this.container.ownerDocument.createElement('v:path');
rlm@46 354 path01.setAttribute('v', 'm '+left+','+top+' c'+(left+1)+','+(top+1)+' e ');
rlm@46 355
rlm@46 356 vml.appendChild(path01)
rlm@46 357 }
rlm@46 358 else if (shape == 'image') {
rlm@46 359 var data =imageHref;//document.forms[0].option_text_message.value;
rlm@46 360 vml = this.container.ownerDocument.createElement('v:image');
rlm@46 361 vml.setAttribute('src',imageHref);
rlm@46 362 vml.style.position="absolute";
rlm@46 363 vml.style.width=width+"px";
rlm@46 364 vml.style.height=height+"px";
rlm@46 365 vml.style.left=left+"px";
rlm@46 366 vml.style.top=top+"px";
rlm@46 367 vml.style.margin=0+"px";
rlm@46 368 vml.style.padding=0+"px";
rlm@46 369 if (fillColor != '' || fillColor != 'none') {
rlm@46 370 vml.setAttribute('filled', 'false');
rlm@46 371 vml.setAttribute('fillcolor', fillColor);
rlm@46 372 }
rlm@46 373 else {
rlm@46 374 vml.setAttribute('filled', 'false');
rlm@46 375 }
rlm@46 376 vml.setAttribute('strokeweight','0px');// parseFloat(lineWidth)+'px');
rlm@46 377 vml.setAttribute('stroked', 'false');
rlm@46 378 vml.setAttribute('strokecolor','#000000');//lineColor);
rlm@46 379
rlm@46 380
rlm@46 381 }
rlm@46 382
rlm@46 383 else if (shape == 'text')
rlm@46 384 {
rlm@46 385
rlm@46 386 var data =textMessaje;
rlm@46 387 vml = this.container.ownerDocument.createElement('v:shape');
rlm@46 388 vml.style.position="absolute";
rlm@46 389 //vml.setAttribute('coordorigin',left+', '+top);
rlm@46 390 //vml.style.coorsize= '';
rlm@46 391 coordorigin="0, 0"
rlm@46 392 vml.style.width= textSize+'px';//tokens[2]+'px'
rlm@46 393 vml.style.height=textSize+'px';
rlm@46 394 vml.style.left=(left+"px");
rlm@46 395 vml.style.top=(top-(textSize*1/4)+"px");
rlm@46 396 vml.style.margin=0+"px";
rlm@46 397 vml.style.padding=0+"px";
rlm@46 398 vml.setAttribute('path','m '+0+' '+0+' r '+(textSize*data.length)+' '+0+' e');
rlm@46 399 var textPathObj = this.container.ownerDocument.createElement("v:textpath");
rlm@46 400 textPathObj.setAttribute('string', data);
rlm@46 401 textPathObj.setAttribute('fitshape','false');
rlm@46 402 textPathObj.setAttribute('trim', 'false');
rlm@46 403 textPathObj.setAttribute('fitpath', 'false');
rlm@46 404 textPathObj.setAttribute('on','true');
rlm@46 405 textPathObj.style.fontFamily=textFamily;
rlm@46 406 textPathObj.style.fontSize=textSize+'px';
rlm@46 407 textPathObj.setAttribute('vTextKern','true');
rlm@46 408 textPathObj.setAttribute('text-align','center');
rlm@46 409
rlm@46 410 var pathObj = this.container.ownerDocument.createElement("v:path");
rlm@46 411 pathObj.setAttribute('textpathok', 'true');
rlm@46 412 vml.appendChild(textPathObj);
rlm@46 413 vml.appendChild(pathObj);
rlm@46 414
rlm@46 415
rlm@46 416 }
rlm@46 417
rlm@46 418
rlm@46 419
rlm@46 420 else if (shape == 'texto')
rlm@46 421 {
rlm@46 422 vml = this.container.ownerDocument.createElement('v:shape');
rlm@46 423 vml.style.position="absolute";
rlm@46 424
rlm@46 425 vml.style.coordsize=1000+', '+1000;
rlm@46 426 vml.style.width= 1000;
rlm@46 427 vml.style.height=1000;
rlm@46 428 vml.style.left=left;
rlm@46 429 vml.style.top=top-parseFloat(textSize);
rlm@46 430
rlm@46 431 vml.style.padding=0;
rlm@46 432 var textBox = this.container.ownerDocument.createElement("v:textbox");
rlm@46 433 textBox.setAttribute('mso-rotate-with-shape',true)
rlm@46 434 var divtext = this.container.ownerDocument.createElement("div");
rlm@46 435 divtext.style.coordorigin=0+', '+(0);
rlm@46 436 divtext.style.margin=0;
rlm@46 437 divtext.style.fontFamily=textFamily;
rlm@46 438 divtext.style.margin=0;
rlm@46 439 divtext.style.padding=0;
rlm@46 440 divtext.style.vRotateLetters=true;
rlm@46 441 divtext.style.fontSize=parseFloat(textSize);
rlm@46 442
rlm@46 443
rlm@46 444
rlm@46 445
rlm@46 446
rlm@46 447
rlm@46 448 divtext.style.color=fillColor;
rlm@46 449
rlm@46 450
rlm@46 451
rlm@46 452
rlm@46 453
rlm@46 454 //divtext.setAttribute('v-rotate-letters','true');
rlm@46 455 if(transform.indexOf('rotate')>=0)
rlm@46 456 {
rlm@46 457
rlm@46 458 myRotate1=transform.split('rotate(');
rlm@46 459 myRotate2=myRotate1[1].split(')');
rlm@46 460 myRotate3=myRotate2[0].split(',');
rlm@46 461
rlm@46 462 //divtext.setAttribute('mso-rotate',myRotate3[0]);
rlm@46 463 //textBox.style.msoRotate= myRotate3[0];
rlm@46 464 //textBox.style.centerX=myRotate3[1];
rlm@46 465 //textBox.style.centerY=myRotate3[2];
rlm@46 466 //vml.style.rotation= myRotate3[0];
rlm@46 467 //vml.style.centerX=myRotate3[1];
rlm@46 468 //vml.style.centerY=myRotate3[2];
rlm@46 469 vml.setAttribute('rotation',myRotate3[0]+'Deg');
rlm@46 470 }
rlm@46 471
rlm@46 472 divtext.innerHTML=textMessaje;
rlm@46 473 textBox.appendChild(divtext);
rlm@46 474
rlm@46 475 vml.appendChild(textBox);
rlm@46 476
rlm@46 477 }
rlm@46 478 else if (shape == 'group') {
rlm@46 479 vml = this.container.ownerDocument.createElement('v:group');
rlm@46 480 vml.style.left=left+"px";
rlm@46 481 vml.style.top=top+"px";
rlm@46 482 }
rlm@46 483
rlm@46 484 if(shape == 'zoom')
rlm@46 485 {
rlm@46 486
rlm@46 487 }else
rlm@46 488 {
rlm@46 489 if(transform.indexOf('rotate')>=0)
rlm@46 490 {
rlm@46 491 myRotate1=transform.split('rotate(');
rlm@46 492 myRotate2=myRotate1[1].split(')');
rlm@46 493 myRotate3=myRotate2[0].split(',');
rlm@46 494
rlm@46 495 vml.style.rotation= myRotate3[0]+'Deg';
rlm@46 496 vml.style.centerX=myRotate3[1];
rlm@46 497 vml.style.centerY=myRotate3[2];
rlm@46 498
rlm@46 499 }
rlm@46 500
rlm@46 501 if(shape != 'image' )
rlm@46 502 {
rlm@46 503
rlm@46 504 if (fillColor != '' || fillColor != 'none')
rlm@46 505 {
rlm@46 506 vml.setAttribute('filled', 'true');
rlm@46 507 vml.setAttribute('fillcolor', fillColor);
rlm@46 508
rlm@46 509 }
rlm@46 510 else
rlm@46 511 {
rlm@46 512 vml.setAttribute('filled', 'false');
rlm@46 513 }
rlm@46 514
rlm@46 515
rlm@46 516 if(lineWidth==0 || lineWidth=='none' || lineColor== 'none' )
rlm@46 517 {
rlm@46 518 vml.setAttribute('stroked', 'false');
rlm@46 519 }
rlm@46 520 else
rlm@46 521 {
rlm@46 522
rlm@46 523 vml.setAttribute('stroked', 'true');
rlm@46 524 vml.setAttribute('strokecolor', lineColor);
rlm@46 525 vml.setAttribute('strokeweight', lineWidth);
rlm@46 526 var stroke = this.container.ownerDocument.createElement('v:stroke');
rlm@46 527 stroke.setAttribute("opacity", parseFloat(lineOpac));
rlm@46 528 vml.appendChild(stroke);
rlm@46 529 }
rlm@46 530
rlm@46 531 if (fillOpac != '')
rlm@46 532 {
rlm@46 533 if (fillOpac == 'none' || fillColor=='none'){fillOpac=0;}
rlm@46 534 var fill = this.container.ownerDocument.createElement('v:fill');
rlm@46 535 fill.setAttribute("opacity",parseFloat(fillOpac));
rlm@46 536 //alert(fillOpac)
rlm@46 537 vml.appendChild(fill);
rlm@46 538 }
rlm@46 539 }
rlm@46 540 }
rlm@46 541 if(parent==''){
rlm@46 542 this.container.appendChild(vml);
rlm@46 543 }else{
rlm@46 544 var parentShape = document.getElementById(parent);
rlm@46 545 parentShape.appendChild(vml);
rlm@46 546 }
rlm@46 547 //var parentDoc = document.getElementById('mydraw');
rlm@46 548 //parentDoc.appendChild(vml);
rlm@46 549 return vml;
rlm@46 550 };
rlm@46 551
rlm@46 552
rlm@46 553 VMLRenderer.prototype.zoom = function(clicx,clicy)
rlm@46 554 {
rlm@46 555 }
rlm@46 556
rlm@46 557 VMLRenderer.prototype.datacreate = function(fillColor, lineColor, fillOpac, lineOpac, lineWidth, left, top, width, height, textMessaje, textSize, textFamily, imageHref, transform)
rlm@46 558 {
rlm@46 559 }
rlm@46 560
rlm@46 561 VMLRenderer.prototype.duplicate = function(shape)
rlm@46 562 {
rlm@46 563 var vml;
rlm@46 564 vml =shape.cloneNode(false);
rlm@46 565 //vml.setAttribute('fillcolor', "#aa00aa");
rlm@46 566 //vml.setAttribute('filled', "false");
rlm@46 567 this.container.appendChild(vml);
rlm@46 568 return vml;
rlm@46 569
rlm@46 570 };
rlm@46 571
rlm@46 572
rlm@46 573
rlm@46 574 VMLRenderer.prototype.index = function(shape,order) {
rlm@46 575
rlm@46 576 if(order==-1)
rlm@46 577 {
rlm@46 578 this.container.appendChild( shape );
rlm@46 579 }
rlm@46 580 if(order==0){
rlm@46 581
rlm@46 582 this.container.insertBefore( shape, shape.parentNode.firstChild );
rlm@46 583 }
rlm@46 584
rlm@46 585 if(order==1 || order==2)
rlm@46 586 {
rlm@46 587 var id=shape.getAttribute('id');
rlm@46 588 //alert(id);
rlm@46 589
rlm@46 590
rlm@46 591 var numNodes=this.container.childNodes.length;
rlm@46 592 //alert(numNodes);
rlm@46 593
rlm@46 594 var num=0;
rlm@46 595 for(var i = 1; i < numNodes; i++)
rlm@46 596 {
rlm@46 597
rlm@46 598 var etiq=this.container.childNodes[i].getAttribute('id');
rlm@46 599 if (etiq==id)
rlm@46 600 {
rlm@46 601 num=i;
rlm@46 602
rlm@46 603 }
rlm@46 604 }
rlm@46 605 //alert(num);
rlm@46 606 if(order==1)
rlm@46 607 {
rlm@46 608 if((num-1)>=-1)
rlm@46 609 {
rlm@46 610 this.container.insertBefore( shape, this.container.childNodes[num-1]);
rlm@46 611 }
rlm@46 612 }
rlm@46 613 if(order==2){
rlm@46 614 if((num+1)<numNodes)
rlm@46 615 {
rlm@46 616 this.container.insertBefore( shape, this.container.childNodes[num+2]);
rlm@46 617 }
rlm@46 618 }
rlm@46 619
rlm@46 620 }
rlm@46 621
rlm@46 622
rlm@46 623
rlm@46 624 }
rlm@46 625 VMLRenderer.prototype.remove = function(shape) {
rlm@46 626 if(shape!=null){ shape.removeNode(true); }
rlm@46 627 }
rlm@46 628
rlm@46 629
rlm@46 630 VMLRenderer.prototype.copy = function(shape)
rlm@46 631 {
rlm@46 632 var vml;
rlm@46 633 vml =shape.cloneNode(false);
rlm@46 634 //vml.setAttribute('fillcolor', "#aa00aa");
rlm@46 635 return vml;
rlm@46 636 };
rlm@46 637
rlm@46 638
rlm@46 639 VMLRenderer.prototype.paste = function(clipboard,left,top)
rlm@46 640 {
rlm@46 641 this.container.appendChild(clipboard);
rlm@46 642 return clipboard;
rlm@46 643 };
rlm@46 644
rlm@46 645
rlm@46 646
rlm@46 647 VMLRenderer.prototype.undo = function()
rlm@46 648 {
rlm@46 649 this.container.removeChild( this.container.lastChild );
rlm@46 650 };
rlm@46 651
rlm@46 652
rlm@46 653 var xshe=0;
rlm@46 654 var yshe=0;
rlm@46 655 var isArc=false;
rlm@46 656 var contArc=0;
rlm@46 657
rlm@46 658 VMLRenderer.prototype.move = function(shape, left, top,fromX,FromY) {
rlm@46 659 var box = this.bounds(shape);
rlm@46 660 var angle=0;
rlm@46 661 var dist=0;
rlm@46 662 var rotated=false;
rlm@46 663
rlm@46 664
rlm@46 665
rlm@46 666
rlm@46 667
rlm@46 668 //contmove++;
rlm@46 669 if (shape.tagName == 'line') {
rlm@46 670 shape.style.marginLeft = left;
rlm@46 671 shape.style.marginTop = top;
rlm@46 672 }
rlm@46 673 if (shape.tagName == 'polyline') {
rlm@46 674 shape.style.marginLeft = left;
rlm@46 675 shape.style.marginTop = top;
rlm@46 676
rlm@46 677 }
rlm@46 678 if (shape.tagName == 'oval') {
rlm@46 679 shape.style.left = left;
rlm@46 680 shape.style.top = top;
rlm@46 681 }
rlm@46 682 if (shape.tagName == 'rect') {
rlm@46 683 shape.style.left = left;
rlm@46 684 shape.style.top = top;
rlm@46 685 }
rlm@46 686
rlm@46 687 if (shape.tagName == 'image') {
rlm@46 688 shape.style.left = left;
rlm@46 689 shape.style.top = top;
rlm@46 690 }
rlm@46 691 if (shape.tagName == 'shape') {
rlm@46 692
rlm@46 693 shape.style.left=left+"px";
rlm@46 694 shape.style.top=top+"px";
rlm@46 695
rlm@46 696 }
rlm@46 697
rlm@46 698
rlm@46 699 };
rlm@46 700
rlm@46 701
rlm@46 702 VMLRenderer.prototype.track = function(shape) {
rlm@46 703 // TODO
rlm@46 704 };
rlm@46 705
rlm@46 706 VMLRenderer.prototype.clic = function(shape) {
rlm@46 707 var end='';
rlm@46 708 if(data_path_close==true){end=' ';}
rlm@46 709
rlm@46 710 var thispath='m '+setPoints[0]+' l';
rlm@46 711 var maxcont=setPoints.length;
rlm@46 712
rlm@46 713 for(var conta=1;conta< maxcont;conta++){
rlm@46 714 thispath+=setPoints[conta]+' ';
rlm@46 715
rlm@46 716
rlm@46 717 }
rlm@46 718 var path=thispath+end+' e';
rlm@46 719 shape.style.position="absolute";
rlm@46 720 shape.style.width= 700+"px";
rlm@46 721 shape.style.height=500+"px";
rlm@46 722 shape.style.left="0px";
rlm@46 723 shape.style.top="0px";
rlm@46 724
rlm@46 725
rlm@46 726 shape.children[0].setAttribute("v",path);
rlm@46 727 document.forms[0].control_codebase.value=path;
rlm@46 728
rlm@46 729 }
rlm@46 730
rlm@46 731
rlm@46 732 VMLRenderer.prototype.resize = function(shape, fromX, fromY, toX, toY) {
rlm@46 733 //var vml;
rlm@46 734 var deltaX = toX - fromX;
rlm@46 735 var deltaY = toY - fromY;
rlm@46 736 var shap=1;
rlm@46 737 if (shape.tagName == 'line') { shap=0; }
rlm@46 738 if (shape.tagName == 'polyline') { shap=2; }
rlm@46 739
rlm@46 740 if (shape.tagName == 'line') {
rlm@46 741 shape.setAttribute('to', toX + 'px,' + toY + 'px');
rlm@46 742 }
rlm@46 743 if (shap == 1) {
rlm@46 744 if (deltaX < 0) {
rlm@46 745 shape.style.left = toX + 'px';
rlm@46 746 shape.style.width = -deltaX + 'px';
rlm@46 747 }
rlm@46 748 else {
rlm@46 749 shape.style.width = deltaX + 'px';
rlm@46 750 }
rlm@46 751
rlm@46 752 if (deltaY < 0) {
rlm@46 753 shape.style.top = toY + 'px';
rlm@46 754 shape.style.height = -deltaY + 'px';
rlm@46 755 }
rlm@46 756 else {
rlm@46 757 shape.style.height = deltaY + 'px';
rlm@46 758 }
rlm@46 759 }
rlm@46 760 if (shap == 2) {
rlm@46 761 xpArray.push(toX);
rlm@46 762 ypArray.push(toY);
rlm@46 763
rlm@46 764 //xpArray.push(finetoX);
rlm@46 765 //ypArray.push(finetoY);
rlm@46 766
rlm@46 767 var thispath=' '+xpArray[1]+','+ypArray[1];
rlm@46 768 var maxcont=xpArray.length;
rlm@46 769 //alert(maxcont);
rlm@46 770 for(var conta=2;conta< maxcont;conta++){
rlm@46 771 thispath+=' '+xpArray[conta]+','+ypArray[conta];
rlm@46 772 }
rlm@46 773 //alert(shape.points[1]);
rlm@46 774 //shape.setAttribute("points",thispath);
rlm@46 775 shape.points.Value = thispath;
rlm@46 776
rlm@46 777 /*
rlm@46 778 var thispath=''+xpArray[0]+','+ypArray[0];
rlm@46 779 var thispatho=new Array();
rlm@46 780 thispatho.push(toX);
rlm@46 781 thispatho.push(toY);
rlm@46 782 var maxcont=xpArray.length;
rlm@46 783 //alert(maxcont);
rlm@46 784 for(var conta=2;conta< maxcont;conta++){
rlm@46 785 thispath+=','+xpArray[conta]+','+ypArray[conta];
rlm@46 786 }
rlm@46 787 //alert(shape.points[1]);
rlm@46 788 shape.setAttribute("points",thispath);
rlm@46 789 */
rlm@46 790 }
rlm@46 791 if(shape.tagName == 'shape')
rlm@46 792 {
rlm@46 793
rlm@46 794 if (selectmode == 'controlpath')
rlm@46 795 {
rlm@46 796
rlm@46 797 var end='';
rlm@46 798 if(data_path_close==true){end=' ';}
rlm@46 799
rlm@46 800 var thispath='m '+setPoints[0]+' l';
rlm@46 801 var maxcont=setPoints.length;
rlm@46 802
rlm@46 803 for(var conta=1;conta< maxcont;conta++){
rlm@46 804 thispath+=setPoints[conta]+' ';
rlm@46 805
rlm@46 806
rlm@46 807 }
rlm@46 808 var path=thispath+toX+','+toY+end+' e';
rlm@46 809
rlm@46 810 shape.style.position="absolute";
rlm@46 811 shape.style.width= 700+"px";
rlm@46 812 shape.style.height=500+"px";
rlm@46 813 shape.style.left="0px";
rlm@46 814 shape.style.top="0px";
rlm@46 815
rlm@46 816 shape.children[0].setAttribute("v",path);
rlm@46 817 document.forms[0].control_codebase.value=path;
rlm@46 818
rlm@46 819
rlm@46 820 }
rlm@46 821 else
rlm@46 822 {
rlm@46 823
rlm@46 824 xpArray.push(toX);
rlm@46 825 ypArray.push(toY);
rlm@46 826
rlm@46 827 //xpArray.push(finetoX);
rlm@46 828 //ypArray.push(finetoY);
rlm@46 829 var thispath2='';
rlm@46 830 var thispath1=' '+xpArray[1]+','+ypArray[1];
rlm@46 831 var maxcont=xpArray.length;
rlm@46 832 //alert(maxcont);
rlm@46 833 for(var conta=2;conta< maxcont ;conta++){
rlm@46 834 thispath2+=''+xpArray[conta]+','+ypArray[conta]+',';
rlm@46 835 if((conta+2)%3==0){thispath2+='';}
rlm@46 836 }
rlm@46 837 thispath2+=''+xpArray[maxcont]+','+ypArray[maxcont]+'';
rlm@46 838
rlm@46 839 //alert(shape.points[1]);
rlm@46 840 //appendChild(path01)
rlm@46 841 //var path01=shape.getFirstChild();
rlm@46 842 var path01 = this.container.ownerDocument.createElement('v:path');
rlm@46 843 path01.setAttribute("v", "m"+thispath1+" l"+ thispath2+" e");
rlm@46 844 //shape.margin-left="300px";
rlm@46 845 //shape.margin-top="200px";
rlm@46 846
rlm@46 847 //shape.setAttribute('path','m '+thispath1+ ' c'+thispath2+' e');
rlm@46 848 if(shape.children[0].tagName=='textpath')
rlm@46 849 {
rlm@46 850 var path01 = this.container.ownerDocument.createElement('v:path');
rlm@46 851 path01.setAttribute("v", 'm 100 100 l 600 100 e');
rlm@46 852
rlm@46 853 //if(xpArray.length>1)
rlm@46 854 //{ shap.style.position="absolute";
rlm@46 855 shape.style.width=100+"px";
rlm@46 856 shape.style.height=100+"px";
rlm@46 857 shape.style.left=toX+"px";
rlm@46 858 shape.style.top=toY+"px";
rlm@46 859 shape.style.margin=0+"px";
rlm@46 860 shape.style.padding=0+"px";
rlm@46 861 shape.appendChild(path01);
rlm@46 862 //}
rlm@46 863 }
rlm@46 864 else
rlm@46 865 {
rlm@46 866 shape.style.position="absolute";
rlm@46 867 shape.style.width= 700+"px";
rlm@46 868 shape.style.height=500+"px";
rlm@46 869 shape.style.left="0px";
rlm@46 870 shape.style.top="0px";
rlm@46 871 //shape.setAttribute('coordsize', '700,500');
rlm@46 872 shape.appendChild(path01);
rlm@46 873 }
rlm@46 874
rlm@46 875 //shape.setAttribute('position', 'absolute');
rlm@46 876 //shape.translate(xpArray[conta+1]+','+ypArray[conta+1]);
rlm@46 877 //shape.setAttribute('coordsize', '700,500');
rlm@46 878 // shape.v.Value ='M '+thispath1+ ' C'+thispath2+' x e';
rlm@46 879 //shape.v.Value = 'M '+thispath+ ' c '+thispath2;
rlm@46 880 //shape.setAttribute("v", 'M '+thispath+ ' C '+thispath2);
rlm@46 881 //shape.setAttribute('path','M '+thispath+ ' C '+thispath2);
rlm@46 882 }
rlm@46 883 }
rlm@46 884
rlm@46 885 };
rlm@46 886
rlm@46 887
rlm@46 888 VMLRenderer.prototype.tocurve = function() {
rlm@46 889
rlm@46 890
rlm@46 891 };
rlm@46 892
rlm@46 893
rlm@46 894 VMLRenderer.prototype.info = function(shape)
rlm@46 895 {
rlm@46 896 var shInfo = {};
rlm@46 897 shInfo.id = shape.id;
rlm@46 898 shInfo.type = shape.tagName;
rlm@46 899 if (shape.tagName == 'rect')
rlm@46 900 {
rlm@46 901 shInfo.left = parseFloat(shape.getAttribute( 'x'));
rlm@46 902 shInfo.top = parseFloat(shape.getAttribute( 'y'));
rlm@46 903 shInfo.width = parseFloat(shape.getAttribute('width'));
rlm@46 904 shInfo.height = parseFloat(shape.getAttribute('height'));
rlm@46 905 //++
rlm@46 906 //shInfo.rotate = parseFloat(shape.getAttribute('rotation'));
rlm@46 907 }
rlm@46 908 else if (shape.tagName == 'oval')
rlm@46 909 {
rlm@46 910 shInfo.width = parseFloat(shape.getAttribute('rx'))*2;
rlm@46 911 shInfo.height = parseFloat(shape.getAttribute('ry'))*2;
rlm@46 912 shInfo.left = (shInfo.width * 2) - parseFloat(shape.getAttribute('rx'));
rlm@46 913 shInfo.top = (shInfo.height * 2) - parseFloat(shape.getAttribute('ry'));
rlm@46 914
rlm@46 915 }
rlm@46 916 else if (shape.tagName == 'roundrect')
rlm@46 917 {
rlm@46 918 shInfo.left = parseFloat(shape.getAttribute('x'));
rlm@46 919 shInfo.top = parseFloat(shape.getAttribute('y'));
rlm@46 920 shInfo.width = parseFloat(shape.getAttribute('width'));
rlm@46 921 shInfo.height = parseFloat(shape.getAttribute('height'));
rlm@46 922
rlm@46 923 }
rlm@46 924 else if (shape.tagName == 'line')
rlm@46 925 {
rlm@46 926 shInfo.left = parseFloat(shape.getAttribute('x1'));
rlm@46 927 shInfo.top = parseFloat(shape.getAttribute('y1'));
rlm@46 928
rlm@46 929 }
rlm@46 930 else if (shape.tagName == 'polyline')
rlm@46 931 {
rlm@46 932 shInfo.points = shape.getAttribute('points');
rlm@46 933 }
rlm@46 934 else if (shape.tagName == 'image')
rlm@46 935 {
rlm@46 936 shInfo.left = parseFloat(shape.getAttribute('x'));
rlm@46 937 shInfo.top = parseFloat(shape.getAttribute('y'));
rlm@46 938 shInfo.width = parseFloat(shape.getAttribute('width'));
rlm@46 939 shInfo.height = parseFloat(shape.getAttribute('height'));
rlm@46 940 shInfo.src = shape.getAttribute('src');
rlm@46 941 }
rlm@46 942 else
rlm@46 943
rlm@46 944 if (shape.tagName == 'shape')
rlm@46 945 {
rlm@46 946 if(shape.children[0].tagName=='path') {
rlm@46 947 shInfo.d = shape.getAttribute('v');
rlm@46 948 this.editor.log(shape.getAttribute('v'));
rlm@46 949
rlm@46 950 }
rlm@46 951 if(shape.children[0].tagName=='textpath') {
rlm@46 952 shInfo['font-family'] = shape.children[0].getAttribute('font-family')
rlm@46 953 shInfo['font-size'] = parseInt(shape.children[0].getAttribute('font-size'))
rlm@46 954 shInfo.top = parseFloat(shape.children[0].getAttribute('y'))
rlm@46 955 shInfo.left = parseFloat(shape.children[0].getAttribute('x'))
rlm@46 956 shInfo.text = shape.textContent
rlm@46 957
rlm@46 958 }
rlm@46 959 }
rlm@46 960 return shInfo;
rlm@46 961
rlm@46 962
rlm@46 963 }
rlm@46 964 VMLRenderer.prototype.transformShape = function(shape,data,transform)
rlm@46 965 {
rlm@46 966
rlm@46 967 if(shape.tagName == 'rect')
rlm@46 968 {
rlm@46 969
rlm@46 970 var box = this.bounds(shape);
rlm@46 971 var sdata=data.split(';');
rlm@46 972
rlm@46 973 //alert(data[0]);
rlm@46 974 shape.style.top = parseFloat(sdata[0]) + 'px';
rlm@46 975 shape.style.left = parseFloat(sdata[1]) + 'px';
rlm@46 976 shape.style.width = parseFloat(sdata[2]) + 'px';
rlm@46 977 shape.style.height = parseFloat(sdata[3]) + 'px';
rlm@46 978
rlm@46 979
rlm@46 980
rlm@46 981 // var centerx=parseFloat(sdata[0])+parseFloat(box.width/2);
rlm@46 982 // var centery=parseFloat(sdata[1])+parseFloat(box.height/2);
rlm@46 983 shape.style.rotation=parseFloat(sdata[4]);
rlm@46 984
rlm@46 985 //shape.nodparseFloatue=data;
rlm@46 986 }
rlm@46 987 else
rlm@46 988 if(shape.tagName == 'text')
rlm@46 989 {
rlm@46 990 if(data.indexOf('<;>',0)==-1 )
rlm@46 991 {
rlm@46 992 shape.textContent = data;
rlm@46 993 }
rlm@46 994 else
rlm@46 995 {
rlm@46 996 var sdata=data.split('<;>'); //?????????
rlm@46 997 shape.textContent = sdata[0];
rlm@46 998 shape.setAttribute('font-size',parseFloat(sdata[1]));
rlm@46 999 shape.setAttribute('font-family',sdata[2]);
rlm@46 1000 }
rlm@46 1001 //shape.nodparseFloatue=data;
rlm@46 1002 }
rlm@46 1003 else
rlm@46 1004 if (shape.tagName == 'polyline')
rlm@46 1005 {
rlm@46 1006 shape.setAttribute('points',data);
rlm@46 1007 }
rlm@46 1008 else
rlm@46 1009 if (shape.tagName == 'image')
rlm@46 1010 {
rlm@46 1011 //alert(data);
rlm@46 1012 if(data.indexOf(';',0)==-1 )
rlm@46 1013 {
rlm@46 1014 shape.setAttribute('src',data);
rlm@46 1015 }
rlm@46 1016 else
rlm@46 1017 {
rlm@46 1018 var box = this.bounds(shape);
rlm@46 1019 var sdata=data.split(';');
rlm@46 1020 shape.style.top = parseFloat(sdata[0]) + 'px';
rlm@46 1021 shape.style.left = parseFloat(sdata[1]) + 'px';
rlm@46 1022 shape.style.width = parseFloat(sdata[2]) + 'px';
rlm@46 1023 shape.style.height = parseFloat(sdata[3]) + 'px';
rlm@46 1024 var centerx=parseFloat(sdata[0])+parseFloat(box.width/2);
rlm@46 1025 var centery=parseFloat(sdata[1])+parseFloat(box.height/2);
rlm@46 1026 shape.style.rotation=parseFloat(sdata[4]);
rlm@46 1027
rlm@46 1028
rlm@46 1029 }
rlm@46 1030
rlm@46 1031 }
rlm@46 1032 else
rlm@46 1033 if (shape.tagName == 'path')
rlm@46 1034 {
rlm@46 1035 if(data.indexOf(';',0)==-1 )
rlm@46 1036 {
rlm@46 1037 //shape.setAttribute( 'd', data); //????????
rlm@46 1038 //shape.setAttribute( 'transform', transform);
rlm@46 1039 }
rlm@46 1040 else
rlm@46 1041 {
rlm@46 1042 var box = this.bounds(shape);
rlm@46 1043 var sdata=data.split(';');
rlm@46 1044 var centerx=parseFloat(sdata[0])+parseFloat(box.width/2);
rlm@46 1045 var centery=parseFloat(sdata[1])+parseFloat(box.height/2);
rlm@46 1046 //++shape.setAttribute( 'transform','scale('+parseFloat(sdata[2])+','+parseFloat(sdata[3])+')'+' rotate('+parseFloat(sdata[4])+','+centerx+','+centery+')'+' translate('+parseFloat(sdata[0])+','+parseFloat(sdata[1])+')');
rlm@46 1047
rlm@46 1048
rlm@46 1049 }
rlm@46 1050 }
rlm@46 1051
rlm@46 1052
rlm@46 1053 }
rlm@46 1054 VMLRenderer.prototype.editShape = function(shape,data)
rlm@46 1055 {
rlm@46 1056 if(shape.tagName == 'text'){
rlm@46 1057 shape.textContent = data
rlm@46 1058 }else
rlm@46 1059 if (shape.tagName == 'polyline')
rlm@46 1060 {
rlm@46 1061 shape.setAttribute('points',data);
rlm@46 1062 }
rlm@46 1063 else
rlm@46 1064
rlm@46 1065 if (shape.tagName == 'path')
rlm@46 1066 {
rlm@46 1067 shape.setAttribute('v', data);
rlm@46 1068
rlm@46 1069 }
rlm@46 1070
rlm@46 1071
rlm@46 1072 }
rlm@46 1073 VMLRenderer.prototype.editCommand = function(shape, cmd, value)
rlm@46 1074 {
rlm@46 1075 if (shape != null) {
rlm@46 1076 if (cmd == 'fillcolor') {
rlm@46 1077 if (value != '') {
rlm@46 1078 shape.filled = 'true';
rlm@46 1079 shape.fillcolor = value;
rlm@46 1080 }
rlm@46 1081 else {
rlm@46 1082 shape.filled = 'false';
rlm@46 1083 shape.fillcolor = '';
rlm@46 1084 }
rlm@46 1085 }
rlm@46 1086 else if (cmd == 'linecolor') {
rlm@46 1087 if (value != '') {
rlm@46 1088 shape.stroked = 'true';
rlm@46 1089 shape.strokecolor = value;
rlm@46 1090 }
rlm@46 1091 else {
rlm@46 1092 shape.stroked = 'false';
rlm@46 1093 shape.strokecolor = '';
rlm@46 1094 }
rlm@46 1095 }
rlm@46 1096 else if (cmd == 'linewidth') {
rlm@46 1097 shape.strokeweight = parseInt(value) + 'px';
rlm@46 1098 }
rlm@46 1099 else if (cmd == 'fillopacity') {
rlm@46 1100
rlm@46 1101 shape.fill.opacity= parseFloat(value);
rlm@46 1102 //shape.style.fill.setAttribute("opacity", parseFloat(value));
rlm@46 1103
rlm@46 1104 }
rlm@46 1105 }
rlm@46 1106 }
rlm@46 1107
rlm@46 1108
rlm@46 1109 VMLRenderer.prototype.queryCommand = function(shape, cmd)
rlm@46 1110 {
rlm@46 1111 if (shape != null) {
rlm@46 1112 if (cmd == 'fillcolor') {
rlm@46 1113 if (shape.filled == 'false')
rlm@46 1114 return '';
rlm@46 1115 else
rlm@46 1116 return shape.fillcolor;
rlm@46 1117 }
rlm@46 1118 else if (cmd == 'linecolor') {
rlm@46 1119 if (shape.stroked == 'false')
rlm@46 1120 return '';
rlm@46 1121 else
rlm@46 1122 return shape.strokecolor;
rlm@46 1123 }
rlm@46 1124 else if (cmd == 'linewidth') {
rlm@46 1125 if (shape.stroked == 'false') {
rlm@46 1126 return '';
rlm@46 1127 }
rlm@46 1128 else {
rlm@46 1129 // VML always transforms the pixels to points, so we have to convert them back
rlm@46 1130 return (parseFloat(shape.strokeweight) * (screen.logicalXDPI / 72)) + 'px';
rlm@46 1131 }
rlm@46 1132 }
rlm@46 1133 }
rlm@46 1134 }
rlm@46 1135
rlm@46 1136 VMLRenderer.prototype.getProperties = function(shape)
rlm@46 1137 {
rlm@46 1138 var result = '';
rlm@46 1139
rlm@46 1140 if (shape != null)
rlm@46 1141 {
rlm@46 1142 result = shape.getAttribute('fillcolor');
rlm@46 1143 if (result == 'none')
rlm@46 1144 {
rlm@46 1145 mefillColor.visible = 'hidden';
rlm@46 1146 mefillColor.hex = '#000000';
rlm@46 1147 filldraw=true;
rlm@46 1148 setbe(1,'img_okfill');
rlm@46 1149 }
rlm@46 1150 else
rlm@46 1151 {
rlm@46 1152 //alert(mefillColor.hex+' '+result);
rlm@46 1153 mefillColor.visible = 'visible';
rlm@46 1154 mefillColor.hex = result;
rlm@46 1155 var rgb=hex2rgb(result)
rlm@46 1156 mefillColor.r=rgb[0];
rlm@46 1157 mefillColor.g=rgb[1];
rlm@46 1158 mefillColor.b=rgb[2];
rlm@46 1159 filldraw=false;
rlm@46 1160 setbe(1,'img_okfill');
rlm@46 1161
rlm@46 1162 }
rlm@46 1163
rlm@46 1164 result = shape.getAttribute('strokecolor');
rlm@46 1165 if (result == 'none')
rlm@46 1166 {
rlm@46 1167 mestrokeColor.visible = 'hidden';
rlm@46 1168 mestrokeColor.hex = '#000000';
rlm@46 1169 mestrokeColor.width = 0;
rlm@46 1170 strokedraw=true;
rlm@46 1171 setbe(2,'img_okstroke');
rlm@46 1172
rlm@46 1173 }
rlm@46 1174 else
rlm@46 1175 {
rlm@46 1176 mestrokeColor.visible = 'visible';
rlm@46 1177 mestrokeColor.hex = result;
rlm@46 1178 var rgb=hex2rgb(result)
rlm@46 1179 mestrokeColor.r=rgb[0];
rlm@46 1180 mestrokeColor.g=rgb[1];
rlm@46 1181 mestrokeColor.b=rgb[2];
rlm@46 1182 strokedraw=false;
rlm@46 1183 setbe(2,'img_okstroke');
rlm@46 1184
rlm@46 1185 }
rlm@46 1186
rlm@46 1187 result = shape.getAttribute('strokeweight');
rlm@46 1188 mestrokeColor.width = result;
rlm@46 1189
rlm@46 1190 result = shape.fill.getAttribute('opacity');
rlm@46 1191 mefillColor.opacity = result;
rlm@46 1192
rlm@46 1193 result = shape.stroke.getAttribute('opacity');
rlm@46 1194 mestrokeColor.opacity = result;
rlm@46 1195
rlm@46 1196 setProperties();
rlm@46 1197 }
rlm@46 1198 }
rlm@46 1199
rlm@46 1200
rlm@46 1201 VMLRenderer.prototype.showMultiSelect = function(iniX,iniY) {
rlm@46 1202 var tracker = document.getElementById('trackerMultiSelect');
rlm@46 1203 if (tracker) {
rlm@46 1204 this.remove(tracker);
rlm@46 1205 }
rlm@46 1206 var coord=this.editor.inputxy;
rlm@46 1207 toX=parseFloat(coord[0]);
rlm@46 1208 toY=parseFloat(coord[1]);
rlm@46 1209
rlm@46 1210 tracker = this.container.ownerDocument.createElement('v:rect');
rlm@46 1211
rlm@46 1212 tracker.style.position = 'relative';
rlm@46 1213 tracker.style.left = iniX;
rlm@46 1214 tracker.style.top = iniY;
rlm@46 1215 tracker.style.width = toX ;
rlm@46 1216 tracker.style.height = toY;
rlm@46 1217 tracker.setAttribute('filled', 'false');
rlm@46 1218 tracker.setAttribute('stroked', 'true');
rlm@46 1219 tracker.setAttribute('strokecolor', 'blue');
rlm@46 1220 tracker.setAttribute('strokeweight', '1px');
rlm@46 1221
rlm@46 1222 this.container.appendChild(tracker);
rlm@46 1223 }
rlm@46 1224
rlm@46 1225 function mouseCoord()
rlm@46 1226 {
rlm@46 1227 var coord=this.editor.inputxy;
rlm@46 1228 coord[0]=parseFloat(coord[0]);
rlm@46 1229 coord[1]=parseFloat(coord[1]);
rlm@46 1230 return coord
rlm@46 1231 }
rlm@46 1232
rlm@46 1233 var memoNode=null;
rlm@46 1234 var memoPrevControl=new Array();
rlm@46 1235 var memoNextControl=new Array();
rlm@46 1236 VMLRenderer.prototype.nodeMove = function(newx,newy) {
rlm@46 1237 var mypath=$('control_codebase').value;
rlm@46 1238 var x= $('option_path_x').value;
rlm@46 1239 var y= $('option_path_y').value;
rlm@46 1240 var precoord=x+','+y;
rlm@46 1241
rlm@46 1242 $('option_path_x').value=newx;
rlm@46 1243 $('option_path_y').value=newy;
rlm@46 1244
rlm@46 1245 var cadx= newx;
rlm@46 1246 var cady= newy;
rlm@46 1247
rlm@46 1248 var coord=cadx+','+cady;
rlm@46 1249 var cad1=new RegExp(precoord,"g");
rlm@46 1250
rlm@46 1251
rlm@46 1252 var result=mypath.replace(cad1, coord);
rlm@46 1253
rlm@46 1254
rlm@46 1255 $('control_codebase').value=result;
rlm@46 1256
rlm@46 1257 $('someinfo').value=precoord;
rlm@46 1258 setShape();
rlm@46 1259
rlm@46 1260 }
rlm@46 1261
rlm@46 1262 function drawNodeControl(vml,numId){
rlm@46 1263 var color1='#0066ff';
rlm@46 1264 // if(parseInt(memoNode.id)==a){
rlm@46 1265
rlm@46 1266 var pointprev=memoPrevControl[numId].split(',');
rlm@46 1267 var controlNode1 = this.container.ownerDocument.createElement('v:rect');
rlm@46 1268 controlNode1.setAttribute('x', pointprev[0]-2);
rlm@46 1269 controlNode1.setAttribute('y', pointprev[1]-2);
rlm@46 1270
rlm@46 1271 controlNode1.setAttribute('width', 4);
rlm@46 1272 controlNode1.setAttribute('height', 4);
rlm@46 1273 controlNode1.setAttribute('fillcolor', color1);
rlm@46 1274 controlNode1.setAttribute('strokecolor', '#000000');
rlm@46 1275 controlNode1.setAttribute('strokeweight', '0');
rlm@46 1276 controlNode1.setAttribute('id', 'controlNode1');
rlm@46 1277 controlNode1.addEventListener("mousedown", function(event) {if(memoNode != null){memoNode.setAttribute('strokeweight', 0 );} memoNode=this; this.setAttribute('fillcolor', '#ffff00' );this.setAttribute('strokeweight', 1 );$('option_path_num').value=this.getAttributeNS(null,'id'); $('option_path_x').value=parseFloat(this.getAttribute('x'))+2; $('option_path_y').value=parseFloat(this.getAttribute('y'))+2; }, false);
rlm@46 1278 vml.appendChild(controlNode1);
rlm@46 1279
rlm@46 1280 var pointnext=memoNextControl[numId].split(',');
rlm@46 1281
rlm@46 1282
rlm@46 1283 var controlNode2 =this.container.ownerDocument.createElement('v:rect');
rlm@46 1284 controlNode2.setAttribute('x', pointnext[0]-2);
rlm@46 1285 controlNode2.setAttribute('y', pointnext[1]-2);
rlm@46 1286
rlm@46 1287 controlNode2.setAttribute('width', 4);
rlm@46 1288 controlNode2.setAttribute('height', 4);
rlm@46 1289 controlNode2.setAttribute('fillcolor', color1);
rlm@46 1290 controlNode2.setAttribute('strokecolor', '#000000');
rlm@46 1291 controlNode2.setAttribute('strokeweight', '0');
rlm@46 1292 controlNode2.setAttribute('id', 'controlNode1');
rlm@46 1293 controlNode2.addEventListener("mousedown", function(event) {if(memoNode != null){memoNode.setAttribute('strokeweight', 0 );} memoNode=this; this.setAttribute('fillcolor', '#ffff00' );this.setAttribute('strokeweight', 1 );$('option_path_num').value=this.getAttributeNS(null,'id'); $('option_path_x').value=parseFloat(this.getAttribute('x'))+2; $('option_path_y').value=parseFloat(this.getAttribute('y'))+2; }, false);
rlm@46 1294 vml.appendChild(controlNode2);
rlm@46 1295
rlm@46 1296 //}
rlm@46 1297
rlm@46 1298
rlm@46 1299 }
rlm@46 1300
rlm@46 1301 VMLRenderer.prototype.showNodesCurve = function(path){
rlm@46 1302 var points=path.split('c');
rlm@46 1303 var chain='';
rlm@46 1304 var segment=' ';
rlm@46 1305 var numpoints=points.length-1;
rlm@46 1306 for(var a=1;a<numpoints;a++)
rlm@46 1307 {
rlm@46 1308 segment=points[a].split(' ');
rlm@46 1309 chain+=segment[0]+' ';
rlm@46 1310 }
rlm@46 1311
rlm@46 1312 $('someinfo').value=numpoints+ ' nodes ';
rlm@46 1313 return chain;
rlm@46 1314
rlm@46 1315 };
rlm@46 1316
rlm@46 1317
rlm@46 1318
rlm@46 1319 VMLRenderer.prototype.showTracker = function(shape) {
rlm@46 1320 var box = this.bounds(shape);
rlm@46 1321 var trshape = parseFloat(shape.getAttribute('rotation'));
rlm@46 1322 var tracker = document.getElementById('tracker');
rlm@46 1323 if (tracker) {
rlm@46 1324 this.remove(tracker);
rlm@46 1325 }
rlm@46 1326
rlm@46 1327 if (shape.tagName == 'shape')
rlm@46 1328 {
rlm@46 1329 shap=2;
rlm@46 1330 if(shape.children[0].tagName == 'path')
rlm@46 1331 {
rlm@46 1332
rlm@46 1333 /* $('option_path_trx').value= box.x;
rlm@46 1334 $('option_path_try').value= box.y;
rlm@46 1335 $('option_path_sclx').value= box.width;
rlm@46 1336 $('option_path_scly').value= box.height;
rlm@46 1337 $('option_path_rot').value= shape.style.rotation;
rlm@46 1338 */
rlm@46 1339 var path=shape.children[0].getAttribute('v');
rlm@46 1340 $('control_codebase').value=path;
rlm@46 1341 }
rlm@46 1342 }
rlm@46 1343 if (shape.tagName == 'rect') {
rlm@46 1344
rlm@46 1345 $('option_rect_rot').value= shape.getAttribute('rotation');
rlm@46 1346 $('option_rect_trx').value= box.x;
rlm@46 1347 $('option_rect_try').value= box.y;
rlm@46 1348 $('option_rect_sclx').value= box.width;
rlm@46 1349 $('option_rect_scly').value= box.height;
rlm@46 1350
rlm@46 1351 }
rlm@46 1352
rlm@46 1353 if (shape.tagName == 'image'){
rlm@46 1354 /* $('option_img_trx').value= box.x;
rlm@46 1355 $('option_img_try').value= box.y;
rlm@46 1356 $('option_img_sclx').value= box.width;
rlm@46 1357 $('option_img_scly').value= box.height;
rlm@46 1358 $('option_img_rot').value= T.b* (Math.PI * 2 / 360);
rlm@46 1359 */
rlm@46 1360 }
rlm@46 1361 if (shape.tagName == 'text'){
rlm@46 1362 /* f$('option_text_trx').value= box.x;
rlm@46 1363 $('option_text_try').value= box.y;
rlm@46 1364 $('option_text_sclx').value= box.width;
rlm@46 1365 $('option_text_scly').value= box.height;
rlm@46 1366 $('option_text_rot').value= T.b* (Math.PI * 2 / 360);
rlm@46 1367 */
rlm@46 1368 }
rlm@46 1369 if (shape.tagName == 'line'){
rlm@46 1370 /*
rlm@46 1371 $('option_line_trx').value= box.x;
rlm@46 1372 $('option_line_try').value= box.y;
rlm@46 1373 */
rlm@46 1374 }
rlm@46 1375 if (shape.tagName == 'oval'){
rlm@46 1376 /*$('option_ellipse_trx').value= putx;
rlm@46 1377 $('option_ellipse_try').value= puty;
rlm@46 1378 $('option_ellipse_sclx').value= box.width;
rlm@46 1379 $('option_ellipse_scly').value= box.height;
rlm@46 1380 $('option_ellipse_rot').value= T.b* (Math.PI * 2 / 360);
rlm@46 1381 */
rlm@46 1382 }
rlm@46 1383
rlm@46 1384
rlm@46 1385
rlm@46 1386 /*var matrix = shape.getScreenCTM();
rlm@46 1387 var trshape= shape.getAttribute('transform');
rlm@46 1388 var shap=1;
rlm@46 1389 if (shape.tagName == 'path') { shap=2;
rlm@46 1390
rlm@46 1391
rlm@46 1392
rlm@46 1393 }
rlm@46 1394 */
rlm@46 1395 //if (shape.getAttribute('transform') ) { shap=2; }
rlm@46 1396 //var svgNamespace = 'http://www.w3.org/2000/svg';
rlm@46 1397
rlm@46 1398 tracker = this.container.ownerDocument.createElement('v:group');
rlm@46 1399 tracker.id = 'tracker';
rlm@46 1400 //tracker.setAttribute('rotation',trshape);
rlm@46 1401 tracker.setAttribute('coordorigin','0, 0');
rlm@46 1402 //tracker.setAttribute('wrapcoords',true);
rlm@46 1403
rlm@46 1404
rlm@46 1405 tracker.setAttribute('coordsize',box.width+','+ box.height);
rlm@46 1406 tracker.style.position = 'absolute';
rlm@46 1407 tracker.style.left = box.x ;
rlm@46 1408 tracker.style.top = box.y;
rlm@46 1409 tracker.style.width = box.width ;
rlm@46 1410 tracker.style.height = box.height ;
rlm@46 1411
rlm@46 1412
rlm@46 1413
rlm@46 1414
rlm@46 1415
rlm@46 1416
rlm@46 1417
rlm@46 1418
rlm@46 1419
rlm@46 1420 ////////////////
rlm@46 1421
rlm@46 1422 /*
rlm@46 1423
rlm@46 1424 var trshape='translate (0,0) rotate(0) translate(0,0) ';
rlm@46 1425 var trshape_split=trshape.split(') ');
rlm@46 1426
rlm@46 1427 // get_between (trshape, s1, s2) ;
rlm@46 1428 if(shape.getAttribute('transform')){
rlm@46 1429 var trshape=shape.getAttribute('transform') ;
rlm@46 1430 //var spl=trshape.replace(', ',' ');
rlm@46 1431 //var spl1=spl.replace(')',' ');
rlm@46 1432 var trshape_split=trshape.split(') ');
rlm@46 1433
rlm@46 1434
rlm@46 1435 }
rlm@46 1436 */
rlm@46 1437
rlm@46 1438 var corners = [];
rlm@46 1439 var point = createPoint(box.x, box.y, box.width, box.height);
rlm@46 1440 //point = {x:box.x, y:box.y, width: box.width, height:box.height};
rlm@46 1441 //point = createPoint(box.x, box.y, box.width, box.height);
rlm@46 1442 //1
rlm@46 1443 corners.push( createPoint(box.x + box.width, box.y, box.width, box.height) );
rlm@46 1444 point.x = box.x + box.width;
rlm@46 1445 point.y = box.y;
rlm@46 1446 //2
rlm@46 1447 corners.push( createPoint(box.x + box.width, box.y + box.height, box.width, box.height) );
rlm@46 1448 point.x = box.x + box.width;
rlm@46 1449 point.y = box.y + box.height;
rlm@46 1450 //3
rlm@46 1451 //corners.push( point.matrixTransform(matrix) );
rlm@46 1452 corners.push( createPoint(box.x , box.y + box.height, box.width, box.height) );
rlm@46 1453 point.x = box.x;
rlm@46 1454 point.y = box.y + box.height;
rlm@46 1455 //4
rlm@46 1456 corners.push( createPoint(box.x + box.width, box.y, box.width, box.height) );
rlm@46 1457
rlm@46 1458 var max = createPoint(corners[0].x, corners[0].y);
rlm@46 1459 var min = createPoint(corners[0].x, corners[0].y);
rlm@46 1460
rlm@46 1461 // identify the new corner coordinates of the
rlm@46 1462 // fully transformed bounding box
rlm@46 1463
rlm@46 1464 for (var i = 1; i < corners.length; i++) {
rlm@46 1465 var x = corners[i].x;
rlm@46 1466 var y = corners[i].y;
rlm@46 1467 if (x < min.x) {
rlm@46 1468 min.x = x;
rlm@46 1469 }
rlm@46 1470 else if (x > max.x) {
rlm@46 1471 max.x = x;
rlm@46 1472 }
rlm@46 1473 if (y < min.y) {
rlm@46 1474 min.y = y;
rlm@46 1475 }
rlm@46 1476 else if (y > max.y) {
rlm@46 1477 max.y = y;
rlm@46 1478 }
rlm@46 1479 }
rlm@46 1480
rlm@46 1481
rlm@46 1482 var border_square = this.container.ownerDocument.createElement('v:rect');
rlm@46 1483
rlm@46 1484 border_square.style.position = 'relative';
rlm@46 1485 border_square.style.left = 0 - 10;
rlm@46 1486 border_square.style.top = 0 - 10;
rlm@46 1487 border_square.style.width = box.width + 20;
rlm@46 1488 border_square.style.height = box.height + 20;
rlm@46 1489 border_square.setAttribute('filled', 'false');
rlm@46 1490 border_square.setAttribute('stroked', 'true');
rlm@46 1491 border_square.setAttribute('strokecolor', 'blue');
rlm@46 1492 border_square.setAttribute('strokeweight', '1px');
rlm@46 1493
rlm@46 1494
rlm@46 1495 var border_angle = this.container.ownerDocument.createElement('v:polyline');
rlm@46 1496 border_angle.style.position = 'relative';
rlm@46 1497
rlm@46 1498 //border_angle.setAttribute('from',(box.width+10) + 'px,' + (box.height/2) + 'px');
rlm@46 1499 //border_angle.setAttribute('to', (box.width+10+25) + 'px,' + (box.width+10) + 'px');
rlm@46 1500 border_angle.setAttribute('filled', 'false');
rlm@46 1501 border_angle.setAttribute('stroked', 'true');
rlm@46 1502 border_angle.setAttribute('strokecolor', 'blue');
rlm@46 1503 border_angle.setAttribute('strokeweight', '1px');
rlm@46 1504 border_angle.setAttribute("points", (box.width+10)+","+((box.height/2))+", "
rlm@46 1505 +(box.width+10+25)+","+((box.height/2)) );
rlm@46 1506
rlm@46 1507
rlm@46 1508 /* var path01 = this.container.ownerDocument.createElement('v:path');
rlm@46 1509 //path01.setAttribute("v", "m "+thispath+" c"+ thispath2+" e ");
rlm@46 1510 path01.setAttribute("v", "m"+(min.x-10)+","+ (min.y-10)+" r"+(box.width+20)+","+(0)+" r"+(0)+","+(box.height+20)+" r"+(-box.width-20)+','+(0)+"x e m"+(box.x+box.width+10)+","+ (box.y+(box.height/2))+" r"+(25)+",0 e ");
rlm@46 1511 border.appendChild(path01)
rlm@46 1512 */
rlm@46 1513 //border.setAttribute('stroke-width', '1');
rlm@46 1514
rlm@46 1515 // createRect(min.x, min.y, max.x - min.x, max.y - min.y);
rlm@46 1516
rlm@46 1517
rlm@46 1518 /* tracker = this.container.ownerDocument.createElement('v:rect');
rlm@46 1519 tracker.id = 'tracker';
rlm@46 1520 tracker.style.position = 'absolute';
rlm@46 1521 tracker.style.left = box.x - 10;
rlm@46 1522 tracker.style.top = box.y - 10;
rlm@46 1523 tracker.style.width = box.width + 20;
rlm@46 1524 tracker.style.height = box.height + 20;
rlm@46 1525 tracker.setAttribute('filled', 'false');
rlm@46 1526 tracker.setAttribute('stroked', 'true');
rlm@46 1527 tracker.setAttribute('strokecolor', 'blue');
rlm@46 1528 tracker.setAttribute('strokeweight', '1px');
rlm@46 1529 this.container.appendChild(tracker);
rlm@46 1530 */
rlm@46 1531 var circle1 = this.container.ownerDocument.createElement('v:oval');
rlm@46 1532 circle1.style.position = 'relative';
rlm@46 1533 circle1.style.left = ( (box.width+40)-5);
rlm@46 1534 circle1.style.top = ( (box.height / 2) -5);
rlm@46 1535 circle1.style.width = (10);
rlm@46 1536 circle1.style.height = (10);
rlm@46 1537 circle1.setAttribute('filled', 'true');
rlm@46 1538 circle1.setAttribute('stroked', 'true');
rlm@46 1539 circle1.setAttribute('fillcolor', '#ffffff');
rlm@46 1540 circle1.setAttribute('strokecolor', 'green');
rlm@46 1541 circle1.setAttribute('strokeweight', '1px');
rlm@46 1542
rlm@46 1543
rlm@46 1544 var rect1 = this.container.ownerDocument.createElement('v:rect');
rlm@46 1545 rect1.style.position = 'relative';
rlm@46 1546 rect1.style.left = - 10-5;
rlm@46 1547 rect1.style.top = - 10-5;
rlm@46 1548 rect1.style.width = 10;
rlm@46 1549 rect1.style.height = 10;
rlm@46 1550 rect1.setAttribute('filled', 'true');
rlm@46 1551 rect1.setAttribute('stroked', 'true');
rlm@46 1552 rect1.setAttribute('fillcolor', '#ffffff');
rlm@46 1553 rect1.setAttribute('strokecolor', 'green');
rlm@46 1554 rect1.setAttribute('strokeweight', '1px');
rlm@46 1555
rlm@46 1556
rlm@46 1557 var rect2 = this.container.ownerDocument.createElement('v:rect');
rlm@46 1558 rect2.style.position = 'relative';
rlm@46 1559 rect2.style.left = box.width +5;
rlm@46 1560 rect2.style.top = -10 -5;
rlm@46 1561 rect2.style.width = 10;
rlm@46 1562 rect2.style.height = 10;
rlm@46 1563 rect2.setAttribute('filled', 'true');
rlm@46 1564 rect2.setAttribute('stroked', 'true');
rlm@46 1565 rect2.setAttribute('fillcolor', '#ffffff');
rlm@46 1566 rect2.setAttribute('strokecolor', 'green');
rlm@46 1567 rect2.setAttribute('strokeweight', '1px');
rlm@46 1568
rlm@46 1569
rlm@46 1570 var rect3 = this.container.ownerDocument.createElement('v:rect');
rlm@46 1571 rect3.style.position = 'relative';
rlm@46 1572 rect3.style.left = box.width+5;
rlm@46 1573 rect3.style.top = box.height+5;
rlm@46 1574 rect3.style.width = 10;
rlm@46 1575 rect3.style.height = 10;
rlm@46 1576 rect3.setAttribute('filled', 'true');
rlm@46 1577 rect3.setAttribute('stroked', 'true');
rlm@46 1578 rect3.setAttribute('fillcolor', '#ffffff');
rlm@46 1579 rect3.setAttribute('strokecolor', 'green');
rlm@46 1580 rect3.setAttribute('strokeweight', '1px');
rlm@46 1581
rlm@46 1582 var rect4 = this.container.ownerDocument.createElement('v:rect');
rlm@46 1583 rect4.style.position = 'relative';
rlm@46 1584 rect4.style.left = -10-5;
rlm@46 1585 rect4.style.top = box.height+5;
rlm@46 1586 rect4.style.width = 10;
rlm@46 1587 rect4.style.height = 10;
rlm@46 1588 rect4.setAttribute('filled', 'true');
rlm@46 1589 rect4.setAttribute('stroked', 'true');
rlm@46 1590 rect4.setAttribute('fillcolor', '#ffffff');
rlm@46 1591 rect4.setAttribute('strokecolor', 'green');
rlm@46 1592 rect4.setAttribute('strokeweight', '1px');
rlm@46 1593
rlm@46 1594
rlm@46 1595
rlm@46 1596 var rectmid12 = this.container.ownerDocument.createElement('v:rect');
rlm@46 1597 rectmid12.style.position = 'relative';
rlm@46 1598 rectmid12.style.left = (box.width/2) -5;
rlm@46 1599 rectmid12.style.top =- 10-5;
rlm@46 1600 rectmid12.style.width = 10;
rlm@46 1601 rectmid12.style.height = 10;
rlm@46 1602 rectmid12.setAttribute('filled', 'true');
rlm@46 1603 rectmid12.setAttribute('stroked', 'true');
rlm@46 1604 rectmid12.setAttribute('fillcolor', '#ffffff');
rlm@46 1605 rectmid12.setAttribute('strokecolor', 'green');
rlm@46 1606 rectmid12.setAttribute('strokeweight', '1px');
rlm@46 1607
rlm@46 1608 var rectmid23 = this.container.ownerDocument.createElement('v:rect');
rlm@46 1609 rectmid23.style.position = 'relative';
rlm@46 1610 rectmid23.style.left = box.width +5;
rlm@46 1611 rectmid23.style.top = (box.height/2)-5;
rlm@46 1612 rectmid23.style.width = 10;
rlm@46 1613 rectmid23.style.height = 10;
rlm@46 1614 rectmid23.setAttribute('filled', 'true');
rlm@46 1615 rectmid23.setAttribute('stroked', 'true');
rlm@46 1616 rectmid23.setAttribute('fillcolor', '#ffffff');
rlm@46 1617 rectmid23.setAttribute('strokecolor', 'green');
rlm@46 1618 rectmid23.setAttribute('strokeweight', '1px');
rlm@46 1619
rlm@46 1620 var rectmid34 = this.container.ownerDocument.createElement('v:rect');
rlm@46 1621 rectmid34.style.position = 'relative';
rlm@46 1622 rectmid34.style.left = (box.width/2)-5;
rlm@46 1623 rectmid34.style.top = box.height+5;
rlm@46 1624 rectmid34.style.width = 10;
rlm@46 1625 rectmid34.style.height = 10;
rlm@46 1626 rectmid34.setAttribute('filled', 'true');
rlm@46 1627 rectmid34.setAttribute('stroked', 'true');
rlm@46 1628 rectmid34.setAttribute('fillcolor', '#ffffff');
rlm@46 1629 rectmid34.setAttribute('strokecolor', 'green');
rlm@46 1630 rectmid34.setAttribute('strokeweight', '1px');
rlm@46 1631
rlm@46 1632
rlm@46 1633 var rectmid41 = this.container.ownerDocument.createElement('v:rect');
rlm@46 1634 rectmid41.style.position = 'relative';
rlm@46 1635 rectmid41.style.left = -10-5 ;
rlm@46 1636 rectmid41.style.top =(box.height/2)-5;
rlm@46 1637 rectmid41.style.width = 10;
rlm@46 1638 rectmid41.style.height = 10;
rlm@46 1639 rectmid41.setAttribute('filled', 'true');
rlm@46 1640 rectmid41.setAttribute('stroked', 'true');
rlm@46 1641 rectmid41.setAttribute('fillcolor', '#ffffff');
rlm@46 1642 rectmid41.setAttribute('strokecolor', 'green');
rlm@46 1643 rectmid41.setAttribute('strokeweight', '1px');
rlm@46 1644
rlm@46 1645
rlm@46 1646
rlm@46 1647
rlm@46 1648 var colorin="#ff0000";
rlm@46 1649 var colorout="#ffffff"
rlm@46 1650
rlm@46 1651 circle1.attachEvent("onmouseover", function(event) {circle1.style.cursor= 's-resize'; circle1.setAttribute('fillcolor', colorin ); typeTransform='Rotate'; scaleType='nw'; }, false);
rlm@46 1652 circle1.attachEvent("onmouseout", function(event) {circle1.style.cursor= 'default'; circle1.setAttribute('fillcolor', colorout ); typeTransform='Rotate'; }, false); //typeTransform='rotate'
rlm@46 1653
rlm@46 1654
rlm@46 1655 rect1.attachEvent("onmouseover", function(event) {rect1.style.cursor= 'nw-resize'; rect1.setAttribute('fillcolor', colorin ); typeTransform='Scale'; scaleType='nw'; }, false);
rlm@46 1656 rect1.attachEvent("onmouseout", function(event) {rect1.style.cursor= 'default'; rect1.setAttribute('fillcolor', colorout ); typeTransform='Scale'; }, false); //typeTransform='rotate'
rlm@46 1657
rlm@46 1658 rect2.attachEvent("onmouseover", function(event) {rect2.style.cursor= 'ne-resize'; rect2.setAttribute('fillcolor', colorin ); typeTransform='Scale'; scaleType='ne';}, false);
rlm@46 1659 rect2.attachEvent("onmouseout", function(event) {rect2.style.cursor= 'default'; rect2.setAttribute('fillcolor', colorout ); typeTransform='Scale'; }, false);
rlm@46 1660
rlm@46 1661 rect3.attachEvent("onmouseover", function(event) {rect3.style.cursor= 'se-resize'; rect3.setAttribute('fillcolor', colorin ); typeTransform='Scale'; scaleType='se';}, false);
rlm@46 1662 rect3.attachEvent("onmouseout", function(event) {rect3.style.cursor= 'default'; rect3.setAttribute('fillcolor', colorout ); typeTransform='Scale'; }, false);
rlm@46 1663
rlm@46 1664 rect4.attachEvent("onmouseover", function(event) {rect4.style.cursor= 'sw-resize'; rect4.setAttribute('fillcolor', colorin ); typeTransform='Scale'; scaleType='sw';}, false);
rlm@46 1665 rect4.attachEvent("onmouseout", function(event) {rect4.style.cursor= 'default'; rect4.setAttribute('fillcolor', colorout ); typeTransform='Scale'; }, false);
rlm@46 1666
rlm@46 1667 rectmid12.attachEvent("onmouseover", function(event) {rectmid12.style.cursor= 'n-resize'; rectmid12.setAttribute('fillcolor', colorin ); typeTransform='Scale'; scaleType='n';}, false);
rlm@46 1668 rectmid12.attachEvent("onmouseout", function(event) {rectmid12.style.cursor= 'default'; rectmid12.setAttribute('fillcolor', colorout ); typeTransform=''; }, false);
rlm@46 1669
rlm@46 1670 rectmid23.attachEvent("onmouseover", function(event) {rectmid23.style.cursor= 'e-resize'; rectmid23.setAttribute('fillcolor', colorin ); typeTransform='Scale'; scaleType='e';}, false);
rlm@46 1671 rectmid23.attachEvent("onmouseout", function(event) {rectmid23.style.cursor= 'default'; rectmid23.setAttribute('fillcolor', colorout ); typeTransform=''; }, false);
rlm@46 1672
rlm@46 1673 rectmid34.attachEvent("onmouseover", function(event) {rectmid34.style.cursor= 's-resize'; rectmid34.setAttribute('fillcolor', colorin ); typeTransform='Scale'; scaleType='s';}, false);
rlm@46 1674 rectmid34.attachEvent("onmouseout", function(event) {rectmid34.style.cursor= 'default'; rectmid34.setAttribute('fillcolor', colorout ); typeTransform=''; }, false);
rlm@46 1675
rlm@46 1676 rectmid41.attachEvent("onmouseover", function(event) {rectmid41.style.cursor= 'w-resize'; rectmid41.setAttribute('fillcolor', colorin ); typeTransform='Scale'; scaleType='w'; }, false);
rlm@46 1677 rectmid41.attachEvent("onmouseout", function(event) {rectmid41.style.cursor= 'default'; rectmid41.setAttribute('fillcolor', colorout ); typeTransform=''; }, false);
rlm@46 1678 //tracker.setAttribute('transform',trshape);
rlm@46 1679
rlm@46 1680
rlm@46 1681
rlm@46 1682 tracker.appendChild(border_square);
rlm@46 1683 tracker.appendChild(border_angle);
rlm@46 1684
rlm@46 1685 tracker.appendChild(circle1);
rlm@46 1686
rlm@46 1687 tracker.appendChild(rect1);
rlm@46 1688 tracker.appendChild(rect2);
rlm@46 1689 tracker.appendChild(rect3);
rlm@46 1690 tracker.appendChild(rect4);
rlm@46 1691 tracker.appendChild(rectmid12);
rlm@46 1692 tracker.appendChild(rectmid23);
rlm@46 1693 tracker.appendChild(rectmid34);
rlm@46 1694 tracker.appendChild(rectmid41);
rlm@46 1695
rlm@46 1696 /*
rlm@46 1697
rlm@46 1698
rlm@46 1699
rlm@46 1700 */
rlm@46 1701
rlm@46 1702
rlm@46 1703 this.container.appendChild(tracker);
rlm@46 1704
rlm@46 1705
rlm@46 1706
rlm@46 1707 }
rlm@46 1708
rlm@46 1709
rlm@46 1710
rlm@46 1711
rlm@46 1712
rlm@46 1713
rlm@46 1714
rlm@46 1715
rlm@46 1716
rlm@46 1717
rlm@46 1718 VMLRenderer.prototype.getMarkup = function() {
rlm@46 1719
rlm@46 1720 return this.container.innerHTML;
rlm@46 1721 }
rlm@46 1722
rlm@46 1723
rlm@46 1724
rlm@46 1725 /////////////////////////////////
rlm@46 1726
rlm@46 1727
rlm@46 1728
rlm@46 1729 var rotatexxx=0;
rlm@46 1730
rlm@46 1731 var scaleType='';
rlm@46 1732 var xrot=0;
rlm@46 1733 var yrot=0;
rlm@46 1734
rlm@46 1735 var point = {x:0, y:0, width: 0, height:0};
rlm@46 1736
rlm@46 1737 function createPoint (x, y, width, height) {
rlm@46 1738 //var point = {x:34, y:22, width: 22, height:23};
rlm@46 1739 //point.x = x;
rlm@46 1740 //point.y = y;
rlm@46 1741 point = {x:x, y:y, width: width, height:height};
rlm@46 1742 return point;
rlm@46 1743 }
rlm@46 1744
rlm@46 1745
rlm@46 1746 /////////////////////////////////
rlm@46 1747
rlm@46 1748 VMLRenderer.prototype.restruct= function(shape)
rlm@46 1749 {
rlm@46 1750 };
rlm@46 1751
rlm@46 1752
rlm@46 1753
rlm@46 1754 VMLRenderer.prototype.transform = function() {
rlm@46 1755
rlm@46 1756 };
rlm@46 1757
rlm@46 1758 VMLRenderer.prototype.scaleShape = function(shape, previus,toX, toY) {
rlm@46 1759 // document.forms[0].code.value="escala";
rlm@46 1760
rlm@46 1761 //document.forms[0].code.value="escala";
rlm@46 1762 var box = this.bounds(shape);
rlm@46 1763 var prevbox=this.bounds(previus);
rlm@46 1764 var centerx= box.x+(box.width/2);
rlm@46 1765 var centery= box.y+(box.height/2);
rlm@46 1766 var coord=this.editor.inputxy;
rlm@46 1767 toX=parseFloat(coord[0]);
rlm@46 1768 toY=parseFloat(coord[1]);
rlm@46 1769 var d2p_center=dist2p(centerx,centery,toX,toY);
rlm@46 1770
rlm@46 1771 var d2p=dist2p(box.x,box.y,toX,toY);
rlm@46 1772
rlm@46 1773 var shareScale=box.width/d2p;
rlm@46 1774
rlm@46 1775 var trans_ShareScale='';
rlm@46 1776 var tx, ty, tw, yh;
rlm@46 1777
rlm@46 1778 if(scaleType.length==1){
rlm@46 1779 if(scaleType== 'w')
rlm@46 1780 {
rlm@46 1781 trans_ShareScale=shareScale+",1";
rlm@46 1782 tx=toX;
rlm@46 1783 ty=prevbox.y;
rlm@46 1784 var dist=prevbox.x-toX;
rlm@46 1785 var w=dist+prevbox.width;
rlm@46 1786 if(w<1){w=1;}
rlm@46 1787 tw=w;
rlm@46 1788 th=prevbox.height;
rlm@46 1789 //document.forms[0].code.value=box.x+' '+toX+' '+dist+'';
rlm@46 1790 }
rlm@46 1791 if(scaleType== 'e')
rlm@46 1792 {
rlm@46 1793 trans_ShareScale=shareScale+",1";
rlm@46 1794 tx=prevbox.x;
rlm@46 1795 ty=prevbox.y;
rlm@46 1796 var dist=toX-(prevbox.x+prevbox.width); //dist2p(toX,b,c,d);
rlm@46 1797 var w=dist+prevbox.width;
rlm@46 1798 if(w<1){w=1;}
rlm@46 1799 tw=w;
rlm@46 1800 th=prevbox.height;
rlm@46 1801
rlm@46 1802 }
rlm@46 1803 if(scaleType== 'n')
rlm@46 1804 {
rlm@46 1805 trans_ShareScale="1,"+shareScale;
rlm@46 1806
rlm@46 1807 tx=prevbox.x;
rlm@46 1808 ty=toY;
rlm@46 1809 var dist=prevbox.y-toY;
rlm@46 1810 var h=dist+prevbox.height;
rlm@46 1811 if(h<1){h=1;}
rlm@46 1812 tw=prevbox.width;
rlm@46 1813 th=h;
rlm@46 1814
rlm@46 1815 }
rlm@46 1816 if( scaleType== 's')
rlm@46 1817 {
rlm@46 1818 trans_ShareScale="1,"+shareScale;
rlm@46 1819
rlm@46 1820 tx=prevbox.x;
rlm@46 1821 ty=prevbox.y;
rlm@46 1822 var dist=toY-(prevbox.y+prevbox.height); //dist2p(toX,b,c,d);
rlm@46 1823 var h=dist+prevbox.height;
rlm@46 1824 if(h<1){h=1;}
rlm@46 1825 tw=prevbox.width;
rlm@46 1826 th=h;
rlm@46 1827
rlm@46 1828 }
rlm@46 1829 }
rlm@46 1830 if(scaleType.length==2){
rlm@46 1831 if(scaleType== 'nw'){
rlm@46 1832 trans_ShareScale=shareScale+","+shareScale;
rlm@46 1833
rlm@46 1834 //var angle_diagonal=getAngle(prevbox.width,prevbox.height);
rlm@46 1835 var angle_diagonal=ang2v(prevbox.x,prevbox.y,prevbox.x+prevbox.width,prevbox.y+prevbox.height)
rlm@46 1836
rlm@46 1837 var ax= prevbox.x;
rlm@46 1838 var ay= prevbox.y;
rlm@46 1839 var bx= prevbox.x+prevbox.width;
rlm@46 1840 var by= prevbox.y+prevbox.height;
rlm@46 1841
rlm@46 1842 var cx= toX;
rlm@46 1843 var cy= toY;
rlm@46 1844 var dx= toX+10*Math.cos(angle_diagonal+(Math.PI/2));
rlm@46 1845 var dy= toY+10*Math.sin(angle_diagonal+(Math.PI/2));
rlm@46 1846 var section_a=ntrsccn2rb(ax,ay,bx,by,cx,cy,dx,dy);
rlm@46 1847 this.editor.log(angle_diagonal* 180 / Math.PI);
rlm@46 1848
rlm@46 1849 var tx= section_a[1];
rlm@46 1850 var ty= section_a[2];
rlm@46 1851
rlm@46 1852 var ax= section_a[1];
rlm@46 1853 var ay= section_a[2];
rlm@46 1854 var bx= 0;
rlm@46 1855 var by= section_a[2] ;
rlm@46 1856
rlm@46 1857 var cx=prevbox.x+prevbox.width;
rlm@46 1858 var cy= prevbox.y;
rlm@46 1859
rlm@46 1860 var dx= prevbox.x+prevbox.width;
rlm@46 1861 var dy= 0;
rlm@46 1862
rlm@46 1863
rlm@46 1864 var section_b=ntrsccn2rb(ax,ay,bx,by,cx,cy,dx,dy);
rlm@46 1865
rlm@46 1866 var distx=dist2p(section_a[1],section_a[2],section_b[1],section_b[2]);
rlm@46 1867
rlm@46 1868 var ax= section_a[1];
rlm@46 1869 var ay= section_a[2];
rlm@46 1870 var bx= section_a[1]
rlm@46 1871 var by= 0;
rlm@46 1872
rlm@46 1873 var cx= prevbox.x;
rlm@46 1874 var cy= prevbox.y+prevbox.height;
rlm@46 1875
rlm@46 1876 var dx= 0;
rlm@46 1877 var dy= prevbox.y+prevbox.height;
rlm@46 1878
rlm@46 1879
rlm@46 1880 var section_c=ntrsccn2rb(ax,ay,bx,by,cx,cy,dx,dy);
rlm@46 1881
rlm@46 1882 var disty=dist2p(section_a[1],section_a[2],section_c[1],section_c[2]);
rlm@46 1883
rlm@46 1884
rlm@46 1885
rlm@46 1886
rlm@46 1887
rlm@46 1888 if(distx<1){distx=1;}
rlm@46 1889
rlm@46 1890
rlm@46 1891 if(disty<1){disty=1;}
rlm@46 1892 //document.forms[0].code.value=distx+' '+disty;
rlm@46 1893 tw=distx;
rlm@46 1894 th=disty;
rlm@46 1895
rlm@46 1896
rlm@46 1897 }
rlm@46 1898
rlm@46 1899 //////////////////// SE
rlm@46 1900
rlm@46 1901 if( scaleType== 'se'){
rlm@46 1902 trans_ShareScale=shareScale+","+shareScale;
rlm@46 1903
rlm@46 1904
rlm@46 1905 //var angle_diagonal=getAngle(prevbox.width,prevbox.height);
rlm@46 1906 var angle_diagonal=ang2v(prevbox.x,prevbox.y,prevbox.x+prevbox.width,prevbox.y+prevbox.height)
rlm@46 1907
rlm@46 1908
rlm@46 1909
rlm@46 1910 var ax= prevbox.x;
rlm@46 1911 var ay= prevbox.y;
rlm@46 1912 var bx= prevbox.x+prevbox.width;
rlm@46 1913 var by= prevbox.y+prevbox.height;
rlm@46 1914
rlm@46 1915 var cx= toX;
rlm@46 1916 var cy= toY;
rlm@46 1917 var dx= toX+10*Math.cos(angle_diagonal+(Math.PI/2));
rlm@46 1918 var dy= toY+10*Math.sin(angle_diagonal+(Math.PI/2));
rlm@46 1919
rlm@46 1920 var section_a=ntrsccn2rb(ax,ay,bx,by,cx,cy,dx,dy);
rlm@46 1921
rlm@46 1922
rlm@46 1923
rlm@46 1924 //////////
rlm@46 1925 var tx= prevbox.x;
rlm@46 1926 var ty= prevbox.y;
rlm@46 1927
rlm@46 1928 var ax= section_a[1];
rlm@46 1929 var ay= section_a[2];
rlm@46 1930 var bx= 0;
rlm@46 1931 var by= section_a[2] ;
rlm@46 1932
rlm@46 1933 var cx=prevbox.x;
rlm@46 1934 var cy= prevbox.y;
rlm@46 1935
rlm@46 1936 var dx= prevbox.x;
rlm@46 1937 var dy= 0;
rlm@46 1938
rlm@46 1939
rlm@46 1940 var section_b=ntrsccn2rb(ax,ay,bx,by,cx,cy,dx,dy);
rlm@46 1941
rlm@46 1942 /////////////////
rlm@46 1943
rlm@46 1944
rlm@46 1945 var distx=dist2p(section_a[1],section_a[2],section_b[1],section_b[2]);
rlm@46 1946
rlm@46 1947
rlm@46 1948 var ax= section_a[1];
rlm@46 1949 var ay= section_a[2];
rlm@46 1950 var bx= section_a[1]
rlm@46 1951 var by= 0;
rlm@46 1952
rlm@46 1953 var cx= prevbox.x;
rlm@46 1954 var cy= prevbox.y;
rlm@46 1955
rlm@46 1956 var dx=0;
rlm@46 1957 var dy= prevbox.y;
rlm@46 1958
rlm@46 1959
rlm@46 1960 var section_c=ntrsccn2rb(ax,ay,bx,by,cx,cy,dx,dy);
rlm@46 1961
rlm@46 1962 ///////////////
rlm@46 1963
rlm@46 1964 var disty=dist2p(section_a[1],section_a[2],section_c[1],section_c[2]);
rlm@46 1965
rlm@46 1966
rlm@46 1967
rlm@46 1968 if(distx<1){distx=1;}
rlm@46 1969
rlm@46 1970
rlm@46 1971 if(disty<1){disty=1;}
rlm@46 1972
rlm@46 1973 tw=distx;
rlm@46 1974 th=disty;
rlm@46 1975
rlm@46 1976
rlm@46 1977 }
rlm@46 1978
rlm@46 1979 if(scaleType== 'ne'){
rlm@46 1980
rlm@46 1981 trans_ShareScale=shareScale+","+shareScale;
rlm@46 1982
rlm@46 1983 var angle_diagonal=ang2v(prevbox.x,prevbox.y+prevbox.height,prevbox.x+prevbox.width,prevbox.y)
rlm@46 1984 //var angle_diagonal=getAngle(prevbox.width,prevbox.height);
rlm@46 1985
rlm@46 1986
rlm@46 1987
rlm@46 1988
rlm@46 1989 var ax= prevbox.x;
rlm@46 1990 var ay= prevbox.y+prevbox.height;
rlm@46 1991 var bx= prevbox.x+prevbox.width;
rlm@46 1992 var by= prevbox.y;
rlm@46 1993
rlm@46 1994 var cx= toX;
rlm@46 1995 var cy= toY;
rlm@46 1996 var dx= toX+10*Math.cos(angle_diagonal+(Math.PI/2));
rlm@46 1997 var dy= toY+10*Math.sin(angle_diagonal+(Math.PI/2));
rlm@46 1998
rlm@46 1999
rlm@46 2000 this.editor.log(angle_diagonal);
rlm@46 2001
rlm@46 2002
rlm@46 2003 var section_a=ntrsccn2rb(ax,ay,bx,by,cx,cy,dx,dy);
rlm@46 2004
rlm@46 2005
rlm@46 2006
rlm@46 2007 //////////
rlm@46 2008 var tx= prevbox.x;
rlm@46 2009 var ty= section_a[2];
rlm@46 2010
rlm@46 2011 var ax= section_a[1];
rlm@46 2012 var ay= section_a[2];
rlm@46 2013 var bx= 0;
rlm@46 2014 var by= section_a[2] ;
rlm@46 2015
rlm@46 2016 var cx=prevbox.x;
rlm@46 2017 var cy= prevbox.y;
rlm@46 2018
rlm@46 2019 var dx= prevbox.x;
rlm@46 2020 var dy= 0;
rlm@46 2021
rlm@46 2022
rlm@46 2023 var section_b=ntrsccn2rb(ax,ay,bx,by,cx,cy,dx,dy);
rlm@46 2024
rlm@46 2025 /////////////////
rlm@46 2026
rlm@46 2027
rlm@46 2028 var distx=dist2p(section_a[1],section_a[2],section_b[1],section_b[2]);
rlm@46 2029
rlm@46 2030
rlm@46 2031 var ax= section_a[1];
rlm@46 2032 var ay= section_a[2];
rlm@46 2033 var bx= section_a[1];
rlm@46 2034 var by= 0;
rlm@46 2035
rlm@46 2036 var cx= prevbox.x;
rlm@46 2037 var cy= prevbox.y+prevbox.height;
rlm@46 2038
rlm@46 2039 var dx=0;
rlm@46 2040 var dy= prevbox.y+prevbox.height;
rlm@46 2041
rlm@46 2042
rlm@46 2043 var section_c=ntrsccn2rb(ax,ay,bx,by,cx,cy,dx,dy);
rlm@46 2044
rlm@46 2045 ///////////////
rlm@46 2046
rlm@46 2047 var disty=dist2p(section_a[1],section_a[2],section_c[1],section_c[2]);
rlm@46 2048
rlm@46 2049
rlm@46 2050
rlm@46 2051 if(distx<1){distx=1;}
rlm@46 2052
rlm@46 2053
rlm@46 2054 if(disty<1){disty=1;}
rlm@46 2055 //document.forms[0].code.value=distx+' '+disty;
rlm@46 2056 tw=distx;
rlm@46 2057 th=disty;
rlm@46 2058
rlm@46 2059
rlm@46 2060
rlm@46 2061
rlm@46 2062
rlm@46 2063 }
rlm@46 2064 if(scaleType== 'sw'){
rlm@46 2065 trans_ShareScale=shareScale+","+shareScale;
rlm@46 2066
rlm@46 2067
rlm@46 2068
rlm@46 2069
rlm@46 2070 var angle_diagonal=ang2v(prevbox.x,prevbox.y+prevbox.height,prevbox.x+prevbox.width,prevbox.y)
rlm@46 2071 //var angle_diagonal=getAngle(prevbox.width,prevbox.height);
rlm@46 2072
rlm@46 2073
rlm@46 2074
rlm@46 2075
rlm@46 2076 var ax= prevbox.x;
rlm@46 2077 var ay= prevbox.y+prevbox.height;
rlm@46 2078 var bx= prevbox.x+prevbox.width;
rlm@46 2079 var by= prevbox.y;
rlm@46 2080
rlm@46 2081 var cx= toX;
rlm@46 2082 var cy= toY;
rlm@46 2083 var dx= toX+10*Math.cos(angle_diagonal+(Math.PI/2));
rlm@46 2084 var dy= toY+10*Math.sin(angle_diagonal+(Math.PI/2));
rlm@46 2085
rlm@46 2086
rlm@46 2087 this.editor.log(angle_diagonal);
rlm@46 2088
rlm@46 2089
rlm@46 2090 var section_a=ntrsccn2rb(ax,ay,bx,by,cx,cy,dx,dy);
rlm@46 2091
rlm@46 2092
rlm@46 2093 //////////
rlm@46 2094 var tx= section_a[1];
rlm@46 2095 var ty= prevbox.y;
rlm@46 2096
rlm@46 2097 var ax= section_a[1];
rlm@46 2098 var ay= section_a[2];
rlm@46 2099 var bx= 0;
rlm@46 2100 var by= section_a[2] ;
rlm@46 2101
rlm@46 2102 var cx=prevbox.x+prevbox.width;
rlm@46 2103 var cy= prevbox.y+prevbox.height;
rlm@46 2104
rlm@46 2105 var dx= prevbox.x+prevbox.width;
rlm@46 2106 var dy= 0;
rlm@46 2107
rlm@46 2108
rlm@46 2109 var section_b=ntrsccn2rb(ax,ay,bx,by,cx,cy,dx,dy);
rlm@46 2110 var distx=dist2p(section_a[1],section_a[2],section_b[1],section_b[2]);
rlm@46 2111
rlm@46 2112 /////////////////
rlm@46 2113 var ax= section_a[1];
rlm@46 2114 var ay= section_a[2];
rlm@46 2115 var bx= section_a[1];
rlm@46 2116 var by= 0;
rlm@46 2117
rlm@46 2118 var cx= prevbox.x;
rlm@46 2119 var cy= prevbox.y;
rlm@46 2120
rlm@46 2121 var dx=0;
rlm@46 2122 var dy= prevbox.y;
rlm@46 2123
rlm@46 2124
rlm@46 2125 var section_c=ntrsccn2rb(ax,ay,bx,by,cx,cy,dx,dy);
rlm@46 2126 var disty=dist2p(section_a[1],section_a[2],section_c[1],section_c[2]);
rlm@46 2127 ///////////////
rlm@46 2128
rlm@46 2129
rlm@46 2130
rlm@46 2131 if(distx<1){distx=1;}
rlm@46 2132
rlm@46 2133
rlm@46 2134 if(disty<1){disty=1;}
rlm@46 2135 //document.forms[0].code.value=distx+' '+disty;
rlm@46 2136 tw=distx;
rlm@46 2137 th=disty;
rlm@46 2138
rlm@46 2139 }
rlm@46 2140
rlm@46 2141 }
rlm@46 2142
rlm@46 2143
rlm@46 2144
rlm@46 2145 if(shape.tagName == 'rect')
rlm@46 2146 {
rlm@46 2147 //alert(data[0]);
rlm@46 2148
rlm@46 2149
rlm@46 2150 shape.style.left = tx + 'px';
rlm@46 2151 shape.style.top = ty + 'px';
rlm@46 2152 shape.style.height = th + 'px';
rlm@46 2153 shape.style.width = tw + 'px';
rlm@46 2154
rlm@46 2155 }
rlm@46 2156 else
rlm@46 2157 if(shape.tagName == 'text')
rlm@46 2158 {
rlm@46 2159 /*
rlm@46 2160 shape.setAttribute('x',tx);
rlm@46 2161 shape.setAttribute('y',ty);
rlm@46 2162 shape.setAttribute('width', tw);
rlm@46 2163 shape.setAttribute('height', th);
rlm@46 2164
rlm@46 2165 //previus.setAttribute('transform', "scale("+trans_ShareScale+")");
rlm@46 2166 shape.setAttribute('x', tx + 'px');
rlm@46 2167 shape.setAttribute('y', ty + 'px');
rlm@46 2168
rlm@46 2169 shape.setAttribute('textLength', parseInt(Math.round(tw)));
rlm@46 2170
rlm@46 2171 */
rlm@46 2172 }
rlm@46 2173 else
rlm@46 2174 if(shape.tagName == 'oval')
rlm@46 2175 {
rlm@46 2176 //shape.getAttribute('transform)
rlm@46 2177
rlm@46 2178 shape.style.left = tx + 'px';
rlm@46 2179 shape.style.top = ty + 'px';
rlm@46 2180 shape.style.height = th + 'px';
rlm@46 2181 shape.style.width = tw + 'px';
rlm@46 2182
rlm@46 2183
rlm@46 2184 }
rlm@46 2185 else
rlm@46 2186 if(shape.tagName == 'line')
rlm@46 2187 {
rlm@46 2188 shape.setAttribute('to',tx + 'px,' + ty + 'px');
rlm@46 2189 shape.setAttribute('from', tw + 'px,' + th + 'px');
rlm@46 2190
rlm@46 2191
rlm@46 2192 }
rlm@46 2193 else
rlm@46 2194 if (shape.tagName == 'polyline')
rlm@46 2195 {
rlm@46 2196
rlm@46 2197 }
rlm@46 2198 else
rlm@46 2199 if (shape.tagName == 'image')
rlm@46 2200 {
rlm@46 2201
rlm@46 2202 shape.style.left = tx + 'px';
rlm@46 2203 shape.style.top = ty + 'px';
rlm@46 2204 shape.style.height = th + 'px';
rlm@46 2205 shape.style.width = tw + 'px';
rlm@46 2206
rlm@46 2207 }
rlm@46 2208 else
rlm@46 2209 if (shape.tagName == 'shape')
rlm@46 2210 {
rlm@46 2211
rlm@46 2212 shape.style.left = tx + 'px';
rlm@46 2213 shape.style.top = ty + 'px';
rlm@46 2214 shape.style.height = th + 'px';
rlm@46 2215 shape.style.width = tw + 'px';
rlm@46 2216
rlm@46 2217 //document.forms[0].code.value='';
rlm@46 2218 //shape.setAttribute('transform', "scale("+trans_ShareScale+")");
rlm@46 2219
rlm@46 2220 }
rlm@46 2221
rlm@46 2222
rlm@46 2223
rlm@46 2224
rlm@46 2225
rlm@46 2226 };
rlm@46 2227
rlm@46 2228
rlm@46 2229
rlm@46 2230 VMLRenderer.prototype.rotateShape = function(shape, previus,toX, toY) {
rlm@46 2231
rlm@46 2232
rlm@46 2233
rlm@46 2234 //document.forms[0].code.value=$('xyinput').innerHTML;
rlm@46 2235 //document.getElementById('richdraw').style.cursor='e-resize';
rlm@46 2236 var box = this.bounds(shape);
rlm@46 2237 var prevbox=this.bounds(previus);
rlm@46 2238 var centerx= box.x+(box.width/2);
rlm@46 2239 var centery= box.y+(box.height/2);
rlm@46 2240 var coord=this.editor.inputxy;
rlm@46 2241
rlm@46 2242 var actual_angle=ang2v(centerx,centery,coord[0], coord[1]);
rlm@46 2243
rlm@46 2244 if(xrot<toX) { rotatexxx+=1;}else{rotatexxx-=1;}
rlm@46 2245 xrot=toX;
rlm@46 2246 yrot=toY;
rlm@46 2247
rlm@46 2248 var xtr=0;
rlm@46 2249 var ytr=0;
rlm@46 2250
rlm@46 2251 //var box= shape.getBBox();
rlm@46 2252 var tr1x= box.x;
rlm@46 2253 var tr1y= box.y;
rlm@46 2254
rlm@46 2255
rlm@46 2256
rlm@46 2257 toX+=xtr;
rlm@46 2258 toY+=xtr;
rlm@46 2259
rlm@46 2260 //var trax=parseFloat(toX-box.x); var tray= parseFloat(toY-box.y);
rlm@46 2261 var trax=parseFloat(box.x/2); var tray= parseFloat(box.y/2);
rlm@46 2262 var angler=Math.atan2(toX,toY);
rlm@46 2263 var angle=angler*180/Math.PI;
rlm@46 2264 // var T = shape.getCTM();
rlm@46 2265 //var rotini=T.a*(180 / Math.PI);
rlm@46 2266 //var angle=rotini*180/Math.PI;
rlm@46 2267 //var rot_angle=actual_angle*180/Math.PI;
rlm@46 2268 //document.forms[0].code.value=centerx+' '+centery+' '+coord[0]+' '+coord[1]+'____ '+rot_angle+' '+actual_angle*180/Math.PI;
rlm@46 2269
rlm@46 2270
rlm@46 2271 // matrix( a, b, c, d, e, f )
rlm@46 2272 // a c e
rlm@46 2273 // b d f
rlm@46 2274 // 0 0 1
rlm@46 2275 //a scale factor of 2, a rotation of 30 deg and a translation of (500,50)
rlm@46 2276 //T 1.732 -1 500 1 1.732 50 0 0 1
rlm@46 2277 //T 1 ad-bc d -c -de+cf -b a be-df 0 0 1
rlm@46 2278
rlm@46 2279 //shape.setAttribute('transform', "translate("+(-xshe)+","+(-yshe)+")");
rlm@46 2280
rlm@46 2281 // shape.setAttribute("transform", " matrix( a, b, c, d, e, f )");
rlm@46 2282 // shape.setAttribute('transform', "translate("+(box.x+(box.width/2))+","+(box.y+(box.height/2))+") rotate("+rotatexxx+") ");
rlm@46 2283 //shape.setAttribute('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))+") ");
rlm@46 2284 //shape.setAttribute('transform', "rotate("+rotatexxx+","+(box.x+(box.width/2))+","+(box.y+(box.height/2))+")");
rlm@46 2285 //shape.setAttribute('transform', "rotate("+rotatexxx+","+(prevbox.x+(prevbox.width/2))+","+(prevbox.y+(prevbox.height/2))+")");
rlm@46 2286 //shape.setAttribute('rotation', rot_angle);
rlm@46 2287 shape.setAttribute('rotation', angle);
rlm@46 2288 //(prevbox.x+(prevbox.width/2))+","+(prevbox.y+(prevbox.height/2))+")");
rlm@46 2289
rlm@46 2290
rlm@46 2291
rlm@46 2292 }
rlm@46 2293
rlm@46 2294 //////////////////////////////
rlm@46 2295 /*H = 0;
rlm@46 2296 W = 0;
rlm@46 2297 LX = new Array();
rlm@46 2298 S = new Array();
rlm@46 2299 i = 0;
rlm@46 2300 b = true;
rlm@46 2301
rlm@46 2302 function SVG2VML(i){
rlm@46 2303 l = L[i];
rlm@46 2304 if(l.indexOf(" d=")>0){
rlm@46 2305 p = l.indexOf("fill:")+6;
rlm@46 2306 C = l.substring(p,p+7);
rlm@46 2307 p = l.indexOf(" d=")+4;
rlm@46 2308 q = l.lastIndexOf("z")-1;
rlm@46 2309 l = l.substring(p,q);
rlm@46 2310 l = l.replace(/M/g,"m");
rlm@46 2311 l = l.replace(/c/g,"v");
rlm@46 2312 l = l.replace(/l/g,"r");
rlm@46 2313 S = l.split(" ");
rlm@46 2314 l="";
rlm@46 2315 for(var j in S){
rlm@46 2316 c = S[j];
rlm@46 2317 p = c.substring(0,1);
rlm@46 2318 d = p>"9"?p:"";
rlm@46 2319 n = Math.round(c.substring(d!="") * 100);
rlm@46 2320 l+= (d+n+" ");
rlm@46 2321 }
rlm@46 2322 LX[i] = l;
rlm@46 2323 code = '<v:shape coordsize="'+(W*100)+','+(H*100)+'" class=vml strokeweight="2" strokecolor="'+C+'" filled="false" fillcolor = "'+C+'"/>';
rlm@46 2324 VML.insertAdjacentHTML("beforeEnd",code);
rlm@46 2325 } else {
rlm@46 2326 L[i] = LX[i] = ""
rlm@46 2327 VML.insertAdjacentHTML("beforeEnd","<span></span>");
rlm@46 2328 }
rlm@46 2329 }
rlm@46 2330 */
rlm@46 2331 //http://msdn2.microsoft.com/en-us/library/bb263897(VS.85).aspx
rlm@46 2332 //http://www.w3.org/TR/NOTE-VML
rlm@46 2333 //http://trac.openlayers.org/changeset/5285
rlm@46 2334 //http://vectorconverter.sourceforge.net/index.html
rlm@46 2335 //http://www.dhteumeuleu.com/colorsyntax/viewJS.php?src=svg2vml1.html
rlm@46 2336
rlm@46 2337
rlm@46 2338 VMLRenderer.prototype.getshapes = function(){
rlm@46 2339 return this.container.childNodes;
rlm@46 2340 }
rlm@46 2341
rlm@46 2342
rlm@46 2343 VMLRenderer.prototype.reflect = function(HorV) {
rlm@46 2344 };
rlm@46 2345
rlm@46 2346
rlm@46 2347
rlm@46 2348