OpenLayers OpenLayers

Ticket #1095: vml.patch

File vml.patch, 4.2 kB (added by tschaub, 1 year ago)

vml path creation

  • lib/OpenLayers/Renderer/VML.js

    old new  
    460460        this.setNodeDimension(node, geometry); 
    461461 
    462462        var resolution = this.getResolution(); 
     463        var numComponents = geometry.components.length; 
     464        var parts = new Array(numComponents); 
    463465 
    464         var path = "m"; 
    465         for (var i = 0; i < geometry.components.length; i++) { 
    466             var x = (geometry.components[i].x/resolution); 
    467             var y = (geometry.components[i].y/resolution); 
    468             path += " " + x.toFixed() + "," + y.toFixed() + " l "; 
     466        var comp, x, y; 
     467        for (var i = 0; i < numComponents; i++) { 
     468            comp = geometry.components[i]; 
     469            x = (comp.x/resolution); 
     470            y = (comp.y/resolution); 
     471            parts[i] = " " + x.toFixed() + "," + y.toFixed() + " l "; 
    469472        } 
    470         if (closeLine) { 
    471             path += " x"; 
    472         } 
    473         path += " e"; 
    474  
    475         node.path = path; 
     473        var end = (closeLine) ? " x e" : " e"; 
     474        node.path = "m" + path.join("") + end; 
    476475    }, 
    477476 
    478477    /** 
     
    488487 
    489488        var resolution = this.getResolution(); 
    490489     
    491         var path = ""; 
     490        var path = []; 
     491        var linearRing, i, comp, x, y; 
    492492        for (var j = 0; j < geometry.components.length; j++) { 
    493             var linearRing = geometry.components[j]; 
     493            linearRing = geometry.components[j]; 
    494494 
    495             path += "m"; 
    496             for (var i = 0; i < linearRing.components.length; i++) { 
    497                 var x = linearRing.components[i].x / resolution; 
    498                 var y = linearRing.components[i].y / resolution; 
    499                 path += " " + x.toFixed() + "," + y.toFixed(); 
     495            path.push("m"); 
     496            for (i = 0; i < linearRing.components.length; i++) { 
     497                comp = linearRing.components[i]; 
     498                x = comp.x / resolution; 
     499                y = comp.y / resolution; 
     500                path.push(" " + x.toFixed() + "," + y.toFixed()); 
    500501                if (i==0) { 
    501                     path += " l"
     502                    path.push(" l")
    502503                } 
    503504            } 
    504             path += " x "
     505            path.push(" x ")
    505506        } 
    506         path += "e"
    507         node.path = path
     507        path.push("e")
     508        node.path = path.join("")
    508509    }, 
    509510 
    510511    /** 
     
    538539 
    539540        var resolution = this.getResolution(); 
    540541     
    541         var path = ""; 
     542        var path = []; 
     543        var comp, x, y; 
    542544        for (var i = 0; i < geometry.components.length; i++) { 
    543             var x = geometry.components[i].x / resolution; 
    544             var y = geometry.components[i].y / resolution; 
     545            comp = geometry.components[i]; 
     546            x = comp.x / resolution; 
     547            y = comp.y / resolution; 
    545548     
    546549            if ((i%3)==0 && (i/3)==0) { 
    547                 path += "m"
     550                path.push("m")
    548551            } else if ((i%3)==1) { 
    549                 path += " c"
     552                path.push(" c")
    550553            } 
    551             path += " " + x + "," + y
     554            path.push(" " + x + "," + y)
    552555        } 
    553         path += " x e"
     556        path.push(" x e")
    554557 
    555         node.path = path
     558        node.path = path.join("")
    556559    }, 
    557560 
    558561    /** 
     
    568571 
    569572        var resolution = this.getResolution(); 
    570573     
    571         var path = ""; 
     574        var path = []; 
     575        var comp, x, y; 
    572576        for (var i = 0; i < geometry.components.length; i++) { 
    573             var x = geometry.components[i].x / resolution; 
    574             var y = geometry.components[i].y / resolution; 
     577            comp = geometry.components[i]; 
     578            x = comp.x / resolution; 
     579            y = comp.y / resolution; 
    575580            if ((i%3)==0 && (i/3)==0) { 
    576                 path += "m"
     581                path.push("m")
    577582            } else if ((i%3)==1) { 
    578                 path += " c"
     583                path.push(" c")
    579584            } 
    580             path += " " + x + "," + y
     585            path.push(" " + x + "," + y)
    581586        } 
    582         path += " x e"
     587        path.push(" x e")
    583588 
    584         node.path = path
     589        node.path = path.join("")
    585590    }, 
    586591 
    587592    CLASS_NAME: "OpenLayers.Renderer.VML"