diff --git a/src/ol/parser/ogc/sldparser.js b/src/ol/parser/ogc/sldparser.js index 8560cdc2e8..c9db020b75 100644 --- a/src/ol/parser/ogc/sldparser.js +++ b/src/ol/parser/ogc/sldparser.js @@ -1,6 +1,5 @@ goog.provide('ol.parser.ogc.SLD'); goog.require('ol.parser.ogc.SLD_v1_0_0'); -goog.require('ol.parser.ogc.SLD_v1_0_0_GeoServer'); goog.require('ol.parser.ogc.Versioned'); @@ -10,13 +9,6 @@ goog.require('ol.parser.ogc.Versioned'); ol.ENABLE_SLD_1_0_0 = true; -/** - * @define {boolean} Whether to enable SLD version 1.0.0. - * GeoServer profile. - */ -ol.ENABLE_SLD_1_0_0_GEOSERVER = true; - - /** * @constructor @@ -30,9 +22,6 @@ ol.parser.ogc.SLD = function(opt_options) { if (ol.ENABLE_SLD_1_0_0) { this.parsers['v1_0_0'] = ol.parser.ogc.SLD_v1_0_0; } - if (ol.ENABLE_SLD_1_0_0_GEOSERVER) { - this.parsers['v1_0_0_GEOSERVER'] = ol.parser.ogc.SLD_v1_0_0_GeoServer; - } goog.base(this, opt_options); }; goog.inherits(ol.parser.ogc.SLD, ol.parser.ogc.Versioned); diff --git a/src/ol/parser/ogc/sldparser_v1.js b/src/ol/parser/ogc/sldparser_v1.js index a48c20dbcc..349603ffb2 100644 --- a/src/ol/parser/ogc/sldparser_v1.js +++ b/src/ol/parser/ogc/sldparser_v1.js @@ -84,7 +84,8 @@ ol.parser.ogc.SLD_v1 = function() { 'TextSymbolizer': function(node, rule) { var config = {}; this.readChildNodes(node, config); - config.color = config.fill.fillColor; + config.color = goog.isDef(config.fill) ? config.fill.fillColor : + ol.parser.ogc.SLD_v1.defaults_.fontColor; delete config.fill; config.zIndex = this.featureTypeCounter; rule.symbolizers.push( @@ -639,7 +640,8 @@ ol.parser.ogc.SLD_v1.defaults_ = { haloColor: '#FFFFFF', haloOpacity: 1, haloRadius: 1, - fillColor: '#808080' + fillColor: '#808080', + fontColor: '#000000' }; diff --git a/src/ol/parser/ogc/sldparser_v1_0_0_GeoServer.js b/src/ol/parser/ogc/sldparser_v1_0_0_GeoServer.js deleted file mode 100644 index 77f58d1ab5..0000000000 --- a/src/ol/parser/ogc/sldparser_v1_0_0_GeoServer.js +++ /dev/null @@ -1,43 +0,0 @@ -goog.provide('ol.parser.ogc.SLD_v1_0_0_GeoServer'); - -goog.require('goog.functions'); -goog.require('goog.object'); -goog.require('ol.parser.ogc.SLD_v1_0_0'); - - - -/** - * @constructor - * @extends {ol.parser.ogc.SLD_v1_0_0} - */ -ol.parser.ogc.SLD_v1_0_0_GeoServer = function() { - goog.base(this); - this.profile = 'GeoServer'; - goog.object.extend(this.readers['http://www.opengis.net/sld'], { - 'Priority': function(node, obj) { - var ogcreaders = this.readers['http://www.opengis.net/ogc']; - var value = ogcreaders._expression.call(this, node); - if (value) { - obj.priority = value; - } - }, - 'VendorOption': function(node, obj) { - if (!goog.isDef(obj.vendorOptions)) { - obj.vendorOptions = {}; - } - obj.vendorOptions[node.getAttribute('name')] = - this.getChildValue(node); - }, - 'TextSymbolizer': goog.functions.sequence( - this.readers['http://www.opengis.net/sld']['TextSymbolizer'], - function(node, rule) { - var symbolizer = rule.symbolizers[rule.symbolizers.length - 1]; - if (!goog.isDef(symbolizer.graphic)) { - symbolizer.graphic = false; - } - } - ) - }); -}; -goog.inherits(ol.parser.ogc.SLD_v1_0_0_GeoServer, - ol.parser.ogc.SLD_v1_0_0); diff --git a/test/spec/ol/parser/ogc/sld_v1_0_0.test.js b/test/spec/ol/parser/ogc/sld_v1_0_0.test.js index f9ec9e569e..e44fb45ac6 100644 --- a/test/spec/ol/parser/ogc/sld_v1_0_0.test.js +++ b/test/spec/ol/parser/ogc/sld_v1_0_0.test.js @@ -4,12 +4,13 @@ goog.provide('ol.test.parser.ogc.SLD_v1_0_0'); describe('ol.parser.ogc.SLD_v1_0_0', function() { var parser = new ol.parser.ogc.SLD(); + var obj; describe('reading and writing', function() { it('Handles reading', function(done) { var url = 'spec/ol/parser/ogc/xml/sld_v1_0_0.xml'; afterLoadXml(url, function(xml) { - var obj = parser.read(xml); + obj = parser.read(xml); expect(obj.version).to.equal('1.0.0'); var style = obj.namedLayers['AAA161'].userStyles[0]; expect(style).to.be.a(ol.style.Style); @@ -50,13 +51,23 @@ describe('ol.parser.ogc.SLD_v1_0_0', function() { '#000000'); expect(first.getSymbolizers()[2].getFontFamily().getValue()).to.equal( 'Arial'); - // TODO add tests for haloRadius and haloColor + expect(first.getSymbolizers()[2].getStroke()).to.be.a(ol.style.Stroke); + expect(first.getSymbolizers()[2].getStroke().getColor().getValue()) + .to.equal('#ffffff'); + expect(first.getSymbolizers()[2].getStroke().getWidth().getValue()) + .to.equal(6); var second = style.rules_[1]; expect(second.filter_).to.be.a(ol.expr.Comparison); expect(second.getSymbolizers().length).to.equal(2); expect(second.getSymbolizers()[0]).to.be.a(ol.style.Fill); expect(second.getSymbolizers()[1]).to.be.a(ol.style.Stroke); - window.console.log(parser.write(obj)); + done(); + }); + }); + it('Handles write', function(done) { + var url = 'spec/ol/parser/ogc/xml/sld_v1_0_0_write.xml'; + afterLoadXml(url, function(xml) { + expect(goog.dom.xml.loadXml(parser.write(obj))).to.xmleql(xml); done(); }); }); @@ -64,7 +75,7 @@ describe('ol.parser.ogc.SLD_v1_0_0', function() { }); -goog.require('goog.net.XhrIo'); +goog.require('goog.dom.xml'); goog.require('ol.parser.ogc.SLD_v1_0_0'); goog.require('ol.parser.ogc.SLD'); goog.require('ol.expr.Call'); diff --git a/test/spec/ol/parser/ogc/xml/sld_v1_0_0_write.xml b/test/spec/ol/parser/ogc/xml/sld_v1_0_0_write.xml new file mode 100644 index 0000000000..eeff7933ac --- /dev/null +++ b/test/spec/ol/parser/ogc/xml/sld_v1_0_0_write.xml @@ -0,0 +1,133 @@ + + + + AAA161 + + + + stortsteen + + + CTE + V0305 + + + 49999.99999999999 + + + #ffffff + 1 + + + + + #000000 + 1 + 1 + + + + AFOOlabel + + Arial + 14 + + + 3 + + #ffffff + 1 + + + + #000000 + 1 + + + + + betonbekleding + + + CTE + 1000 + + + 49999.99999999999 + + + #ffff00 + 1 + + + + + #0000ff + 1 + 1 + + + + + + + + Second Layer + + + + first rule second layer + + + + + FOO + 5000 + + + + cat + *dog.food!*good + + + number + + 1064866676 + + + 1065512599 + + + + + 10000 + + + + star + + lime + 1 + + + olive + 1 + 2 + + + SIZE + + + + + + +