Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
350 changes: 179 additions & 171 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -260,185 +260,193 @@ endif()
# list(APPEND CMAKE_MODULE_PATH "<path_to_s2geometry_dir>/third_party/cmake")
# add_subdirectory(<path_to_s2geometry_dir> s2geometry)
# target_link_libraries(<target_name> s2)
target_include_directories(s2 PUBLIC ${CMAKE_CURRENT_SOURCE_DIR}/src)
if (S2_SYSTEM_HEADERS)
# it's useful to avoid warnings from s2 headers
# because it's impossible to pass same settings to target_link_libraries
target_include_directories(s2 SYSTEM PUBLIC ${CMAKE_CURRENT_SOURCE_DIR}/src)
else ()
target_include_directories(s2 PUBLIC ${CMAKE_CURRENT_SOURCE_DIR}/src)
endif ()

# Add version information to the target
set_target_properties(s2 PROPERTIES
SOVERSION ${PROJECT_VERSION_MAJOR}
VERSION ${PROJECT_VERSION})

# We don't need to install all headers, only those
# transitively included by s2 headers we are exporting.
install(FILES src/s2/_fp_contract_off.h
src/s2/encoded_s2cell_id_vector.h
src/s2/encoded_s2point_vector.h
src/s2/encoded_s2shape_index.h
src/s2/encoded_string_vector.h
src/s2/encoded_uint_vector.h
src/s2/id_set_lexicon.h
src/s2/mutable_s2shape_index.h
src/s2/r1interval.h
src/s2/r2.h
src/s2/r2rect.h
src/s2/s1angle.h
src/s2/s1chord_angle.h
src/s2/s1interval.h
src/s2/s2boolean_operation.h
src/s2/s2buffer_operation.h
src/s2/s2builder.h
src/s2/s2builder_graph.h
src/s2/s2builder_layer.h
src/s2/s2builderutil_closed_set_normalizer.h
src/s2/s2builderutil_find_polygon_degeneracies.h
src/s2/s2builderutil_get_snapped_winding_delta.h
src/s2/s2builderutil_graph_shape.h
src/s2/s2builderutil_lax_polygon_layer.h
src/s2/s2builderutil_lax_polyline_layer.h
src/s2/s2builderutil_s2point_vector_layer.h
src/s2/s2builderutil_s2polygon_layer.h
src/s2/s2builderutil_s2polyline_layer.h
src/s2/s2builderutil_s2polyline_vector_layer.h
src/s2/s2builderutil_snap_functions.h
src/s2/s2builderutil_testing.h
src/s2/s2cap.h
src/s2/s2cell.h
src/s2/s2cell_id.h
src/s2/s2cell_index.h
src/s2/s2cell_union.h
src/s2/s2centroids.h
src/s2/s2closest_cell_query.h
src/s2/s2closest_cell_query_base.h
src/s2/s2closest_edge_query.h
src/s2/s2closest_edge_query_base.h
src/s2/s2closest_point_query.h
src/s2/s2closest_point_query_base.h
src/s2/s2contains_point_query.h
src/s2/s2contains_vertex_query.h
src/s2/s2convex_hull_query.h
src/s2/s2coords_internal.h
src/s2/s2coords.h
src/s2/s2crossing_edge_query.h
src/s2/s2debug.h
src/s2/s2distance_target.h
src/s2/s2earth.h
src/s2/s2edge_clipping.h
src/s2/s2edge_crosser.h
src/s2/s2edge_crossings.h
src/s2/s2edge_crossings_internal.h
src/s2/s2edge_distances.h
src/s2/s2edge_tessellator.h
src/s2/s2edge_vector_shape.h
src/s2/s2error.h
src/s2/s2furthest_edge_query.h
src/s2/s2hausdorff_distance_query.h
src/s2/s2latlng.h
src/s2/s2latlng_rect.h
src/s2/s2latlng_rect_bounder.h
src/s2/s2lax_loop_shape.h
src/s2/s2lax_polygon_shape.h
src/s2/s2lax_polyline_shape.h
src/s2/s2loop.h
src/s2/s2loop_measures.h
src/s2/s2measures.h
src/s2/s2memory_tracker.h
src/s2/s2metrics.h
src/s2/s2max_distance_targets.h
src/s2/s2min_distance_targets.h
src/s2/s2padded_cell.h
src/s2/s2point.h
src/s2/s2point_vector_shape.h
src/s2/s2point_compression.h
src/s2/s2point_index.h
src/s2/s2point_region.h
src/s2/s2point_span.h
src/s2/s2pointutil.h
src/s2/s2polygon.h
src/s2/s2polyline.h
src/s2/s2polyline_alignment.h
src/s2/s2polyline_measures.h
src/s2/s2polyline_simplifier.h
src/s2/s2predicates.h
src/s2/s2predicates_internal.h
src/s2/s2projections.h
src/s2/s2r2rect.h
src/s2/s2region.h
src/s2/s2region_term_indexer.h
src/s2/s2region_coverer.h
src/s2/s2region_intersection.h
src/s2/s2region_union.h
src/s2/s2shape.h
src/s2/s2shape_index.h
src/s2/s2shape_index_buffered_region.h
src/s2/s2shape_index_region.h
src/s2/s2shape_measures.h
src/s2/s2shape_nesting_query.h
src/s2/s2shapeutil_build_polygon_boundaries.h
src/s2/s2shapeutil_coding.h
src/s2/s2shapeutil_contains_brute_force.h
src/s2/s2shapeutil_conversion.h
src/s2/s2shapeutil_count_edges.h
src/s2/s2shapeutil_edge_iterator.h
src/s2/s2shapeutil_get_reference_point.h
src/s2/s2shapeutil_range_iterator.h
src/s2/s2shapeutil_shape_edge.h
src/s2/s2shapeutil_shape_edge_id.h
src/s2/s2shapeutil_testing.h
src/s2/s2shapeutil_visit_crossing_edge_pairs.h
src/s2/s2testing.h
src/s2/s2text_format.h
src/s2/s2wedge_relations.h
src/s2/s2winding_operation.h
src/s2/s2wrapped_shape.h
src/s2/sequence_lexicon.h
src/s2/thread_testing.h
src/s2/value_lexicon.h
DESTINATION "${CMAKE_INSTALL_INCLUDEDIR}/s2")
install(FILES src/s2/base/casts.h
src/s2/base/commandlineflags.h
src/s2/base/integral_types.h
src/s2/base/log_severity.h
src/s2/base/logging.h
src/s2/base/port.h
src/s2/base/spinlock.h
DESTINATION "${CMAKE_INSTALL_INCLUDEDIR}/s2/base")
install(FILES src/s2/util/bitmap/bitmap.h
DESTINATION "${CMAKE_INSTALL_INCLUDEDIR}/s2/util/bitmap")
install(FILES src/s2/util/bits/bits.h
DESTINATION "${CMAKE_INSTALL_INCLUDEDIR}/s2/util/bits")
install(FILES src/s2/util/coding/coder.h
src/s2/util/coding/varint.h
DESTINATION "${CMAKE_INSTALL_INCLUDEDIR}/s2/util/coding")
install(FILES src/s2/util/endian/endian.h
DESTINATION "${CMAKE_INSTALL_INCLUDEDIR}/s2/util/endian")
install(FILES src/s2/util/gtl/compact_array.h
src/s2/util/gtl/container_logging.h
src/s2/util/gtl/dense_hash_set.h
src/s2/util/gtl/densehashtable.h
src/s2/util/gtl/hashtable_common.h
DESTINATION "${CMAKE_INSTALL_INCLUDEDIR}/s2/util/gtl")
install(FILES src/s2/util/hash/mix.h
DESTINATION "${CMAKE_INSTALL_INCLUDEDIR}/s2/util/hash")
install(FILES src/s2/util/math/mathutil.h
src/s2/util/math/matrix3x3.h
src/s2/util/math/vector.h
DESTINATION "${CMAKE_INSTALL_INCLUDEDIR}/s2/util/math")
install(FILES src/s2/util/math/exactfloat/exactfloat.h
DESTINATION "${CMAKE_INSTALL_INCLUDEDIR}/s2/util/math/exactfloat")
install(FILES src/s2/util/units/length-units.h
src/s2/util/units/physical-units.h
DESTINATION "${CMAKE_INSTALL_INCLUDEDIR}/s2/util/units")

if (GTEST_ROOT)
set(S2_TARGETS s2 s2testing)
else()
set(S2_TARGETS s2)
if (NOT S2_DO_NOT_INSTALL)
# We don't need to install all headers, only those
# transitively included by s2 headers we are exporting.
install(FILES src/s2/_fp_contract_off.h
src/s2/encoded_s2cell_id_vector.h
src/s2/encoded_s2point_vector.h
src/s2/encoded_s2shape_index.h
src/s2/encoded_string_vector.h
src/s2/encoded_uint_vector.h
src/s2/id_set_lexicon.h
src/s2/mutable_s2shape_index.h
src/s2/r1interval.h
src/s2/r2.h
src/s2/r2rect.h
src/s2/s1angle.h
src/s2/s1chord_angle.h
src/s2/s1interval.h
src/s2/s2boolean_operation.h
src/s2/s2buffer_operation.h
src/s2/s2builder.h
src/s2/s2builder_graph.h
src/s2/s2builder_layer.h
src/s2/s2builderutil_closed_set_normalizer.h
src/s2/s2builderutil_find_polygon_degeneracies.h
src/s2/s2builderutil_get_snapped_winding_delta.h
src/s2/s2builderutil_graph_shape.h
src/s2/s2builderutil_lax_polygon_layer.h
src/s2/s2builderutil_lax_polyline_layer.h
src/s2/s2builderutil_s2point_vector_layer.h
src/s2/s2builderutil_s2polygon_layer.h
src/s2/s2builderutil_s2polyline_layer.h
src/s2/s2builderutil_s2polyline_vector_layer.h
src/s2/s2builderutil_snap_functions.h
src/s2/s2builderutil_testing.h
src/s2/s2cap.h
src/s2/s2cell.h
src/s2/s2cell_id.h
src/s2/s2cell_index.h
src/s2/s2cell_union.h
src/s2/s2centroids.h
src/s2/s2closest_cell_query.h
src/s2/s2closest_cell_query_base.h
src/s2/s2closest_edge_query.h
src/s2/s2closest_edge_query_base.h
src/s2/s2closest_point_query.h
src/s2/s2closest_point_query_base.h
src/s2/s2contains_point_query.h
src/s2/s2contains_vertex_query.h
src/s2/s2convex_hull_query.h
src/s2/s2coords_internal.h
src/s2/s2coords.h
src/s2/s2crossing_edge_query.h
src/s2/s2debug.h
src/s2/s2distance_target.h
src/s2/s2earth.h
src/s2/s2edge_clipping.h
src/s2/s2edge_crosser.h
src/s2/s2edge_crossings.h
src/s2/s2edge_crossings_internal.h
src/s2/s2edge_distances.h
src/s2/s2edge_tessellator.h
src/s2/s2edge_vector_shape.h
src/s2/s2error.h
src/s2/s2furthest_edge_query.h
src/s2/s2hausdorff_distance_query.h
src/s2/s2latlng.h
src/s2/s2latlng_rect.h
src/s2/s2latlng_rect_bounder.h
src/s2/s2lax_loop_shape.h
src/s2/s2lax_polygon_shape.h
src/s2/s2lax_polyline_shape.h
src/s2/s2loop.h
src/s2/s2loop_measures.h
src/s2/s2measures.h
src/s2/s2memory_tracker.h
src/s2/s2metrics.h
src/s2/s2max_distance_targets.h
src/s2/s2min_distance_targets.h
src/s2/s2padded_cell.h
src/s2/s2point.h
src/s2/s2point_vector_shape.h
src/s2/s2point_compression.h
src/s2/s2point_index.h
src/s2/s2point_region.h
src/s2/s2point_span.h
src/s2/s2pointutil.h
src/s2/s2polygon.h
src/s2/s2polyline.h
src/s2/s2polyline_alignment.h
src/s2/s2polyline_measures.h
src/s2/s2polyline_simplifier.h
src/s2/s2predicates.h
src/s2/s2predicates_internal.h
src/s2/s2projections.h
src/s2/s2r2rect.h
src/s2/s2region.h
src/s2/s2region_term_indexer.h
src/s2/s2region_coverer.h
src/s2/s2region_intersection.h
src/s2/s2region_union.h
src/s2/s2shape.h
src/s2/s2shape_index.h
src/s2/s2shape_index_buffered_region.h
src/s2/s2shape_index_region.h
src/s2/s2shape_measures.h
src/s2/s2shape_nesting_query.h
src/s2/s2shapeutil_build_polygon_boundaries.h
src/s2/s2shapeutil_coding.h
src/s2/s2shapeutil_contains_brute_force.h
src/s2/s2shapeutil_conversion.h
src/s2/s2shapeutil_count_edges.h
src/s2/s2shapeutil_edge_iterator.h
src/s2/s2shapeutil_get_reference_point.h
src/s2/s2shapeutil_range_iterator.h
src/s2/s2shapeutil_shape_edge.h
src/s2/s2shapeutil_shape_edge_id.h
src/s2/s2shapeutil_testing.h
src/s2/s2shapeutil_visit_crossing_edge_pairs.h
src/s2/s2testing.h
src/s2/s2text_format.h
src/s2/s2wedge_relations.h
src/s2/s2winding_operation.h
src/s2/s2wrapped_shape.h
src/s2/sequence_lexicon.h
src/s2/thread_testing.h
src/s2/value_lexicon.h
DESTINATION "${CMAKE_INSTALL_INCLUDEDIR}/s2")
install(FILES src/s2/base/casts.h
src/s2/base/commandlineflags.h
src/s2/base/integral_types.h
src/s2/base/log_severity.h
src/s2/base/logging.h
src/s2/base/port.h
src/s2/base/spinlock.h
DESTINATION "${CMAKE_INSTALL_INCLUDEDIR}/s2/base")
install(FILES src/s2/util/bitmap/bitmap.h
DESTINATION "${CMAKE_INSTALL_INCLUDEDIR}/s2/util/bitmap")
install(FILES src/s2/util/bits/bits.h
DESTINATION "${CMAKE_INSTALL_INCLUDEDIR}/s2/util/bits")
install(FILES src/s2/util/coding/coder.h
src/s2/util/coding/varint.h
DESTINATION "${CMAKE_INSTALL_INCLUDEDIR}/s2/util/coding")
install(FILES src/s2/util/endian/endian.h
DESTINATION "${CMAKE_INSTALL_INCLUDEDIR}/s2/util/endian")
install(FILES src/s2/util/gtl/compact_array.h
src/s2/util/gtl/container_logging.h
src/s2/util/gtl/dense_hash_set.h
src/s2/util/gtl/densehashtable.h
src/s2/util/gtl/hashtable_common.h
DESTINATION "${CMAKE_INSTALL_INCLUDEDIR}/s2/util/gtl")
install(FILES src/s2/util/hash/mix.h
DESTINATION "${CMAKE_INSTALL_INCLUDEDIR}/s2/util/hash")
install(FILES src/s2/util/math/mathutil.h
src/s2/util/math/matrix3x3.h
src/s2/util/math/vector.h
DESTINATION "${CMAKE_INSTALL_INCLUDEDIR}/s2/util/math")
install(FILES src/s2/util/math/exactfloat/exactfloat.h
DESTINATION "${CMAKE_INSTALL_INCLUDEDIR}/s2/util/math/exactfloat")
install(FILES src/s2/util/units/length-units.h
src/s2/util/units/physical-units.h
DESTINATION "${CMAKE_INSTALL_INCLUDEDIR}/s2/util/units")

if (GTEST_ROOT)
set(S2_TARGETS s2 s2testing)
else()
set(S2_TARGETS s2)
endif()

install(TARGETS ${S2_TARGETS}
RUNTIME DESTINATION "${CMAKE_INSTALL_BINDIR}"
ARCHIVE DESTINATION "${CMAKE_INSTALL_LIBDIR}"
LIBRARY DESTINATION "${CMAKE_INSTALL_LIBDIR}")
endif()

install(TARGETS ${S2_TARGETS}
RUNTIME DESTINATION "${CMAKE_INSTALL_BINDIR}"
ARCHIVE DESTINATION "${CMAKE_INSTALL_LIBDIR}"
LIBRARY DESTINATION "${CMAKE_INSTALL_LIBDIR}")

message("GTEST_ROOT: ${GTEST_ROOT}")
if (GTEST_ROOT)
add_subdirectory(${GTEST_ROOT} build_gtest)
Expand Down
3 changes: 3 additions & 0 deletions src/s2/s2polygon.h
Original file line number Diff line number Diff line change
Expand Up @@ -701,6 +701,9 @@ class S2Polygon final : public S2Region {
S2Polygon* Clone() const override;
S2Cap GetCapBound() const override; // Cap surrounding rect bound.
S2LatLngRect GetRectBound() const override { return bound_; }
// It's useful for external Contains operation.
// (see subregion_bound_ definition for details)
S2LatLngRect GetSubRegionBound() const { return subregion_bound_; }
void GetCellUnionBound(std::vector<S2CellId> *cell_ids) const override;

bool Contains(const S2Cell& cell) const override;
Expand Down
Loading