From d57b603d0724c5abc2c19219b1aa3c6ab5468019 Mon Sep 17 00:00:00 2001 From: ahocevar Date: Thu, 20 May 2010 21:57:13 +0000 Subject: [PATCH] Added parseFloat for quantity and opacity on read, as suggested in bartvde's review. With additional tests to show that everything works as suggested now. See #2642. git-svn-id: http://svn.openlayers.org/trunk/openlayers@10349 dc9f47b5-9b13-0410-9fdd-eb0c1a62fdaf --- lib/OpenLayers/Format/SLD/v1.js | 12 +++++++----- tests/Format/SLD/v1_0_0.html | 6 +++++- 2 files changed, 12 insertions(+), 6 deletions(-) diff --git a/lib/OpenLayers/Format/SLD/v1.js b/lib/OpenLayers/Format/SLD/v1.js index 30440a8f50..8c2152d1fb 100644 --- a/lib/OpenLayers/Format/SLD/v1.js +++ b/lib/OpenLayers/Format/SLD/v1.js @@ -226,11 +226,13 @@ OpenLayers.Format.SLD.v1 = OpenLayers.Class(OpenLayers.Format.Filter.v1_0_0, { this.readChildNodes(node, symbolizer.colorMap); }, "ColorMapEntry": function(node, colorMap) { + var q = node.getAttribute("quantity"); + var o = node.getAttribute("opacity"); colorMap.push({ color: node.getAttribute("color"), - quantity: node.getAttribute("quantity") || undefined, + quantity: q !== null ? parseFloat(q) : undefined, label: node.getAttribute("label") || undefined, - opacity: node.getAttribute("opacity") || undefined + opacity: o !== null ? parseFloat(o) : undefined }); }, "LineSymbolizer": function(node, rule) { @@ -838,11 +840,11 @@ OpenLayers.Format.SLD.v1 = OpenLayers.Class(OpenLayers.Format.Filter.v1_0_0, { var node = this.createElementNSPlus("sld:ColorMapEntry"); var a = colorMapEntry; node.setAttribute("color", a.color); - a.opacity && node.setAttribute("opacity", + a.opacity !== undefined && node.setAttribute("opacity", parseFloat(a.opacity)); - a.quantity && node.setAttribute("quantity", + a.quantity !== undefined && node.setAttribute("quantity", parseFloat(a.quantity)); - a.label && node.setAttribute("label", a.label); + a.label !== undefined && node.setAttribute("label", a.label); return node; }, "PolygonSymbolizer": function(symbolizer) { diff --git a/tests/Format/SLD/v1_0_0.html b/tests/Format/SLD/v1_0_0.html index a0bd6fb05b..cfee1720f9 100644 --- a/tests/Format/SLD/v1_0_0.html +++ b/tests/Format/SLD/v1_0_0.html @@ -410,7 +410,7 @@ } function test_RasterSymbolizer(t) { - t.plan(1); + t.plan(4); var format = new OpenLayers.Format.SLD.v1_0_0(); @@ -431,6 +431,10 @@ var symbolizer = {}; format.readNode(expected, {symbolizer: symbolizer}); + t.eq(symbolizer.Raster.colorMap[0].quantity, 0, "quantity set correctly"); + t.eq(symbolizer.Raster.colorMap[0].opacity, 0.5, "opacity set correctly"); + t.eq(symbolizer.Raster.colorMap[1].opacity, undefined, "non-existent opacity results in undefined"); + var got = format.writeNode("sld:RasterSymbolizer", symbolizer["Raster"]); t.xml_eq(got, expected, "Successfully round tripped RasterSymbolizer");