complete XML syntax change from CSSParameter to attributes (for BuildingSymbolizer and RasterSymbolizer) and update tests
This commit is contained in:
parent
484dce8943
commit
218c75385d
15 changed files with 222 additions and 819 deletions
|
@ -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);
|
||||
|
|
|
@ -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() );
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -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>
|
||||
|
|
|
@ -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>
|
||||
|
|
|
@ -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>
|
||||
|
|
|
@ -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>
|
||||
|
|
|
@ -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>
|
||||
|
|
|
@ -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">
|
||||
|
|
|
@ -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>
|
||||
|
||||
|
|
|
@ -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
|
@ -23,9 +23,7 @@
|
|||
|
||||
<Rule title="rest">
|
||||
<ElseFilter />
|
||||
<LineSymbolizer>
|
||||
<CssParameter name="stroke-width">.1</CssParameter>
|
||||
</LineSymbolizer>
|
||||
<LineSymbolizer stroke-width="1" />
|
||||
</Rule>
|
||||
</Style>
|
||||
|
||||
|
|
|
@ -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>
|
||||
|
|
|
@ -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]<>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]<>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>
|
||||
|
||||
|
|
|
@ -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>
|
||||
|
|
Loading…
Add table
Reference in a new issue