add extend parameter of text symbolizer
This commit is contained in:
parent
8733622885
commit
6e489a95a3
7 changed files with 35 additions and 1 deletions
|
@ -369,6 +369,13 @@ struct symbolizer_default<value_bool, keys::avoid_edges>
|
|||
|
||||
// font-feature-settings
|
||||
|
||||
// extend
|
||||
template <>
|
||||
struct symbolizer_default<value_double, keys::extend>
|
||||
{
|
||||
static value_double value() { return 0.0; }
|
||||
};
|
||||
|
||||
} // namespace mapnik
|
||||
|
||||
#endif // MAPNIK_SYMBOLIZER_DEFAULT_VALUES_HPP
|
||||
|
|
|
@ -92,6 +92,7 @@ enum class keys : std::uint8_t
|
|||
direction,
|
||||
avoid_edges,
|
||||
ff_settings,
|
||||
extend,
|
||||
MAX_SYMBOLIZER_KEY
|
||||
};
|
||||
|
||||
|
|
|
@ -59,7 +59,7 @@ struct placement_finder_adapter
|
|||
|
||||
};
|
||||
|
||||
using vertex_converter_type = vertex_converter<clip_line_tag, transform_tag, affine_transform_tag, simplify_tag, smooth_tag>;
|
||||
using vertex_converter_type = vertex_converter<clip_line_tag, transform_tag, affine_transform_tag, extend_tag, simplify_tag, smooth_tag>;
|
||||
|
||||
class base_symbolizer_helper
|
||||
{
|
||||
|
|
|
@ -36,6 +36,7 @@
|
|||
#include <mapnik/symbolizer_enumerations.hpp>
|
||||
#include <mapnik/symbolizer_keys.hpp>
|
||||
#include <mapnik/symbolizer.hpp>
|
||||
#include <mapnik/extend_converter.hpp>
|
||||
|
||||
#pragma GCC diagnostic push
|
||||
#include <mapnik/warning_ignore_agg.hpp>
|
||||
|
@ -65,6 +66,7 @@ struct stroke_tag {};
|
|||
struct dash_tag {};
|
||||
struct affine_transform_tag {};
|
||||
struct offset_transform_tag {};
|
||||
struct extend_tag {};
|
||||
|
||||
namespace detail {
|
||||
|
||||
|
@ -254,6 +256,23 @@ struct converter_traits<T,mapnik::offset_transform_tag>
|
|||
}
|
||||
};
|
||||
|
||||
template <typename T>
|
||||
struct converter_traits<T, mapnik::extend_tag>
|
||||
{
|
||||
using geometry_type = T;
|
||||
using conv_type = extend_converter<geometry_type>;
|
||||
|
||||
template <typename Args>
|
||||
static void setup(geometry_type & geom, Args const& args)
|
||||
{
|
||||
auto const& sym = args.sym;
|
||||
auto const& feat = args.feature;
|
||||
auto const& vars = args.vars;
|
||||
double extend = get<value_double, keys::extend>(sym, feat, vars);
|
||||
geom.set_extend(extend * args.scale_factor);
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
template <typename T0, typename T1>
|
||||
struct is_switchable
|
||||
|
|
|
@ -895,6 +895,7 @@ void map_parser::parse_symbolizer_base(symbolizer_base &sym, xml_node const& nod
|
|||
set_symbolizer_property<symbolizer_base,composite_mode_e>(sym, keys::comp_op, node);
|
||||
set_symbolizer_property<symbolizer_base,transform_type>(sym, keys::geometry_transform, node);
|
||||
set_symbolizer_property<symbolizer_base,simplify_algorithm_e>(sym, keys::simplify_algorithm, node);
|
||||
set_symbolizer_property<symbolizer_base,double>(sym, keys::extend, node);
|
||||
}
|
||||
|
||||
void map_parser::parse_point_symbolizer(rule & rule, xml_node const & node)
|
||||
|
|
|
@ -158,6 +158,7 @@ static const property_meta_type key_meta[const_max_key] =
|
|||
property_types::target_direction},
|
||||
property_meta_type{ "avoid-edges",nullptr, property_types::target_bool },
|
||||
property_meta_type{ "font-feature-settings", nullptr, property_types::target_font_feature_settings },
|
||||
property_meta_type{ "extend", nullptr, property_types::target_double},
|
||||
|
||||
};
|
||||
|
||||
|
|
|
@ -318,10 +318,12 @@ text_symbolizer_helper::text_symbolizer_helper(
|
|||
value_bool clip = mapnik::get<value_bool, keys::clip>(sym_, feature_, vars_);
|
||||
value_double simplify_tolerance = mapnik::get<value_double, keys::simplify_tolerance>(sym_, feature_, vars_);
|
||||
value_double smooth = mapnik::get<value_double, keys::smooth>(sym_, feature_, vars_);
|
||||
value_double extend = mapnik::get<value_double, keys::extend>(sym_, feature_, vars_);
|
||||
|
||||
if (clip) converter_.template set<clip_line_tag>();
|
||||
converter_.template set<transform_tag>(); //always transform
|
||||
converter_.template set<affine_transform_tag>();
|
||||
if (extend > 0.0) converter_.template set<extend_tag>();
|
||||
if (simplify_tolerance > 0.0) converter_.template set<simplify_tag>(); // optional simplify converter
|
||||
if (smooth > 0.0) converter_.template set<smooth_tag>(); // optional smooth converter
|
||||
|
||||
|
@ -443,12 +445,15 @@ text_symbolizer_helper::text_symbolizer_helper(
|
|||
value_bool clip = mapnik::get<value_bool, keys::clip>(sym_, feature_, vars_);
|
||||
value_double simplify_tolerance = mapnik::get<value_double, keys::simplify_tolerance>(sym_, feature_, vars_);
|
||||
value_double smooth = mapnik::get<value_double, keys::smooth>(sym_, feature_, vars_);
|
||||
value_double extend = mapnik::get<value_double, keys::extend>(sym_, feature_, vars_);
|
||||
|
||||
if (clip) converter_.template set<clip_line_tag>();
|
||||
converter_.template set<transform_tag>(); //always transform
|
||||
converter_.template set<affine_transform_tag>();
|
||||
if (extend > 0.0) converter_.template set<extend_tag>();
|
||||
if (simplify_tolerance > 0.0) converter_.template set<simplify_tag>(); // optional simplify converter
|
||||
if (smooth > 0.0) converter_.template set<smooth_tag>(); // optional smooth converter
|
||||
|
||||
if (geometries_to_process_.size())
|
||||
{
|
||||
init_marker();
|
||||
|
|
Loading…
Add table
Reference in a new issue