/***************************************************************************** * * This file is part of Mapnik (c++ mapping toolkit) * * Copyright (C) 2021 Artem Pavlenko * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA * *****************************************************************************/ #include namespace mapnik { // stroke using line_cap_e_str = detail::EnumStringT; constexpr detail::EnumMapT line_cap_e_map{{ line_cap_e_str{line_cap_enum::BUTT_CAP, "butt"}, line_cap_e_str{line_cap_enum::SQUARE_CAP, "square"}, line_cap_e_str{line_cap_enum::ROUND_CAP, "round"}, line_cap_e_str{line_cap_enum::line_cap_enum_MAX, ""}, }}; IMPLEMENT_ENUM(line_cap_e, line_cap_enum) using line_join_e_str = detail::EnumStringT; constexpr detail::EnumMapT line_join_e_map{{ line_join_e_str{line_join_enum::MITER_JOIN, "miter"}, line_join_e_str{line_join_enum::MITER_REVERT_JOIN, "miter-revert"}, line_join_e_str{line_join_enum::ROUND_JOIN, "round"}, line_join_e_str{line_join_enum::BEVEL_JOIN, "bevel"}, line_join_e_str{line_join_enum::line_join_enum_MAX, ""}, }}; IMPLEMENT_ENUM(line_join_e, line_join_enum) // point symbolizer using point_placement_e_str = detail::EnumStringT; constexpr detail::EnumMapT point_placement_e_map{{ point_placement_e_str{point_placement_enum::CENTROID_POINT_PLACEMENT, "centroid"}, point_placement_e_str{point_placement_enum::INTERIOR_POINT_PLACEMENT, "interior"}, point_placement_e_str{point_placement_enum::point_placement_enum_MAX, ""}, }}; IMPLEMENT_ENUM(point_placement_e, point_placement_enum) // line symbolizer using line_rasterizer_e_str = detail::EnumStringT; constexpr detail::EnumMapT line_rasterizer_e_map{{ line_rasterizer_e_str{line_rasterizer_enum::RASTERIZER_FULL, "full"}, line_rasterizer_e_str{line_rasterizer_enum::RASTERIZER_FAST, "fast"}, line_rasterizer_e_str{line_rasterizer_enum::line_rasterizer_enum_MAX, ""}, }}; IMPLEMENT_ENUM(line_rasterizer_e, line_rasterizer_enum) // markers symbolizer using marker_placement_e_str = detail::EnumStringT; constexpr detail::EnumMapT marker_placement_e_map{{ marker_placement_e_str{marker_placement_enum::MARKER_POINT_PLACEMENT, "point"}, marker_placement_e_str{marker_placement_enum::MARKER_INTERIOR_PLACEMENT, "interior"}, marker_placement_e_str{marker_placement_enum::MARKER_LINE_PLACEMENT, "line"}, marker_placement_e_str{marker_placement_enum::MARKER_VERTEX_FIRST_PLACEMENT, "vertex-first"}, marker_placement_e_str{marker_placement_enum::MARKER_VERTEX_LAST_PLACEMENT, "vertex-last"}, marker_placement_e_str{marker_placement_enum::MARKER_ANGLED_POINT_PLACEMENT, "angled-point"}, marker_placement_e_str{marker_placement_enum::MARKER_POLYLABEL_PLACEMENT, "polylabel"}, marker_placement_e_str{marker_placement_enum::marker_placement_enum_MAX, ""}, }}; IMPLEMENT_ENUM(marker_placement_e, marker_placement_enum) using marker_multi_policy_e_str = detail::EnumStringT; constexpr detail::EnumMapT marker_multi_policy_e_map{{ marker_multi_policy_e_str{marker_multi_policy_enum::MARKER_EACH_MULTI, "each"}, marker_multi_policy_e_str{marker_multi_policy_enum::MARKER_WHOLE_MULTI, "whole"}, marker_multi_policy_e_str{marker_multi_policy_enum::MARKER_LARGEST_MULTI, "largest"}, marker_multi_policy_e_str{marker_multi_policy_enum::marker_multi_policy_enum_MAX, ""}, }}; IMPLEMENT_ENUM(marker_multi_policy_e, marker_multi_policy_enum) // debug symbolizer using debug_symbolizer_mode_e_str = detail::EnumStringT; constexpr detail::EnumMapT debug_symbolizer_mode_e_map{{ debug_symbolizer_mode_e_str{debug_symbolizer_mode_enum::DEBUG_SYM_MODE_COLLISION, "collision"}, debug_symbolizer_mode_e_str{debug_symbolizer_mode_enum::DEBUG_SYM_MODE_VERTEX, "vertex"}, debug_symbolizer_mode_e_str{debug_symbolizer_mode_enum::DEBUG_SYM_MODE_RINGS, "rings"}, debug_symbolizer_mode_e_str{debug_symbolizer_mode_enum::debug_symbolizer_mode_enum_MAX, ""}, }}; IMPLEMENT_ENUM(debug_symbolizer_mode_e, debug_symbolizer_mode_enum) // polygon pattern symbolizer using pattern_alignment_e_str = detail::EnumStringT; constexpr detail::EnumMapT pattern_alignment_e_map{{ pattern_alignment_e_str{pattern_alignment_enum::LOCAL_ALIGNMENT, "local"}, // feature pattern_alignment_e_str{pattern_alignment_enum::GLOBAL_ALIGNMENT, "global"}, // map pattern_alignment_e_str{pattern_alignment_enum::pattern_alignment_enum_MAX, ""}, }}; IMPLEMENT_ENUM(pattern_alignment_e, pattern_alignment_enum) // text using halo_rasterizer_e_str = detail::EnumStringT; constexpr detail::EnumMapT halo_rasterizer_e_map{{ halo_rasterizer_e_str{halo_rasterizer_enum::HALO_RASTERIZER_FULL, "full"}, halo_rasterizer_e_str{halo_rasterizer_enum::HALO_RASTERIZER_FAST, "fast"}, halo_rasterizer_e_str{halo_rasterizer_enum::halo_rasterizer_enum_MAX, ""}, }}; IMPLEMENT_ENUM(halo_rasterizer_e, halo_rasterizer_enum) using label_placement_e_str = detail::EnumStringT; constexpr detail::EnumMapT label_placement_e_map{{ label_placement_e_str{label_placement_enum::POINT_PLACEMENT, "point"}, label_placement_e_str{label_placement_enum::LINE_PLACEMENT, "line"}, label_placement_e_str{label_placement_enum::VERTEX_PLACEMENT, "vertex"}, label_placement_e_str{label_placement_enum::INTERIOR_PLACEMENT, "interior"}, label_placement_e_str{label_placement_enum::POLYLABEL_PLACEMENT, "polylabel"}, label_placement_e_str{label_placement_enum::GRID_PLACEMENT, "grid"}, label_placement_e_str{label_placement_enum::ALTERNATING_GRID_PLACEMENT, "alternating-grid"}, label_placement_e_str{label_placement_enum::label_placement_enum_MAX, ""}, }}; IMPLEMENT_ENUM(label_placement_e, label_placement_enum) using vertical_alignment_e_str = detail::EnumStringT; constexpr detail::EnumMapT vertical_alignment_e_map{{ vertical_alignment_e_str{vertical_alignment_enum::V_TOP, "top"}, vertical_alignment_e_str{vertical_alignment_enum::V_MIDDLE, "middle"}, vertical_alignment_e_str{vertical_alignment_enum::V_BOTTOM, "bottom"}, vertical_alignment_e_str{vertical_alignment_enum::V_AUTO, "auto"}, vertical_alignment_e_str{vertical_alignment_enum::vertical_alignment_enum_MAX, ""}, }}; IMPLEMENT_ENUM(vertical_alignment_e, vertical_alignment_enum) using horizontal_alignment_e_str = detail::EnumStringT; constexpr detail::EnumMapT horizontal_alignment_e_map{{ horizontal_alignment_e_str{horizontal_alignment_enum::H_LEFT, "left"}, horizontal_alignment_e_str{horizontal_alignment_enum::H_MIDDLE, "middle"}, horizontal_alignment_e_str{horizontal_alignment_enum::H_RIGHT, "right"}, horizontal_alignment_e_str{horizontal_alignment_enum::H_AUTO, "auto"}, horizontal_alignment_e_str{horizontal_alignment_enum::H_ADJUST, "adjust"}, horizontal_alignment_e_str{horizontal_alignment_enum::horizontal_alignment_enum_MAX, ""}, }}; IMPLEMENT_ENUM(horizontal_alignment_e, horizontal_alignment_enum) using justify_alignment_e_str = detail::EnumStringT; constexpr detail::EnumMapT justify_alignment_e_map{{ justify_alignment_e_str{justify_alignment_enum::J_LEFT, "left"}, justify_alignment_e_str{justify_alignment_enum::J_MIDDLE, "center"}, // not 'middle' in order to match CSS justify_alignment_e_str{justify_alignment_enum::J_RIGHT, "right"}, justify_alignment_e_str{justify_alignment_enum::J_AUTO, "auto"}, justify_alignment_e_str{justify_alignment_enum::justify_alignment_enum_MAX, ""}, }}; IMPLEMENT_ENUM(justify_alignment_e, justify_alignment_enum) using text_transform_e_str = detail::EnumStringT; constexpr detail::EnumMapT text_transform_e_map{{ text_transform_e_str{text_transform_enum::NONE, "none"}, text_transform_e_str{text_transform_enum::UPPERCASE, "uppercase"}, text_transform_e_str{text_transform_enum::LOWERCASE, "lowercase"}, text_transform_e_str{text_transform_enum::CAPITALIZE, "capitalize"}, text_transform_e_str{text_transform_enum::REVERSE, "reverse"}, text_transform_e_str{text_transform_enum::text_transform_enum_MAX, ""}, }}; IMPLEMENT_ENUM(text_transform_e, text_transform_enum) using text_upright_e_str = detail::EnumStringT; constexpr detail::EnumMapT text_upright_e_map{{ text_upright_e_str{text_upright_enum::UPRIGHT_AUTO, "auto"}, text_upright_e_str{text_upright_enum::UPRIGHT_AUTO_DOWN, "auto-down"}, text_upright_e_str{text_upright_enum::UPRIGHT_LEFT, "left"}, text_upright_e_str{text_upright_enum::UPRIGHT_RIGHT, "right"}, text_upright_e_str{text_upright_enum::UPRIGHT_LEFT_ONLY, "left-only"}, text_upright_e_str{text_upright_enum::UPRIGHT_RIGHT_ONLY, "right-only"}, text_upright_e_str{text_upright_enum::text_upright_enum_MAX, ""}, }}; IMPLEMENT_ENUM(text_upright_e, text_upright_enum) using direction_e_str = detail::EnumStringT; constexpr detail::EnumMapT direction_e_map{{ direction_e_str{direction_enum::DIRECTION_LEFT, "left"}, direction_e_str{direction_enum::DIRECTION_RIGHT, "right"}, direction_e_str{direction_enum::DIRECTION_LEFT_ONLY, "left-only"}, direction_e_str{direction_enum::DIRECTION_RIGHT_ONLY, "right-only"}, direction_e_str{direction_enum::DIRECTION_AUTO, "auto"}, direction_e_str{direction_enum::DIRECTION_AUTO_DOWN, "auto-down"}, direction_e_str{direction_enum::DIRECTION_UP, "up"}, direction_e_str{direction_enum::DIRECTION_DOWN, "down"}, direction_e_str{direction_enum::direction_enum_MAX, ""}, }}; IMPLEMENT_ENUM(direction_e, direction_enum) using gamma_method_e_str = detail::EnumStringT; constexpr detail::EnumMapT gamma_method_e_map{{ gamma_method_e_str{gamma_method_enum::GAMMA_POWER, "power"}, // agg::gamma_power gamma_method_e_str{gamma_method_enum::GAMMA_LINEAR, "linear"}, // agg::gamma_linear gamma_method_e_str{gamma_method_enum::GAMMA_NONE, "none"}, // agg::gamma_none gamma_method_e_str{gamma_method_enum::GAMMA_THRESHOLD, "threshold"}, // agg::gamma_threshold gamma_method_e_str{gamma_method_enum::GAMMA_MULTIPLY, "multiply"}, // agg::gamma_multiply" gamma_method_e_str{gamma_method_enum::gamma_method_enum_MAX, ""}, }}; IMPLEMENT_ENUM(gamma_method_e, gamma_method_enum) using line_pattern_e_str = detail::EnumStringT; constexpr detail::EnumMapT line_pattern_e_map{{ line_pattern_e_str{line_pattern_enum::LINE_PATTERN_WARP, "warp"}, line_pattern_e_str{line_pattern_enum::LINE_PATTERN_REPEAT, "repeat"}, line_pattern_e_str{line_pattern_enum::line_pattern_enum_MAX, ""}, }}; IMPLEMENT_ENUM(line_pattern_e, line_pattern_enum) using smooth_algorithm_e_str = detail::EnumStringT; constexpr detail::EnumMapT smooth_algorithm_e_map{{ smooth_algorithm_e_str{smooth_algorithm_enum::SMOOTH_ALGORITHM_BASIC, "basic"}, smooth_algorithm_e_str{smooth_algorithm_enum::SMOOTH_ALGORITHM_ADAPTIVE, "adaptive"}, smooth_algorithm_e_str{smooth_algorithm_enum::smooth_algorithm_enum_MAX, ""}, }}; IMPLEMENT_ENUM(smooth_algorithm_e, smooth_algorithm_enum) } // namespace mapnik