Skip to content

Commit

Permalink
xml de/serialization support for RasterColorizer
Browse files Browse the repository at this point in the history
  • Loading branch information
Alberto Valverde committed Mar 12, 2010
1 parent 807881c commit e9748ab
Show file tree
Hide file tree
Showing 3 changed files with 40 additions and 2 deletions.
29 changes: 29 additions & 0 deletions src/save_map.cpp
Expand Up @@ -26,6 +26,7 @@
#include <mapnik/image_util.hpp>
#include <mapnik/ptree_helpers.hpp>
#include <mapnik/expression_string.hpp>
#include <mapnik/raster_colorizer.hpp>

// boost
#include <boost/algorithm/string.hpp>
Expand All @@ -43,6 +44,29 @@ namespace mapnik
using boost::property_tree::ptree;
using boost::optional;

void serialize_raster_colorizer(ptree & sym_node,
raster_colorizer_ptr const& colorizer,
bool explicit_defaults)
{
ptree & col_node = sym_node.push_back(
ptree::value_type("RasterColorizer", ptree() ))->second;

unsigned i;
color_bands const &cb = colorizer->get_color_bands();
for (i=0; i<cb.size(); i++) {
if (!cb[i].is_interpolated()) {
ptree & band_node = col_node.push_back(
ptree::value_type("ColorBand", ptree())
)->second;
set_attr(band_node, "value", cb[i].get_value());
set_attr(band_node, "midpoints", cb[i].get_midpoints());
optional<color> c = cb[i].get_color();
if (c) set_attr(band_node, "color", * c);
}
}

}

class serialize_symbolizer : public boost::static_visitor<>
{
public:
Expand Down Expand Up @@ -163,6 +187,11 @@ namespace mapnik
{
set_css( sym_node, "opacity", sym.get_opacity() );
}
if (sym.get_colorizer()) {
serialize_raster_colorizer(sym_node, sym.get_colorizer(),
explicit_defaults_);
}

}

void operator () ( const shield_symbolizer & sym )
Expand Down
3 changes: 1 addition & 2 deletions tests/python_tests/raster_colorizer_test.py
@@ -1,8 +1,7 @@

import mapnik2
from nose.tools import *

class test_raster_colorizer():
def test_get_color():
colorizer = mapnik2.RasterColorizer()
# Setup the color bands. band[N].color will apply to all
# values 'v' if band[N].value <= v < band[N+1].color
Expand Down
10 changes: 10 additions & 0 deletions tests/python_tests/raster_symbolizer_test.py
Expand Up @@ -88,3 +88,13 @@ def test_dataraster_query_point():
# point inside raster extent with nodata
features = _map.query_point(0,126850,4596050).features
assert len(features) == 0

def test_load_save_map():
map = mapnik2.Map(256,256)
in_map = "../data/good_maps/raster_symbolizer.xml"
mapnik2.load_map(map, in_map)

out_map = mapnik2.save_map_to_string(map)
assert 'RasterSymbolizer' in out_map
assert 'RasterColorizer' in out_map
assert 'ColorBand' in out_map

0 comments on commit e9748ab

Please sign in to comment.