inline bool encode_geometry(mapnik::geometry::polygon<std::int64_t> const& poly, vector_tile::Tile_Feature & current_feature, int32_t & start_x, int32_t & start_y) { if (!encode_geometry(poly.exterior_ring, current_feature, start_x, start_y)) { return false; } for (auto const& ring : poly.interior_rings) { encode_geometry(ring, current_feature, start_x, start_y); } return true; }
inline unsigned add_path(T const& path) { if (current_feature_) { return encode_geometry(path, *current_feature_, x_, y_); } return 0; }
inline unsigned add_path(T & path, unsigned tolerance, MAPNIK_GEOM_TYPE type) { if (current_feature_) { return encode_geometry(path, static_cast<tile_GeomType>(type), *current_feature_, x_, y_, tolerance, path_multiplier_); } return 0; }
inline bool encode_geometry(mapnik::geometry::multi_polygon<std::int64_t> const& geom, vector_tile::Tile_Feature & current_feature, int32_t & start_x, int32_t & start_y) { bool success = false; for (auto const& poly : geom) { if (encode_geometry(poly, current_feature, start_x, start_y)) { success = true; } } return success; }