From 12d3c86eb40626392e95e1dc256b0f4c62b49481 Mon Sep 17 00:00:00 2001 From: ahocevar Date: Fri, 15 Oct 2010 13:47:35 +0000 Subject: [PATCH] Avoid VML rendering issues with zero area inner rings. We don't actually do an expensive area calculation, but just make sure that we have at least three distinct points. This version is slightly different from Tim's previous patch: it compares the VML path components rathter than the geometry components, which is less expensive and more reliable (because the VML path uses integers). p=tschaub,me r=me (closes #2876) git-svn-id: http://svn.openlayers.org/trunk/openlayers@10837 dc9f47b5-9b13-0410-9fdd-eb0c1a62fdaf --- examples/snapping.html | 2 +- lib/OpenLayers/Renderer/VML.js | 38 +++++++++++++++++++++++++++------- tests/Renderer/VML.html | 32 ++++++++-------------------- 3 files changed, 40 insertions(+), 32 deletions(-) diff --git a/examples/snapping.html b/examples/snapping.html index c59e4c96cb..7a7c3048d2 100644 --- a/examples/snapping.html +++ b/examples/snapping.html @@ -164,7 +164,7 @@ }); draw = new OpenLayers.Control.DrawFeature( poly, OpenLayers.Handler.Polygon, - {displayClass: "olControlDrawFeaturePoint", title: "Draw Features"} + {displayClass: "olControlDrawFeaturePoint", title: "Draw Features", handlerOptions: {holeModifier: "altKey"}} ); modify = new OpenLayers.Control.ModifyFeature( poly, {displayClass: "olControlModifyFeature", title: "Modify Features"} diff --git a/lib/OpenLayers/Renderer/VML.js b/lib/OpenLayers/Renderer/VML.js index a3c02e04ba..25dfdaf98c 100644 --- a/lib/OpenLayers/Renderer/VML.js +++ b/lib/OpenLayers/Renderer/VML.js @@ -751,21 +751,43 @@ OpenLayers.Renderer.VML = OpenLayers.Class(OpenLayers.Renderer.Elements, { var resolution = this.getResolution(); var path = []; - var linearRing, i, j, len, ilen, comp, x, y; - for (j = 0, len=geometry.components.length; j