complete XML syntax change from CSSParameter to attributes (for BuildingSymbolizer and RasterSymbolizer) and update tests

This commit is contained in:
Dane Springmeyer 2010-06-01 21:58:24 +00:00
parent 484dce8943
commit 218c75385d
15 changed files with 222 additions and 819 deletions

View file

@ -1455,46 +1455,16 @@ void map_parser::parse_building_symbolizer( rule_type & rule, ptree const & sym
try {
building_symbolizer building_sym;
ptree::const_iterator cssIter = sym.begin();
ptree::const_iterator endCss = sym.end();
// fill
optional<color> fill = get_opt_attr<color>(sym, "fill");
if (fill) building_sym.set_fill(*fill);
// fill-opacity
optional<double> opacity = get_opt_attr<double>(sym, "fill-opacity");
if (opacity) building_sym.set_opacity(*opacity);
// height
optional<double> height = get_opt_attr<double>(sym, "height");
if (opacity) building_sym.set_height(*height);
for(; cssIter != endCss; ++cssIter)
{
ptree::value_type const& css_tag = *cssIter;
ptree const & css = cssIter->second;
if (css_tag.first == "CssParameter")
{
std::string css_name = get_attr<string>(css, "name");
std::string data = css.data();
if (css_name == "fill")
{
color c = get_css<color>(css, css_name);
building_sym.set_fill(c);
}
else if (css_name == "fill-opacity")
{
float opacity = get_css<float>(css, css_name);
building_sym.set_opacity(opacity);
}
else if (css_name == "height")
{
float height = get_css<float>(css,css_name);
building_sym.set_height(height);
}
else
{
throw config_error(std::string("Failed to parse unknown CSS ") +
"parameter '" + css_name + "'");
}
}
else if (css_tag.first != "<xmlcomment>" &&
css_tag.first != "<xmlattr>" )
{
throw config_error(std::string("Unknown child node. ") +
"Expected 'CssParameter' but got '" + css_tag.first + "'");
}
}
rule.append(building_sym);
}
catch (const config_error & ex)
@ -1510,37 +1480,26 @@ void map_parser::parse_raster_symbolizer( rule_type & rule, ptree const & sym )
{
raster_symbolizer raster_sym;
// mode
optional<std::string> mode = get_opt_attr<std::string>(sym, "mode");
if (mode) raster_sym.set_mode(*mode);
// scaling
optional<std::string> scaling = get_opt_attr<std::string>(sym, "scaling");
if (scaling) raster_sym.set_scaling(*scaling);
// opacity
optional<double> opacity = get_opt_attr<double>(sym, "opacity");
if (opacity) raster_sym.set_opacity(*opacity);
ptree::const_iterator cssIter = sym.begin();
ptree::const_iterator endCss = sym.end();
for(; cssIter != endCss; ++cssIter)
{
ptree::value_type const& css_tag = *cssIter;
ptree const & css = cssIter->second;
if (css_tag.first == "CssParameter")
{
std::string css_name = get_attr<string>(css, "name");
if (css_name == "mode")
{
raster_sym.set_mode(get_css<string>(css, css_name));
}
else if (css_name == "scaling")
{
raster_sym.set_scaling(get_css<string>(css, css_name));
}
else if (css_name == "opacity")
{
float opacity = get_css<float>(css, css_name);
raster_sym.set_opacity(opacity);
}
else
{
throw config_error(std::string("Failed to parse unknown CSS ") +
"parameter '" + css_name + "'");
}
}
else if (css_tag.first == "RasterColorizer")
if (css_tag.first == "RasterColorizer")
{
raster_colorizer_ptr colorizer(new raster_colorizer());
raster_sym.set_colorizer(colorizer);
@ -1550,7 +1509,7 @@ void map_parser::parse_raster_symbolizer( rule_type & rule, ptree const & sym )
css_tag.first != "<xmlattr>" )
{
throw config_error(std::string("Unknown child node. ") +
"Expected 'CssParameter' but got '" + css_tag.first + "'");
"Expected 'RasterColorizer' but got '" + css_tag.first + "'");
}
}
rule.append(raster_sym);

View file

@ -183,16 +183,19 @@ public:
if ( sym.get_mode() != dfl.get_mode() || explicit_defaults_ )
{
set_css( sym_node, "mode", sym.get_mode() );
set_attr( sym_node, "mode", sym.get_mode() );
}
if ( sym.get_scaling() != dfl.get_scaling() || explicit_defaults_ )
{
set_css( sym_node, "scaling", sym.get_scaling() );
set_attr( sym_node, "scaling", sym.get_scaling() );
}
if ( sym.get_opacity() != dfl.get_opacity() || explicit_defaults_ )
{
set_css( sym_node, "opacity", sym.get_opacity() );
set_attr( sym_node, "opacity", sym.get_opacity() );
}
if (sym.get_colorizer()) {
serialize_raster_colorizer(sym_node, sym.get_colorizer(),
explicit_defaults_);
@ -246,15 +249,15 @@ public:
if ( sym.get_fill() != dfl.get_fill() || explicit_defaults_ )
{
set_css( sym_node, "fill", sym.get_fill() );
set_attr( sym_node, "fill", sym.get_fill() );
}
if ( sym.get_opacity() != dfl.get_opacity() || explicit_defaults_ )
{
set_css( sym_node, "fill-opacity", sym.get_opacity() );
set_attr( sym_node, "fill-opacity", sym.get_opacity() );
}
if ( sym.height() != dfl.height() || explicit_defaults_ )
{
set_css( sym_node, "height", sym.height() );
set_attr( sym_node, "height", sym.height() );
}
}

View file

@ -3,9 +3,7 @@
<Map bgcolor="red">
<Style name="some_style">
<Rule name="some_rule">
<LineSymbolizer>
<CssParameter name="stroke">#DEADBEEF</CssParameter>
</LineSymbolizer>
<LineSymbolizer stroke="#DEADBEEF" />
</Rule>
</Style>
</Map>

View file

@ -3,9 +3,7 @@
<Map>
<Style name="some_style">
<Rule>
<LineSymbolizer>
<CssParameter name="stroke-width">foobar</CssParameter>
</LineSymbolizer>
<LineSymbolizer stroke-width="foobar" />
</Rule>
</Style>
</Map>

View file

@ -3,9 +3,7 @@
<Map bgcolor="red">
<Style name="some_style">
<Rule name="some_rule">
<LineSymbolizer>
<CssParameter name="stroke-linecap">fooish</CssParameter>
</LineSymbolizer>
<LineSymbolizer stroke-linecap="fooish" />
</Rule>
</Style>
</Map>

View file

@ -3,9 +3,7 @@
<Map bgcolor="red">
<Style name="some_style">
<Rule name="some_rule">
<LineSymbolizer>
<CssParameter name="stroke-linejoin">meta</CssParameter>
</LineSymbolizer>
<LineSymbolizer stroke-linejoin="meta" />
</Rule>
</Style>
</Map>

View file

@ -3,10 +3,7 @@
<Map bgcolor="red">
<Style name="some_style">
<Rule name="some_rule">
<LineSymbolizer>
<CssParameter name="stroke">red</CssParameter>
<CssParameter name="stroke-dasharray">1.0, 4.0, foo, 6.0</CssParameter>
</LineSymbolizer>
<LineSymbolizer stoke="red" stroke-dasharray="1.0, 4.0, foo, 6.0" />
</Rule>
</Style>
</Map>

View file

@ -8,47 +8,34 @@
<Rule>
<Filter>([REGION]=142)</Filter>
<PolygonSymbolizer>
<CssParameter name="fill">yellow</CssParameter>
</PolygonSymbolizer>
<PolygonSymbolizer fill="yellow" />
</Rule>
<!-- Europe, using Opacity avoids "ghost lines"
-->
<Rule>
<Filter>([REGION]=150)</Filter>
<PolygonSymbolizer>
<CssParameter name="fill">rgb(176,151,238)</CssParameter>
<CssParameter name="fill-opacity">.3</CssParameter>
</PolygonSymbolizer>
<PolygonSymbolizer fill="rgb(176,151,238)" fill-opacity=".3" />
</Rule>
<!-- Americas, using gamma of .65 to remove blue lines works as well..
-->
<Rule>
<Filter>([REGION]=19)</Filter>
<PolygonSymbolizer>
<CssParameter name="fill">rgb(136,172,2)</CssParameter>
<CssParameter name="gamma">.6</CssParameter>
</PolygonSymbolizer>
<PolygonSymbolizer fill="rgb(136,172,2)" gamma=".6" />
</Rule>
<!-- Africa, using gamma of .65 to remove blue lines works as well..
-->
<Rule>
<Filter>([REGION]=2)</Filter>
<PolygonSymbolizer>
<CssParameter name="fill">rgb(239,98,133)</CssParameter>
<CssParameter name="gamma">.65</CssParameter>
</PolygonSymbolizer>
<PolygonSymbolizer fill="rgb(239,98,133)" gamma=".65" />
</Rule>
<!-- Oceana, all disjunct polygons so it does not matter -->
<Rule>
<Filter>([REGION]=9)</Filter>
<PolygonSymbolizer>
<CssParameter name="fill">rgb(212,9,14)</CssParameter>
</PolygonSymbolizer>
<PolygonSymbolizer fill="rgb(212,9,14)" />
</Rule>
</Style>
<Layer name="world" srs="+proj=merc +lon_0=0 +lat_ts=0 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m +no_defs">

View file

@ -2,11 +2,7 @@
<Style name="test">
<Rule>
<BuildingSymbolizer>
<CssParameter name="fill">yellow</CssParameter>
<CssParameter name="fill-opacity">.7</CssParameter>
<CssParameter name="height">30</CssParameter>
</BuildingSymbolizer>
<BuildingSymbolizer fill="yellow" fill-opacity=".7" height="30" />
</Rule>
</Style>

View file

@ -5,11 +5,7 @@
<Style name="test">
<Rule>
<BuildingSymbolizer>
<CssParameter name="fill">darkred</CssParameter>
<CssParameter name="fill-opacity">1</CssParameter>
<CssParameter name="height">30</CssParameter>
</BuildingSymbolizer>
<BuildingSymbolizer fill="darkred" fill-opacity="1" height="30" />
<PointSymbolizer base="foo" file="dummy.png" width="16" height="16" type="png" />
</Rule>
</Style>

File diff suppressed because it is too large Load diff

View file

@ -23,9 +23,7 @@
<Rule title="rest">
<ElseFilter />
<LineSymbolizer>
<CssParameter name="stroke-width">.1</CssParameter>
</LineSymbolizer>
<LineSymbolizer stroke-width="1" />
</Rule>
</Style>

View file

@ -1,3 +1,4 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- see: http://trac.mapnik.org/changeset/574 -->
<Map bgcolor="transparent" srs="+proj=longlat +ellps=airy +datum=OSGB36 +no_defs">
@ -5,10 +6,7 @@
<Style name="test">
<Rule>
<PolygonSymbolizer>
<CssParameter name="fill">lavender</CssParameter>
<CssParameter name="fill-opacity">.5</CssParameter>
</PolygonSymbolizer>
<PolygonSymbolizer fill="lavender" fill-opacity=".5" />
<PointSymbolizer base="foo" file="dummy.png" width="16" height="16" type="png" />
</Rule>
</Style>

View file

@ -1,42 +1,27 @@
<?xml version="1.0" encoding="utf-8"?>
<?xml version='1.0' encoding='ASCII' standalone='yes'?>
<Map srs="+proj=tmerc +lat_0=49 +lon_0=-2 +k=0.9996012717 +x_0=400000 +y_0=-100000 +ellps=airy +units=m +no_defs" bgcolor="rgba(0,0,0,0)">
<Style name="poly20090929162130952_style">
<Rule>
<Filter>([EAS_ID]!=158)</Filter>
<PolygonSymbolizer>
<CssParameter name="fill">blue</CssParameter>
</PolygonSymbolizer>
<LineSymbolizer>
<CssParameter name="stroke">blue</CssParameter>
<CssParameter name="stroke-width">4</CssParameter>
</LineSymbolizer>
</Rule>
<Rule>
<Filter>([EAS_ID]&lt;&gt;158)</Filter>
<PolygonSymbolizer>
<CssParameter name="fill">green</CssParameter>
</PolygonSymbolizer>
<LineSymbolizer>
<CssParameter name="stroke">green</CssParameter>
<CssParameter name="stroke-width">2</CssParameter>
</LineSymbolizer>
</Rule>
<Rule>
<ElseFilter />
<PolygonSymbolizer>
<CssParameter name="fill">red</CssParameter>
</PolygonSymbolizer>
</Rule>
</Style>
<Layer name="poly20090929162130952" srs="+proj=tmerc +lat_0=49 +lon_0=-2 +k=0.9996012717 +x_0=400000 +y_0=-100000 +ellps=airy +units=m +no_defs" status="1" clear_label_cache="1" queryable="1">
<StyleName>poly20090929162130952_style</StyleName>
<Datasource>
<Parameter name="file">../../data/shp/poly.shp</Parameter>
<Parameter name="type">shape</Parameter>
</Datasource>
</Layer>
<Style name="poly20090929162130952_style">
<Rule>
<Filter>([EAS_ID]!=158)</Filter>
<PolygonSymbolizer fill="blue"/>
<LineSymbolizer stroke="blue" stroke-width="4"/>
</Rule>
<Rule>
<Filter>([EAS_ID]&lt;&gt;158)</Filter>
<PolygonSymbolizer fill="green"/>
<LineSymbolizer stroke="green" stroke-width="2"/>
</Rule>
<Rule>
<ElseFilter/>
<PolygonSymbolizer fill="red"/>
</Rule>
</Style>
<Layer name="poly20090929162130952" srs="+proj=tmerc +lat_0=49 +lon_0=-2 +k=0.9996012717 +x_0=400000 +y_0=-100000 +ellps=airy +units=m +no_defs" status="1" clear_label_cache="1" queryable="1">
<StyleName>poly20090929162130952_style</StyleName>
<Datasource>
<Parameter name="file">../../data/shp/poly.shp</Parameter>
<Parameter name="type">shape</Parameter>
</Datasource>
</Layer>
</Map>

View file

@ -3,7 +3,7 @@
<Map bgcolor="#b5d0d0" srs="+proj=merc +datum=WGS84 +k=1.0 +units=m +over +no_defs">
<Style name="some_style">
<Rule>
<LinePatternSymbolizer file="foo.png"/>
<LinePatternSymbolizer file="foo.png" />
</Rule>
</Style>
</Map>