fix serialization of missing shield symbolizer properties
This commit is contained in:
parent
c81cff7b6c
commit
ed22d073c3
4 changed files with 46 additions and 19 deletions
|
@ -27,9 +27,6 @@
|
|||
#include <mapnik/svg/svg_path_parser.hpp>
|
||||
#include <mapnik/value_error.hpp>
|
||||
|
||||
// boost
|
||||
#include <boost/format.hpp>
|
||||
|
||||
// agg
|
||||
#include "agg_trans_affine.h"
|
||||
|
||||
|
@ -39,9 +36,7 @@ using namespace boost::python;
|
|||
template <class T>
|
||||
const std::string get_svg_transform(T& symbolizer)
|
||||
{
|
||||
mapnik::transform_type matrix = symbolizer.get_transform();
|
||||
std::string s = (boost::format("matrix(%f, %f, %f, %f, %f, %f)") % matrix[0] % matrix[1] % matrix[2] % matrix[3] % matrix[4] % matrix[5]).str();
|
||||
return s;
|
||||
return symbolizer.get_transform_string();
|
||||
};
|
||||
|
||||
template <class T>
|
||||
|
|
|
@ -83,6 +83,7 @@ public:
|
|||
void set_filename(path_expression_ptr filename);
|
||||
void set_transform(transform_type const& );
|
||||
transform_type const& get_transform() const;
|
||||
std::string const& get_transform_string() const;
|
||||
void set_opacity(float opacity);
|
||||
float get_opacity() const;
|
||||
protected:
|
||||
|
|
|
@ -194,18 +194,31 @@ public:
|
|||
// repeating the default values here.
|
||||
// maybe add a real, explicit default-ctor?
|
||||
|
||||
//FIXME pls
|
||||
/*
|
||||
shield_symbolizer sym_dfl("<no default>", "<no default>", 0, color(0,0,0), "<no default>", "<no default>");
|
||||
if (sym.get_unlock_image() != sym_dfl.get_unlock_image() || explicit_defaults_ )
|
||||
{
|
||||
set_attr( sym_node, "unlock_image", sym.get_unlock_image() );
|
||||
}
|
||||
if (sym.get_no_text() != sym_dfl.get_no_text() || explicit_defaults_ )
|
||||
{
|
||||
set_attr( sym_node, "no_text", sym.get_no_text() );
|
||||
}
|
||||
*/
|
||||
|
||||
shield_symbolizer dfl(expression_ptr(), "<no default>", 0, color(0,0,0), path_expression_ptr());
|
||||
|
||||
if (sym.get_unlock_image() != dfl.get_unlock_image() || explicit_defaults_ )
|
||||
{
|
||||
set_attr( sym_node, "unlock_image", sym.get_unlock_image() );
|
||||
}
|
||||
if (sym.get_no_text() != dfl.get_no_text() || explicit_defaults_ )
|
||||
{
|
||||
set_attr( sym_node, "no_text", sym.get_no_text() );
|
||||
}
|
||||
if (sym.get_text_opacity() != dfl.get_text_opacity() || explicit_defaults_ )
|
||||
{
|
||||
set_attr( sym_node, "text-opacity", sym.get_text_opacity() );
|
||||
}
|
||||
position displacement = sym.get_shield_displacement();
|
||||
if ( displacement.get<0>() != dfl.get_shield_displacement().get<0>() || explicit_defaults_ )
|
||||
{
|
||||
set_attr( sym_node, "shield_dx", displacement.get<0>() );
|
||||
}
|
||||
if ( displacement.get<1>() != dfl.get_shield_displacement().get<1>() || explicit_defaults_ )
|
||||
{
|
||||
set_attr( sym_node, "shield_dy", displacement.get<1>() );
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
void operator () ( const text_symbolizer & sym )
|
||||
|
@ -373,8 +386,17 @@ private:
|
|||
if ( ! filename.empty() ) {
|
||||
set_attr( node, "file", filename );
|
||||
}
|
||||
if (sym.get_opacity() != 1.0 || explicit_defaults_ )
|
||||
{
|
||||
set_attr( node, "opacity", sym.get_opacity() );
|
||||
}
|
||||
|
||||
// TODO !!!
|
||||
std::string tr_str = sym.get_transform_string();
|
||||
if (tr_str != "matrix(1, 0, 0, 1, 0, 0)" || explicit_defaults_ )
|
||||
{
|
||||
set_attr( node, "transform", tr_str );
|
||||
}
|
||||
|
||||
}
|
||||
void add_font_attributes(ptree & node, const text_symbolizer & sym)
|
||||
{
|
||||
|
@ -481,6 +503,7 @@ private:
|
|||
{
|
||||
set_attr( node, "avoid_edges", sym.get_avoid_edges() );
|
||||
}
|
||||
// for shield_symbolizer this is later overridden
|
||||
if (sym.get_text_opacity() != dfl.get_text_opacity() || explicit_defaults_ )
|
||||
{
|
||||
set_attr( node, "opacity", sym.get_text_opacity() );
|
||||
|
|
|
@ -94,6 +94,14 @@ transform_type const& symbolizer_with_image::get_transform() const
|
|||
return matrix_;
|
||||
}
|
||||
|
||||
std::string const& symbolizer_with_image::get_transform_string() const
|
||||
{
|
||||
std::stringstream ss;
|
||||
ss << "matrix(" << matrix_[0] << ", " << matrix_[1] << ", " << matrix_[2] << ", " << matrix_[3] << ", " << matrix_[4] << ", " << matrix_[5] << ")";
|
||||
return ss.str();
|
||||
}
|
||||
|
||||
|
||||
void symbolizer_with_image::set_opacity(float opacity)
|
||||
{
|
||||
opacity_ = opacity;
|
||||
|
|
Loading…
Add table
Reference in a new issue