+ support smooth conv in polygon_pattern_symbolizer

This commit is contained in:
Artem Pavlenko 2012-04-10 15:46:38 +01:00
parent 6f7457f6b0
commit 45b0dd6482
4 changed files with 23 additions and 5 deletions

View file

@ -50,11 +50,13 @@ struct MAPNIK_DECL polygon_pattern_symbolizer :
double get_gamma() const;
void set_gamma_method(gamma_method_e gamma_method);
gamma_method_e get_gamma_method() const;
void set_smooth(double smooth);
double smooth() const;
private:
pattern_alignment_e alignment_;
double gamma_;
gamma_method_e gamma_method_;
double smooth_;
};
}

View file

@ -135,14 +135,14 @@ void agg_renderer<T>::process(polygon_pattern_symbolizer const& sym,
//metawriter_with_properties writer = sym.get_metawriter();
box2d<double> inflated_extent = query_extent_ * 1.1;
typedef boost::mpl::vector<clip_poly_tag,transform_tag> conv_types;
typedef boost::mpl::vector<clip_poly_tag,transform_tag,smooth_tag> conv_types;
vertex_converter<box2d<double>,rasterizer,polygon_pattern_symbolizer, proj_transform, CoordTransform,conv_types>
converter(inflated_extent,*ras_ptr,sym,t_,prj_trans);
//if (sym.clip())
converter.set<clip_poly_tag>(); //optional clip (default: true)
converter.set<transform_tag>(); //always transform
//if (sym.smooth() > 0.0) converter.set<smooth_tag>(); // optional smooth converter
if (sym.smooth() > 0.0) converter.set<smooth_tag>(); // optional smooth converter
BOOST_FOREACH( geometry_type & geom, feature->paths())
{

View file

@ -1054,6 +1054,10 @@ void map_parser::parse_polygon_pattern_symbolizer(rule & rule,
optional<gamma_method_e> gamma_method = sym.get_opt_attr<gamma_method_e>("gamma-method");
if (gamma_method) symbol.set_gamma_method(*gamma_method);
// smooth value
optional<double> smooth = sym.get_opt_attr<double>("smooth");
if (smooth) symbol.set_smooth(*smooth);
parse_metawriter_in_symbolizer(symbol, sym);
rule.append(symbol);
}

View file

@ -39,13 +39,15 @@ polygon_pattern_symbolizer::polygon_pattern_symbolizer(path_expression_ptr file)
: symbolizer_with_image(file), symbolizer_base(),
alignment_(LOCAL_ALIGNMENT),
gamma_(1.0),
gamma_method_(GAMMA_POWER) {}
gamma_method_(GAMMA_POWER),
smooth_(0.0) {}
polygon_pattern_symbolizer::polygon_pattern_symbolizer(polygon_pattern_symbolizer const& rhs)
: symbolizer_with_image(rhs), symbolizer_base(rhs),
alignment_(rhs.alignment_),
gamma_(rhs.gamma_),
gamma_method_(rhs.gamma_method_) {}
gamma_method_(rhs.gamma_method_),
smooth_(rhs.smooth_) {}
pattern_alignment_e polygon_pattern_symbolizer::get_alignment() const
{
@ -77,5 +79,15 @@ gamma_method_e polygon_pattern_symbolizer::get_gamma_method() const
return gamma_method_;
}
void polygon_pattern_symbolizer::set_smooth(double smooth)
{
smooth_ = smooth;
}
double polygon_pattern_symbolizer::smooth() const
{
return smooth_;
}
}