diff --git a/.devcontainer/doxygen-cgal/Dockerfile b/.devcontainer/doxygen-cgal/Dockerfile
new file mode 100644
index 00000000000..81cb1f954ce
--- /dev/null
+++ b/.devcontainer/doxygen-cgal/Dockerfile
@@ -0,0 +1,55 @@
+# Use an official Fedora as a parent image for the build stage
+FROM fedora:latest AS sources_deps
+
+# Set environment variables to non-interactive
+ENV DEBIAN_FRONTEND=noninteractive
+
+# Install dependencies
+RUN dnf update -y && dnf install -y \
+ wget \
+ make \
+ gcc \
+ gcc-c++ \
+ patch \
+ cmake \
+ bison \
+ flex \
+ unzip \
+ python3 \
+ && dnf clean all
+
+# Copy the patch file to the build context
+COPY cgal-NO_ADDITIONAL_DETAILS.patch .
+
+FROM sources_deps AS build
+
+# Build and install Doxygen from sources
+ARG DOXYGEN_VERSION=1.9.6
+ARG MAKEFLAGS=-j$(nproc)
+RUN if [ -n "$DEBUG"];then set -x && make --version && ls -lZ /tmp && id; fi \
+ && DOXYGEN_VERSION_UNDERSCORE=$(echo ${DOXYGEN_VERSION} | sed 's/\./_/g') \
+ && wget https://github.com/doxygen/doxygen/archive/refs/tags/Release_${DOXYGEN_VERSION_UNDERSCORE}.zip \
+ && unzip Release_${DOXYGEN_VERSION_UNDERSCORE}.zip \
+ && cd doxygen-Release_${DOXYGEN_VERSION_UNDERSCORE} \
+ && patch -p1 < ../cgal-NO_ADDITIONAL_DETAILS.patch \
+ && mkdir build \
+ && cd build \
+ && cmake -G "Unix Makefiles" -DCMAKE_BUILD_TYPE=Release .. \
+ && cmake --build . \
+ && cmake --install . \
+ && mkdir -p /usr/local/share/doc/doxygen && cp ../LICENSE /usr/local/share/doc/doxygen/LICENSE.TXT \
+ && cd ../.. \
+ && rm -rf doxygen-Release_${DOXYGEN_VERSION_UNDERSCORE} Release_${DOXYGEN_VERSION_UNDERSCORE}.zip
+
+# Use a smaller base image for the final stage
+FROM fedora:latest
+
+# Install necessary runtime dependencies
+RUN set -x \
+ && dnf update -y && dnf install -y graphviz 'perl(Getopt::Std)' tex-bibtex cmake python3-lxml python3-pyquery \
+ && dnf clean all
+
+# Copy Doxygen from the build stage
+COPY --from=build /usr/local/bin/doxygen /usr/local/bin
+COPY --from=build /usr/local/share/doc/doxygen/LICENSE.TXT /usr/local/share/doc/doxygen/LICENSE.TXT
+RUN doxygen --version
diff --git a/.devcontainer/doxygen-cgal/Makefile b/.devcontainer/doxygen-cgal/Makefile
new file mode 100644
index 00000000000..9413173b5a7
--- /dev/null
+++ b/.devcontainer/doxygen-cgal/Makefile
@@ -0,0 +1,23 @@
+SHELL := /bin/bash
+DOXYGEN_VERSIONS := 1.12.0 1.11.0 1.10.0 1.9.8 1.9.7 1.9.6
+
+.PHONY: all build-% push-% build push
+
+all: build
+ @echo "Use `$(MAKE) push` to push the images to the registry."
+
+build-%:
+ @echo "MAKEFLAGS: $(MAKEFLAGS)"
+ @echo "Building Doxygen version $*..."
+ if [ "$$(getenforce || true)" == "Enforcing" ]; then Z=:z; else Z=; fi; \
+ F="$(MAKEFLAGS)"; F=$${F##*fifo:}; F=$${F%% *}; \
+ if [ -p "$$F" ]; then echo "The GNU make FIFO file exists:"; ls -l $$F; VOLUME_ARGS="-v $$F:$$F$$Z"; echo -- $$VOLUME_ARGS; fi; \
+ podman build --build-arg DOXYGEN_VERSION=$* --build-arg "MAKEFLAGS=$(MAKEFLAGS)" $$VOLUME_ARGS -t cgal/doxygen:$* .
+
+push-%: build-%
+ @echo "Pushing cgal/doxygen:$*..."
+ podman push cgal/doxygen:$*
+
+build: $(foreach version,$(DOXYGEN_VERSIONS),build-$(version))
+
+push: $(foreach version,$(DOXYGEN_VERSIONS),push-$(version))
diff --git a/.devcontainer/doxygen-cgal/cgal-NO_ADDITIONAL_DETAILS.patch b/.devcontainer/doxygen-cgal/cgal-NO_ADDITIONAL_DETAILS.patch
new file mode 100644
index 00000000000..bb6e63b274d
--- /dev/null
+++ b/.devcontainer/doxygen-cgal/cgal-NO_ADDITIONAL_DETAILS.patch
@@ -0,0 +1,44 @@
+diff --git a/src/config.xml b/src/config.xml
+index 13910958a6..31f1354e44 100644
+--- a/src/config.xml
++++ b/src/config.xml
+@@ -893,6 +893,18 @@ Go to the next section or return to the
+ \note This will also disable the warnings about undocumented members
+ that are normally produced when \ref cfg_warnings "WARNINGS" is
+ set to \c YES.
++]]>
++
++
++
++
++
+diff --git a/src/memberdef.cpp b/src/memberdef.cpp
+index 08d9bf24c5..ab04e994c5 100644
+--- a/src/memberdef.cpp
++++ b/src/memberdef.cpp
+@@ -2501,6 +2501,7 @@ bool MemberDefImpl::hasDetailedDescription() const
+ if (!m_hasDetailedDescriptionCached)
+ {
+ bool extractAll = Config_getBool(EXTRACT_ALL);
++ bool xAllNoDetailedSec = Config_getBool(NO_ADDITIONAL_DETAILS);
+ bool alwaysDetailedSec = Config_getBool(ALWAYS_DETAILED_SEC);
+ bool repeatBrief = Config_getBool(REPEAT_BRIEF);
+ bool briefMemberDesc = Config_getBool(BRIEF_MEMBER_DESC);
+@@ -2512,7 +2513,7 @@ bool MemberDefImpl::hasDetailedDescription() const
+ // the member has detailed documentation because the user added some comments
+ bool docFilter =
+ // extract all is enabled
+- extractAll ||
++ (extractAll && !xAllNoDetailedSec) ||
+ // has detailed docs
+ !documentation().isEmpty() ||
+ // has inbody docs
diff --git a/.devcontainer/doxygen-cgal/devcontainer.json b/.devcontainer/doxygen-cgal/devcontainer.json
new file mode 100644
index 00000000000..f1c9f05badb
--- /dev/null
+++ b/.devcontainer/doxygen-cgal/devcontainer.json
@@ -0,0 +1,16 @@
+{
+ "name": "CGAL Doxygen Dev Container, version 1.12.0, with CGAL patch",
+ "image": "docker.io/cgal/doxygen:1.12.0",
+ "features": {
+ "ghcr.io/devcontainers/features/git:1.3.2": {}
+ },
+ "customizations": {
+ "vscode": {
+ "extensions": [
+ "ms-vscode.cmake-tools",
+ "bbenoist.Doxygen",
+ "ms-vscode.cpptools"
+ ]
+ }
+ },
+}
\ No newline at end of file
diff --git a/.devcontainer/doxygen-cgal/distrobox.ini b/.devcontainer/doxygen-cgal/distrobox.ini
new file mode 100644
index 00000000000..55c7c546481
--- /dev/null
+++ b/.devcontainer/doxygen-cgal/distrobox.ini
@@ -0,0 +1,29 @@
+[distrobox-doxygen-1.12.0]
+image=cgal/doxygen:1.12.0
+exported_bins="/usr/local/bin/doxygen /usr/bin/perl /usr/bin/cmake /usr/bin/python3"
+exported_bins_path=$HOME/.local/bin-doxygen-1.12.0
+
+[distrobox-doxygen-1.11.0]
+image=cgal/doxygen:1.11.0
+exported_bins="/usr/local/bin/doxygen /usr/bin/perl /usr/bin/cmake /usr/bin/python3"
+exported_bins_path=$HOME/.local/bin-doxygen-1.11.0
+
+[distrobox-doxygen-1.10.0]
+image=cgal/doxygen:1.10.0
+exported_bins="/usr/local/bin/doxygen /usr/bin/perl /usr/bin/cmake /usr/bin/python3"
+exported_bins_path=$HOME/.local/bin-doxygen-1.10.0
+
+[distrobox-doxygen-1.9.8]
+image=cgal/doxygen:1.9.8
+exported_bins="/usr/local/bin/doxygen /usr/bin/perl /usr/bin/cmake /usr/bin/python3"
+exported_bins_path=$HOME/.local/bin-doxygen-1.9.8
+
+[distrobox-doxygen-1.9.7]
+image=cgal/doxygen:1.9.7
+exported_bins="/usr/local/bin/doxygen /usr/bin/perl /usr/bin/cmake /usr/bin/python3"
+exported_bins_path=$HOME/.local/bin-doxygen-1.9.7
+
+[distrobox-doxygen-1.9.6]
+image=cgal/doxygen:1.9.6
+exported_bins="/usr/local/bin/doxygen /usr/bin/perl /usr/bin/cmake /usr/bin/python3"
+exported_bins_path=$HOME/.local/bin-doxygen-1.9.6
diff --git a/.gitattributes b/.gitattributes
index 4211b302eb1..0c2e3c3b778 100644
--- a/.gitattributes
+++ b/.gitattributes
@@ -44,11 +44,9 @@ Documentation/Doxyfile text eol=lf
Documentation/pkglist_filter text eol=lf
Installation/update_CHANGES text eol=lf
Scripts/developer_scripts/autotest_cgal text eol=lf
-Scripts/developer_scripts/autotest_cgal_with_cmake text eol=lf
Scripts/developer_scripts/cgal_build text eol=lf
Scripts/developer_scripts/cgal_depend text eol=lf
Scripts/developer_scripts/cgal_git_update_hooks_for_client text eol=lf
-Scripts/developer_scripts/cgal_test_with_cmake text eol=lf
Scripts/developer_scripts/cgal2gml text eol=lf
Scripts/developer_scripts/check_library_uses_no_gpl_files text eol=lf
Scripts/developer_scripts/check_licenses text eol=lf
@@ -56,7 +54,6 @@ Scripts/developer_scripts/check_macro_names text eol=lf
Scripts/developer_scripts/check_no_CGAL_USE_without_includes_before text eol=lf
Scripts/developer_scripts/check_svn_keywords text eol=lf
Scripts/developer_scripts/create_cgal_test text eol=lf
-Scripts/developer_scripts/create_cgal_test_with_cmake text eol=lf
Scripts/developer_scripts/create_internal_release text eol=lf
Scripts/developer_scripts/create_new_release text eol=lf
Scripts/developer_scripts/detect_files_with_mixed_eol_styles text eol=lf
diff --git a/.gitignore b/.gitignore
index b6fe952fd56..94d02486c1b 100644
--- a/.gitignore
+++ b/.gitignore
@@ -8,7 +8,6 @@ AABB_tree/demo/AABB_tree/Makefile
AABB_tree/examples/AABB_tree/*.kdev*
AABB_tree/examples/AABB_tree/*_example
AABB_tree/examples/AABB_tree/Makefile
-AABB_tree/examples/AABB_tree/cgal_test_with_cmake
AABB_tree/test/AABB_tree/*.kdev*
AABB_tree/test/AABB_tree/Makefile
AABB_tree/test/AABB_tree/aabb_correctness_triangle_test
@@ -18,17 +17,14 @@ AABB_tree/test/AABB_tree/aabb_distance_triangle_test
AABB_tree/test/AABB_tree/aabb_intersection_triangle_test
AABB_tree/test/AABB_tree/aabb_naive_vs_tree_distance_segment_test
AABB_tree/test/AABB_tree/aabb_projection_triangle_test
-AABB_tree/test/AABB_tree/cgal_test_with_cmake
Algebraic_foundations/test/Algebraic_foundations/Algebraic_extension_traits
Algebraic_foundations/test/Algebraic_foundations/Algebraic_structure_traits
Algebraic_foundations/test/Algebraic_foundations/Chinese_remainder_traits
Algebraic_foundations/test/Algebraic_foundations/Coercion_traits
Algebraic_foundations/test/Algebraic_foundations/Real_embeddable_traits
Algebraic_foundations/test/Algebraic_foundations/Scalar_factor_traits
-Algebraic_foundations/test/Algebraic_foundations/cgal_test_with_cmake
Algebraic_foundations/test/Algebraic_foundations/extended_euclidean_algorithm
Algebraic_foundations/test/Algebraic_foundations/ipower
-Algebraic_kernel_d/test/Algebraic_kernel_d/cgal_test_with_cmake
Algebraic_kernel_d/test/Algebraic_kernel_d/rs_isolator
Alpha_shapes_2/demo/Alpha_shapes_2/Makefile
Alpha_shapes_2/demo/Alpha_shapes_2/alpha_shapes_2
@@ -37,7 +33,6 @@ Alpha_shapes_2/examples/Alpha_shapes_2/alpha_shapes_2
Alpha_shapes_3/demo/Alpha_shapes_3/Makefile
Alpha_shapes_3/demo/Alpha_shapes_3/alpha_shapes_3
Alpha_shapes_3/demo/Alpha_shapes_3/weighted_alpha_shapes_3
-Alpha_shapes_3/test/Alpha_shapes_3/cgal_test_with_cmake
Alpha_shapes_3/test/Alpha_shapes_3/test_alpha_shape_3
Alpha_shapes_3/test/Alpha_shapes_3/test_fixed_alpha_shape_3
Alpha_shapes_3/test/Alpha_shapes_3/test_weighted_alpha_shape_3
@@ -60,7 +55,6 @@ Arrangement_on_surface_2/examples/Arrangement_on_surface_2/batched_point_locatio
Arrangement_on_surface_2/examples/Arrangement_on_surface_2/bgl_dual_adapter
Arrangement_on_surface_2/examples/Arrangement_on_surface_2/bgl_primal_adapter
Arrangement_on_surface_2/examples/Arrangement_on_surface_2/bounded_planar_vertical_decomposition
-Arrangement_on_surface_2/examples/Arrangement_on_surface_2/cgal_test_with_cmake
Arrangement_on_surface_2/examples/Arrangement_on_surface_2/circles
Arrangement_on_surface_2/examples/Arrangement_on_surface_2/circular_arcs
Arrangement_on_surface_2/examples/Arrangement_on_surface_2/circular_line_arcs
@@ -103,30 +97,24 @@ Arrangement_on_surface_2/examples/Arrangement_on_surface_2/unbounded_rational_fu
Arrangement_on_surface_2/examples/Arrangement_on_surface_2/vertical_ray_shooting
Arrangement_on_surface_2/test/Arrangement_on_surface_2/test_point_location.cpp
BGL/examples/BGL_arrangement_2/Makefile
-BGL/examples/BGL_arrangement_2/cgal_test_with_cmake
BGL/examples/BGL_arrangement_2/dual
BGL/examples/BGL_arrangement_2/primal
-BGL/test/BGL/cgal_test_with_cmake
Boolean_set_operations_2/demo/Boolean_set_operations_2/Makefile
Boolean_set_operations_2/demo/Boolean_set_operations_2/boolean_operations_2
Box_intersection_d/test/Box_intersection_d/automated_test
Box_intersection_d/test/Box_intersection_d/benchmark.data
Box_intersection_d/test/Box_intersection_d/benchmark_box_intersection
Box_intersection_d/test/Box_intersection_d/box_grid
-Box_intersection_d/test/Box_intersection_d/cgal_test_with_cmake
Box_intersection_d/test/Box_intersection_d/random_set_test
CGAL_ImageIO/demo/CGALimageIO/Makefile
-CGAL_ImageIO/demo/CGALimageIO/cgal_test_with_cmake
CGAL_ImageIO/demo/CGALimageIO/image_to_vtk_viewer
CGAL_ImageIO/examples/CGALimageIO/Makefile
-CGAL_ImageIO/examples/CGALimageIO/cgal_test_with_cmake
CGAL_ImageIO/examples/CGALimageIO/convert_raw_image_to_inr
CGAL_ImageIO/examples/CGALimageIO/makefile
CGAL_ImageIO/examples/CGALimageIO/test_imageio
CGAL_ImageIO/src/CGAL_ImageIO/Makefile
Circular_kernel_3/demo/Circular_kernel_3/Circular_kernel_3_demo
Circular_kernel_3/demo/Circular_kernel_3/Makefile
-Circular_kernel_3/test/Circular_kernel_3/cgal_test_with_cmake
Circular_kernel_3/test/Circular_kernel_3/test_Exact_spherical_kernel
Circular_kernel_3/test/Circular_kernel_3/test_Lazy_Spherical_kernel
Circular_kernel_3/test/Circular_kernel_3/test_Lazy_spherical_kernel_basics
@@ -137,7 +125,6 @@ Documentation/log/*.*
Documentation/output
Documentation/tags/*.*
Generator/examples/Generator/ball_d
-Generator/examples/Generator/cgal_test_with_cmake
Generator/examples/Generator/cube_d
Generator/examples/Generator/grid_d
Generator/examples/Generator/random_convex_set
@@ -149,7 +136,6 @@ Generator/examples/Generator/random_segments1
Generator/examples/Generator/random_segments2
Generator/examples/Generator/sphere_d
Generator/test/Generator/bug
-Generator/test/Generator/cgal_test_with_cmake
Generator/test/Generator/random_poly_test
Generator/test/Generator/rcs_test
Generator/test/Generator/test_combination_enumerator
@@ -178,7 +164,6 @@ GraphicsView/demo/Triangulation_2/Makefile
GraphicsView/demo/Triangulation_2/Regular_triangulation_2
GraphicsView/demo/Triangulation_2/qrc_*.cxx
GraphicsView/demo/Triangulation_2/ui_*.h
-HalfedgeDS/test/HalfedgeDS/cgal_test_with_cmake
HalfedgeDS/test/HalfedgeDS/test_hds
HalfedgeDS/test/HalfedgeDS/test_hds_decorator
Inscribed_areas/test/Inscribed_areas/Makefile
@@ -188,11 +173,8 @@ Installation/auxiliary/gdb/python/CGAL/printers.pyc
Installation/auxiliary/gdb/test
Installation/cmake/modules/*.tmp
Installation/test/Installation/cgal_test
-/Installation/test/Installation/cgal_test_with_cmake
Installation/test/Installation/deprecation_warning
-Interpolation/demo/Interpolation/cgal_test_with_cmake
Intersections_3/test/Intersections_3/bbox_other_do_intersect_test
-Intersections_3/test/Intersections_3/cgal_test_with_cmake
Intersections_3/test/Intersections_3/circle_other
Intersections_3/test/Intersections_3/line_line
Intersections_3/test/Intersections_3/segment_segment
@@ -206,7 +188,6 @@ Jet_fitting_3/examples/Jet_fitting_3/Single_estimation
Jet_fitting_3/examples/Jet_fitting_3/VC
Jet_fitting_3/test/Jet_fitting_3/Makefile
Jet_fitting_3/test/Jet_fitting_3/blind_1pt
-/Jet_fitting_3/examples/Jet_fitting_3/cgal_test_with_cmake
/Jet_fitting_3/examples/Jet_fitting_3/data_ellipe0.003.off.4ogl.txt
Kernel_23/test/Kernel_23/Cartesian
Kernel_23/test/Kernel_23/Dimension
@@ -220,7 +201,6 @@ Kernel_23/test/Kernel_23/Simple_cartesian
Kernel_23/test/Kernel_23/Simple_homogeneous
Kernel_23/test/Kernel_23/Test_IO.out
/Kernel_23/test/Kernel_23/Test-*IO.out
-Kernel_23/test/Kernel_23/cgal_test_with_cmake
Kernel_23/test/Kernel_23/test_kernel__
Kinetic_data_structures/demo/Kinetic_data_structures/Delaunay_triangulation_2
Kinetic_data_structures/demo/Kinetic_data_structures/Delaunay_triangulation_stable_subset_2
@@ -229,13 +209,11 @@ Kinetic_data_structures/demo/Kinetic_data_structures/KDS_Delaunay_triangulation_
Kinetic_data_structures/demo/Kinetic_data_structures/KDS_generate_data
Kinetic_data_structures/demo/Kinetic_data_structures/KDS_gui_2
Kinetic_data_structures/demo/Kinetic_data_structures/Makefile
-Kinetic_data_structures/demo/Kinetic_data_structures/cgal_test_with_cmake
Kinetic_data_structures/demo/Kinetic_data_structures/generate_data
Kinetic_data_structures/demo/Kinetic_data_structures/gui_2
Kinetic_data_structures/test/Kinetic_data_structures/Delaunay_triangulation_2
Kinetic_data_structures/test/Kinetic_data_structures/Delaunay_triangulation_3
Kinetic_data_structures/test/Kinetic_data_structures/active_objects_tables
-Kinetic_data_structures/test/Kinetic_data_structures/cgal_test_with_cmake
Kinetic_data_structures/test/Kinetic_data_structures/exact_kds
Kinetic_data_structures/test/Kinetic_data_structures/instantaneous_kernel
Kinetic_data_structures/test/Kinetic_data_structures/numbers
@@ -248,8 +226,6 @@ Kinetic_data_structures/test/Kinetic_data_structures/test_KDS_Delaunay_triangula
Kinetic_data_structures/test/Kinetic_data_structures/timings
Linear_cell_complex/demo/Linear_cell_complex/Linear_cell_complex_3.qrc.depends
Linear_cell_complex/demo/Linear_cell_complex/Linear_cell_complex_3_demo
-Linear_cell_complex/demo/Linear_cell_complex/cgal_test_with_cmake
-Linear_cell_complex/examples/Linear_cell_complex/cgal_test_with_cmake
Linear_cell_complex/examples/Linear_cell_complex/linear_cell_complex_3
Linear_cell_complex/examples/Linear_cell_complex/linear_cell_complex_3_triangulation
Linear_cell_complex/examples/Linear_cell_complex/linear_cell_complex_3_with_colored_vertices
@@ -297,7 +273,6 @@ Mesh_2/demo/Mesh_2/*.core
Mesh_2/demo/Mesh_2/*.moc
Mesh_2/demo/Mesh_2/.*.deps
Mesh_2/demo/Mesh_2/Makefile
-Mesh_2/demo/Mesh_2/cgal_test_with_cmake
Mesh_2/demo/Mesh_2/conform
Mesh_2/demo/Mesh_2/depends
Mesh_2/demo/Mesh_2/filename.edg
@@ -309,7 +284,6 @@ Mesh_2/demo/Mesh_2/semantic.cache
Mesh_2/doxygen
Mesh_2/examples/Mesh_2/*.core
Mesh_2/examples/Mesh_2/.*.deps
-Mesh_2/examples/Mesh_2/cgal_test_with_cmake
Mesh_2/examples/Mesh_2/conform
Mesh_2/examples/Mesh_2/conforming
Mesh_2/examples/Mesh_2/depends
@@ -324,7 +298,6 @@ Mesh_2/test/Mesh_2/*.core
Mesh_2/test/Mesh_2/.*.deps
Mesh_2/test/Mesh_2/Makefile
Mesh_2/test/Mesh_2/bench_double_map
-Mesh_2/test/Mesh_2/cgal_test_with_cmake
Mesh_2/test/Mesh_2/conform_plus
Mesh_2/test/Mesh_2/depends
Mesh_2/test/Mesh_2/my_makefile
@@ -373,7 +346,6 @@ Mesh_3/examples/Mesh_3/.*.deps
Mesh_3/examples/Mesh_3/random-image.inr
Mesh_3/examples/Mesh_3/Makefile
Mesh_3/examples/Mesh_3/applications
-Mesh_3/examples/Mesh_3/cgal_test_with_cmake
Mesh_3/examples/Mesh_3/cgal_to_medit
Mesh_3/examples/Mesh_3/chair-after.mesh
Mesh_3/examples/Mesh_3/chair-after.png
@@ -411,7 +383,6 @@ Mesh_3/examples/Mesh_3/test_off
/Mesh_3/test/Mesh_3/a.lua
/Mesh_3/test/Mesh_3/applications
/Mesh_3/test/Mesh_3/*.cgal
-/Mesh_3/test/Mesh_3/cgal_test_with_cmake
/Mesh_3/test/Mesh_3/cgal_to_medit
/Mesh_3/test/Mesh_3/combined_spheres
/Mesh_3/test/Mesh_3/combined_spheres-with-sphere-oracle
@@ -513,11 +484,9 @@ Min_ellipse_2/.tmp
Min_ellipse_2/Makefile
Min_ellipse_2/bin
Min_ellipse_2/doc_ps
-Minkowski_sum_3/test/Minkowski_sum_3/cgal_test_with_cmake
Nef_2/test/Nef_2/EPoint-test
Nef_2/test/Nef_2/Nef_polyhedron_2-test
Nef_2/test/Nef_2/Polynomial-test
-Nef_2/test/Nef_2/cgal_test_with_cmake
Nef_2/test/Nef_2/nef_2_point_location
Nef_3/demo/Nef_3/Makefile
Nef_3/examples/Nef_3/Makefile
@@ -575,7 +544,6 @@ Number_types/test/Number_types/_test_valid_finite_double
Number_types/test/Number_types/_test_valid_finite_float
Number_types/test/Number_types/bench_interval
Number_types/test/Number_types/cgal_test
-Number_types/test/Number_types/cgal_test_with_cmake
Number_types/test/Number_types/constant
Number_types/test/Number_types/double
Number_types/test/Number_types/doubletst
@@ -626,7 +594,6 @@ Periodic_3_triangulation_3/demo/Periodic_3_triangulation_3/moc_*.cpp
Periodic_3_triangulation_3/demo/Periodic_3_triangulation_3/ui_*.h
Periodic_3_triangulation_3/demo/Periodic_Lloyd_3/Periodic_Lloyd_3.qch
Periodic_3_triangulation_3/test/Periodic_3_triangulation_3/Test_tds_IO_3
-Periodic_3_triangulation_3/test/Periodic_3_triangulation_3/cgal_test_with_cmake
Periodic_3_triangulation_3/test/Periodic_3_triangulation_3/test_periodic_3_alpha_shape_3
Periodic_3_triangulation_3/test/Periodic_3_triangulation_3/test_periodic_3_delaunay_3
Periodic_3_triangulation_3/test/Periodic_3_triangulation_3/test_periodic_3_delaunay_hierarchy_3
@@ -637,7 +604,6 @@ Periodic_3_triangulation_3/test/Periodic_3_triangulation_3/test_periodic_3_trian
Periodic_3_triangulation_3/test/Periodic_3_triangulation_3/test_periodic_3_triangulation_traits_H_3
Periodic_3_triangulation_3/test/Periodic_3_triangulation_3/test_periodic_3_triangulation_traits_SC_3
Periodic_3_triangulation_3/test/Periodic_3_triangulation_3/test_periodic_3_triangulation_traits_SH_3
-Point_set_2/test/Point_set_2/cgal_test_with_cmake
Point_set_2/test/Point_set_2/nearest_nb1
Point_set_2/test/Point_set_2/nearest_nb_fcn
Point_set_2/test/Point_set_2/range_search_fcn
@@ -683,7 +649,6 @@ Point_set_processing_3/test/Point_set_processing_3/smoothing_test
/Polygon_mesh_processing/test/Polygon_mesh_processing/elephant-oriented.off
/Polygon_mesh_processing/test/Polygon_mesh_processing/elephant-shuffled.off
/Polygon_mesh_processing/test/Polygon_mesh_processing/blobby_2cc_no_id.off
-/Polygon_mesh_processing/test/Polygon_mesh_processing/cgal_test_with_cmake
/Polygon_mesh_processing/test/Polygon_mesh_processing/data/U.polylines.txt.off
/Polygon_mesh_processing/test/Polygon_mesh_processing/data/hole1.txt.off
/Polygon_mesh_processing/test/Polygon_mesh_processing/data/hole2.txt.off
@@ -707,7 +672,6 @@ Polyhedron/demo/Polyhedron/snapshot.*
Polyhedron/demo/Polyhedron/ui_*.h
Polyhedron/test/Polyhedron/*.kdev*
Polyhedron/test/Polyhedron/Makefile
-Polyhedron/test/Polyhedron/cgal_test_with_cmake
Polyhedron/test/Polyhedron/test_polyhedron
Polynomial/test/Polynomial/Exponent_vector
Polynomial/test/Polynomial/Interpolator
@@ -715,7 +679,6 @@ Polynomial/test/Polynomial/Polynomial_traits_d
Polynomial/test/Polynomial/Polynomial_type_generator
Polynomial/test/Polynomial/Polynomial_using_core
Polynomial/test/Polynomial/Polynomial_using_leda
-Polynomial/test/Polynomial/cgal_test_with_cmake
Polynomial/test/Polynomial/modular_gcd_utcf_algorithm_M
Polynomial/test/Polynomial/modular_gcd_utcf_dfai
Polynomial/test/Polynomial/modular_gcd_utcf_pure_wang
@@ -745,10 +708,8 @@ Polytope_distance_d/.obj
Polytope_distance_d/.tmp
Polytope_distance_d/Makefile
Polytope_distance_d/bin
-Polytope_distance_d/test/Polytope_distance_d/cgal_test_with_cmake
Polytope_distance_d/test/Polytope_distance_d/test_Polytope_distance_d_d
Principal_component_analysis/test/Principal_component_analysis/bounding_box
-Principal_component_analysis/test/Principal_component_analysis/cgal_test_with_cmake
Principal_component_analysis/test/Principal_component_analysis/linear_least_squares_fitting_circles_2
Principal_component_analysis/test/Principal_component_analysis/linear_least_squares_fitting_cuboids_3
Principal_component_analysis/test/Principal_component_analysis/linear_least_squares_fitting_points_2
@@ -773,7 +734,6 @@ Principal_component_analysis/test/Principal_component_analysis/test_linear_least
Principal_component_analysis/test/Principal_component_analysis/test_linear_least_squares_fitting_tetrahedra_3
Principal_component_analysis/test/Principal_component_analysis/test_linear_least_squares_fitting_triangles_2
Principal_component_analysis/test/Principal_component_analysis/test_linear_least_squares_fitting_triangles_3
-/Profiling_tools/test/Profiling_tools/cgal_test_with_cmake
/Profiling_tools/test/Profiling_tools/test_memory_sizer
/Profiling_tools/test/Profiling_tools/test_timer
QP_solver/documentation/Degeneracies.aux
@@ -805,7 +765,6 @@ Ridges_3/examples/Ridges_3/Compute_Ridges_Umbilics
Ridges_3/examples/Ridges_3/Makefile
Ridges_3/test/Ridges_3/Makefile
Ridges_3/test/Ridges_3/ridge_test
-STL_Extension/test/STL_Extension/cgal_test_with_cmake
STL_Extension/test/STL_Extension/test_Cache
STL_Extension/test/STL_Extension/test_Compact_container
STL_Extension/test/STL_Extension/test_Concatenate_iterator
@@ -827,7 +786,6 @@ STL_Extension/test/STL_Extension/test_nth_element
STL_Extension/test/STL_Extension/test_stl_extension
STL_Extension/test/STL_Extension/test_type_traits
STL_Extension/test/STL_Extension/test_vector
-SearchStructures/test/RangeSegmentTrees/cgal_test_with_cmake
SearchStructures/test/RangeSegmentTrees/test_segment_tree_set_2
Skin_surface_3/.cdtproject
Skin_surface_3/.project
@@ -838,7 +796,6 @@ Skin_surface_3/test/Skin_surface_3/err.txt
Skin_surface_3/test/Skin_surface_3/makefile
Skin_surface_3/test/Skin_surface_3/msgs.txt
Skin_surface_3/test/Skin_surface_3/subdivision_test
-Spatial_sorting/test/Spatial_sorting/cgal_test_with_cmake
Stream_lines_2/demo/Stream_lines_2/Makefile
Stream_lines_2/demo/Stream_lines_2/streamlines
Surface_mesh_parameterization/examples/Surface_mesh_parameterization/*.eps
@@ -966,20 +923,15 @@ Triangulation/test/Triangulation/output-pcds*
Triangulation/test/Triangulation/pc
Triangulation/test/Triangulation/pcds
Triangulation/test/Triangulation/torture
-/Triangulation/examples/Triangulation/cgal_test_with_cmake
-/Triangulation/test/Triangulation/cgal_test_with_cmake
/Triangulation/test/Triangulation/output-tds-*
-Triangulation_2/cgal_test_with_cmake
Triangulation_2/demo/Triangulation_2/Makefile
Triangulation_2/demo/Triangulation_2/constrained
Triangulation_2/demo/Triangulation_2/constrained_delaunay_triangulation_2
Triangulation_2/demo/Triangulation_2/delaunay_triangulation_2
Triangulation_2/demo/Triangulation_2/regular_triangulation_2
-Triangulation_2/examples/Triangulation_2/cgal_test_with_cmake
Triangulation_2/examples/Triangulation_2/regular
Triangulation_2/test/Triangulation_2/Makefile
Triangulation_2/test/Triangulation_2/T??.triangulation
-Triangulation_2/test/Triangulation_2/cgal_test_with_cmake
Triangulation_2/test/Triangulation_2/file_tds*
Triangulation_2/test/Triangulation_2/makefile
Triangulation_2/test/Triangulation_2/test_cdt_degenerate_case
@@ -997,10 +949,8 @@ Triangulation_2/test/Triangulation_2/test_triangulation_2_bis
Triangulation_2/test/Triangulation_2/test_triangulation_geom_traits
Triangulation_2/test/Triangulation_2/test_triangulation_tds
Triangulation_2/test/Triangulation_2/vrml_tds*
-Triangulation_3/benchmark/Triangulation_3/cgal_test_with_cmake
Triangulation_3/benchmark/Triangulation_3/simple
Triangulation_3/examples/Triangulation_3/adding_handles_3
-Triangulation_3/examples/Triangulation_3/cgal_test_with_cmake
Triangulation_3/examples/Triangulation_3/color
Triangulation_3/examples/Triangulation_3/fast_location_3
Triangulation_3/examples/Triangulation_3/find_conflicts_3
@@ -1026,7 +976,6 @@ Triangulation_3/test/Triangulation_3/Test8_triangulation_IO_3_binary
Triangulation_3/test/Triangulation_3/Test??_triangulation_IO_3
Triangulation_3/test/Triangulation_3/Test?_triangulation_IO_3
Triangulation_3/test/Triangulation_3/Test_tds_IO_3
-Triangulation_3/test/Triangulation_3/cgal_test_with_cmake
Triangulation_3/test/Triangulation_3/makefile
Triangulation_3/test/Triangulation_3/test_delaunay_3
Triangulation_3/test/Triangulation_3/test_delaunay_hierarchy_3
@@ -1083,7 +1032,6 @@ ProgramOutput*
ErrorOutput*
CompilerOutput*
error.txt
-cgal_test_with_cmake.log
# File created by the Semantic Bovinator (an Emacs package)
semantic.cache
@@ -1140,9 +1088,7 @@ Doxyfile
gmon.*
# Unsorted file names:
-/Point_set_processing_3/test/Point_set_processing_3/cgal_test_with_cmake
/Point_set_processing_3/test/Point_set_processing_3/read_test
-/Nef_S2/test/Nef_S2/cgal_test_with_cmake
/Arrangement_on_surface_2/test/Arrangement_on_surface_2/construction_test_suite_generator
/Arrangement_on_surface_2/test/Arrangement_on_surface_2/ex_kernel_point
/Arrangement_on_surface_2/test/Arrangement_on_surface_2/ex_kernel_segment
@@ -1190,15 +1136,11 @@ gmon.*
/Principal_component_analysis/examples/Principal_component_analysis/barycenter
/Principal_component_analysis/examples/Principal_component_analysis/bounding_box
/Principal_component_analysis/examples/Principal_component_analysis/centroid
-/Principal_component_analysis/examples/Principal_component_analysis/cgal_test_with_cmake
/Principal_component_analysis/examples/Principal_component_analysis/linear_least_squares_fitting_points_2
/Principal_component_analysis/examples/Principal_component_analysis/linear_least_squares_fitting_triangles_3
-/Polygon/examples/Polygon/cgal_test_with_cmake
-/Polygon/test/Polygon/cgal_test_with_cmake
/Polygon/test/Polygon/polytest.ascii
/Polygon/test/Polygon/polytest.binary
/Polygon/test/Polygon/polytest.pretty
-/Stream_support/test/Stream_support/cgal_test_with_cmake
/*.html
/Snap_rounding_2/test/Snap_rounding_2/data/out
Polygonal_surface_reconstruction/examples/build*
diff --git a/AABB_tree/benchmark/AABB_tree/CMakeLists.txt b/AABB_tree/benchmark/AABB_tree/CMakeLists.txt
index 702558b2a05..bfcbb5454fa 100644
--- a/AABB_tree/benchmark/AABB_tree/CMakeLists.txt
+++ b/AABB_tree/benchmark/AABB_tree/CMakeLists.txt
@@ -1,7 +1,7 @@
# Created by the script cgal_create_cmake_script
# This is the CMake script for compiling a CGAL application.
-cmake_minimum_required(VERSION 3.12...3.29)
+cmake_minimum_required(VERSION 3.12...3.31)
project(AABB_traits_benchmark)
find_package(CGAL REQUIRED OPTIONAL_COMPONENTS Core)
diff --git a/AABB_tree/demo/AABB_tree/CMakeLists.txt b/AABB_tree/demo/AABB_tree/CMakeLists.txt
index eabac21335c..3af9388139f 100644
--- a/AABB_tree/demo/AABB_tree/CMakeLists.txt
+++ b/AABB_tree/demo/AABB_tree/CMakeLists.txt
@@ -1,6 +1,6 @@
# This is the CMake script for compiling the AABB tree demo.
-cmake_minimum_required(VERSION 3.12...3.29)
+cmake_minimum_required(VERSION 3.12...3.31)
project(AABB_tree_Demo)
# Find includes in corresponding build directories
diff --git a/AABB_tree/examples/AABB_tree/CMakeLists.txt b/AABB_tree/examples/AABB_tree/CMakeLists.txt
index 620a79dccdb..ba856721722 100644
--- a/AABB_tree/examples/AABB_tree/CMakeLists.txt
+++ b/AABB_tree/examples/AABB_tree/CMakeLists.txt
@@ -1,7 +1,7 @@
# Created by the script cgal_create_cmake_script
# This is the CMake script for compiling a CGAL application.
-cmake_minimum_required(VERSION 3.12...3.29)
+cmake_minimum_required(VERSION 3.12...3.31)
project(AABB_tree_Examples)
find_package(CGAL REQUIRED)
diff --git a/AABB_tree/test/AABB_tree/CMakeLists.txt b/AABB_tree/test/AABB_tree/CMakeLists.txt
index 72cd7d066a2..1e13ff0ba26 100644
--- a/AABB_tree/test/AABB_tree/CMakeLists.txt
+++ b/AABB_tree/test/AABB_tree/CMakeLists.txt
@@ -1,7 +1,7 @@
# Created by the script cgal_create_cmake_script
# This is the CMake script for compiling a CGAL application.
-cmake_minimum_required(VERSION 3.12...3.29)
+cmake_minimum_required(VERSION 3.12...3.31)
project(AABB_tree_Tests)
find_package(CGAL REQUIRED)
diff --git a/Advancing_front_surface_reconstruction/examples/Advancing_front_surface_reconstruction/CMakeLists.txt b/Advancing_front_surface_reconstruction/examples/Advancing_front_surface_reconstruction/CMakeLists.txt
index 3378a510767..255045d782d 100644
--- a/Advancing_front_surface_reconstruction/examples/Advancing_front_surface_reconstruction/CMakeLists.txt
+++ b/Advancing_front_surface_reconstruction/examples/Advancing_front_surface_reconstruction/CMakeLists.txt
@@ -1,7 +1,7 @@
# Created by the script cgal_create_cmake_script
# This is the CMake script for compiling a CGAL application.
-cmake_minimum_required(VERSION 3.12...3.29)
+cmake_minimum_required(VERSION 3.12...3.31)
project(Advancing_front_surface_reconstruction_Examples)
find_package(CGAL REQUIRED)
diff --git a/Advancing_front_surface_reconstruction/test/Advancing_front_surface_reconstruction/CMakeLists.txt b/Advancing_front_surface_reconstruction/test/Advancing_front_surface_reconstruction/CMakeLists.txt
index 27973a058d8..23e1dd2529b 100644
--- a/Advancing_front_surface_reconstruction/test/Advancing_front_surface_reconstruction/CMakeLists.txt
+++ b/Advancing_front_surface_reconstruction/test/Advancing_front_surface_reconstruction/CMakeLists.txt
@@ -1,7 +1,7 @@
# Created by the script cgal_create_cmake_script
# This is the CMake script for compiling a CGAL application.
-cmake_minimum_required(VERSION 3.12...3.29)
+cmake_minimum_required(VERSION 3.12...3.31)
project(Advancing_front_surface_reconstruction_Tests)
find_package(CGAL REQUIRED)
diff --git a/Algebraic_foundations/examples/Algebraic_foundations/CMakeLists.txt b/Algebraic_foundations/examples/Algebraic_foundations/CMakeLists.txt
index 186e8a01b2e..7150fdadd62 100644
--- a/Algebraic_foundations/examples/Algebraic_foundations/CMakeLists.txt
+++ b/Algebraic_foundations/examples/Algebraic_foundations/CMakeLists.txt
@@ -1,7 +1,7 @@
# Created by the script cgal_create_cmake_script
# This is the CMake script for compiling a CGAL application.
-cmake_minimum_required(VERSION 3.12...3.29)
+cmake_minimum_required(VERSION 3.12...3.31)
project(Algebraic_foundations_Examples)
find_package(CGAL REQUIRED)
diff --git a/Algebraic_foundations/test/Algebraic_foundations/CMakeLists.txt b/Algebraic_foundations/test/Algebraic_foundations/CMakeLists.txt
index 467fdca406f..170d443ae71 100644
--- a/Algebraic_foundations/test/Algebraic_foundations/CMakeLists.txt
+++ b/Algebraic_foundations/test/Algebraic_foundations/CMakeLists.txt
@@ -1,7 +1,7 @@
# Created by the script cgal_create_cmake_script
# This is the CMake script for compiling a CGAL application.
-cmake_minimum_required(VERSION 3.12...3.29)
+cmake_minimum_required(VERSION 3.12...3.31)
project(Algebraic_foundations_Tests)
find_package(CGAL REQUIRED COMPONENTS Core)
diff --git a/Algebraic_kernel_d/examples/Algebraic_kernel_d/CMakeLists.txt b/Algebraic_kernel_d/examples/Algebraic_kernel_d/CMakeLists.txt
index f93c12d0950..a06ae073399 100644
--- a/Algebraic_kernel_d/examples/Algebraic_kernel_d/CMakeLists.txt
+++ b/Algebraic_kernel_d/examples/Algebraic_kernel_d/CMakeLists.txt
@@ -1,4 +1,4 @@
-cmake_minimum_required(VERSION 3.12...3.29)
+cmake_minimum_required(VERSION 3.12...3.31)
project(Algebraic_kernel_d_Examples)
find_package(CGAL REQUIRED COMPONENTS Core)
diff --git a/Algebraic_kernel_d/test/Algebraic_kernel_d/CMakeLists.txt b/Algebraic_kernel_d/test/Algebraic_kernel_d/CMakeLists.txt
index 1e6570dd393..0f0d16a3c9c 100644
--- a/Algebraic_kernel_d/test/Algebraic_kernel_d/CMakeLists.txt
+++ b/Algebraic_kernel_d/test/Algebraic_kernel_d/CMakeLists.txt
@@ -1,4 +1,4 @@
-cmake_minimum_required(VERSION 3.12...3.29)
+cmake_minimum_required(VERSION 3.12...3.31)
project(Algebraic_kernel_d_Tests)
# CGAL and its components
diff --git a/Algebraic_kernel_for_circles/test/Algebraic_kernel_for_circles/CMakeLists.txt b/Algebraic_kernel_for_circles/test/Algebraic_kernel_for_circles/CMakeLists.txt
index 424bd86fd28..f957c0e835c 100644
--- a/Algebraic_kernel_for_circles/test/Algebraic_kernel_for_circles/CMakeLists.txt
+++ b/Algebraic_kernel_for_circles/test/Algebraic_kernel_for_circles/CMakeLists.txt
@@ -1,7 +1,7 @@
# Created by the script cgal_create_cmake_script
# This is the CMake script for compiling a CGAL application.
-cmake_minimum_required(VERSION 3.12...3.29)
+cmake_minimum_required(VERSION 3.12...3.31)
project(Algebraic_kernel_for_circles_Tests)
find_package(CGAL REQUIRED)
diff --git a/Algebraic_kernel_for_spheres/test/Algebraic_kernel_for_spheres/CMakeLists.txt b/Algebraic_kernel_for_spheres/test/Algebraic_kernel_for_spheres/CMakeLists.txt
index 637387543f2..0167d0c1d98 100644
--- a/Algebraic_kernel_for_spheres/test/Algebraic_kernel_for_spheres/CMakeLists.txt
+++ b/Algebraic_kernel_for_spheres/test/Algebraic_kernel_for_spheres/CMakeLists.txt
@@ -1,7 +1,7 @@
# Created by the script cgal_create_cmake_script
# This is the CMake script for compiling a CGAL application.
-cmake_minimum_required(VERSION 3.12...3.29)
+cmake_minimum_required(VERSION 3.12...3.31)
project(Algebraic_kernel_for_spheres_Tests)
find_package(CGAL REQUIRED)
diff --git a/Alpha_shapes_2/examples/Alpha_shapes_2/CMakeLists.txt b/Alpha_shapes_2/examples/Alpha_shapes_2/CMakeLists.txt
index 493cacad635..35daf075ee4 100644
--- a/Alpha_shapes_2/examples/Alpha_shapes_2/CMakeLists.txt
+++ b/Alpha_shapes_2/examples/Alpha_shapes_2/CMakeLists.txt
@@ -1,7 +1,7 @@
# Created by the script cgal_create_cmake_script
# This is the CMake script for compiling a CGAL application.
-cmake_minimum_required(VERSION 3.12...3.29)
+cmake_minimum_required(VERSION 3.12...3.31)
project(Alpha_shapes_2_Examples)
find_package(CGAL REQUIRED)
diff --git a/Alpha_shapes_2/test/Alpha_shapes_2/CMakeLists.txt b/Alpha_shapes_2/test/Alpha_shapes_2/CMakeLists.txt
index a4b13149993..94a0b7a934b 100644
--- a/Alpha_shapes_2/test/Alpha_shapes_2/CMakeLists.txt
+++ b/Alpha_shapes_2/test/Alpha_shapes_2/CMakeLists.txt
@@ -1,7 +1,7 @@
# Created by the script cgal_create_cmake_script
# This is the CMake script for compiling a CGAL application.
-cmake_minimum_required(VERSION 3.12...3.29)
+cmake_minimum_required(VERSION 3.12...3.31)
project(Alpha_shapes_2_Tests)
find_package(CGAL REQUIRED)
diff --git a/Alpha_shapes_3/demo/Alpha_shapes_3/CMakeLists.txt b/Alpha_shapes_3/demo/Alpha_shapes_3/CMakeLists.txt
index 1028c6f4ea4..097684b274e 100644
--- a/Alpha_shapes_3/demo/Alpha_shapes_3/CMakeLists.txt
+++ b/Alpha_shapes_3/demo/Alpha_shapes_3/CMakeLists.txt
@@ -1,7 +1,7 @@
# Created by the script cgal_create_cmake_script
# This is the CMake script for compiling a CGAL application.
-cmake_minimum_required(VERSION 3.12...3.29)
+cmake_minimum_required(VERSION 3.12...3.31)
project(Alpha_shapes_3_Demo)
# Find includes in corresponding build directories
diff --git a/Alpha_shapes_3/examples/Alpha_shapes_3/CMakeLists.txt b/Alpha_shapes_3/examples/Alpha_shapes_3/CMakeLists.txt
index 04f6565859d..892c164faa2 100644
--- a/Alpha_shapes_3/examples/Alpha_shapes_3/CMakeLists.txt
+++ b/Alpha_shapes_3/examples/Alpha_shapes_3/CMakeLists.txt
@@ -1,7 +1,7 @@
# Created by the script cgal_create_cmake_script
# This is the CMake script for compiling a CGAL application.
-cmake_minimum_required(VERSION 3.12...3.29)
+cmake_minimum_required(VERSION 3.12...3.31)
project(Alpha_shapes_3_Examples)
find_package(CGAL REQUIRED)
diff --git a/Alpha_shapes_3/test/Alpha_shapes_3/CMakeLists.txt b/Alpha_shapes_3/test/Alpha_shapes_3/CMakeLists.txt
index e4aca061940..fe6da11668c 100644
--- a/Alpha_shapes_3/test/Alpha_shapes_3/CMakeLists.txt
+++ b/Alpha_shapes_3/test/Alpha_shapes_3/CMakeLists.txt
@@ -1,7 +1,7 @@
# Created by the script cgal_create_cmake_script
# This is the CMake script for compiling a CGAL application.
-cmake_minimum_required(VERSION 3.12...3.29)
+cmake_minimum_required(VERSION 3.12...3.31)
project(Alpha_shapes_3_Tests)
find_package(CGAL REQUIRED)
diff --git a/Alpha_wrap_3/benchmark/Alpha_wrap_3/CMakeLists.txt b/Alpha_wrap_3/benchmark/Alpha_wrap_3/CMakeLists.txt
index 23150027c4f..c118956dcbf 100644
--- a/Alpha_wrap_3/benchmark/Alpha_wrap_3/CMakeLists.txt
+++ b/Alpha_wrap_3/benchmark/Alpha_wrap_3/CMakeLists.txt
@@ -1,7 +1,7 @@
# Created by the script cgal_create_cmake_script
# This is the CMake script for compiling a CGAL application.
-cmake_minimum_required(VERSION 3.12...3.29)
+cmake_minimum_required(VERSION 3.12...3.31)
project(Alpha_wrap_3_Benchmark)
find_package(CGAL REQUIRED)
diff --git a/Alpha_wrap_3/examples/Alpha_wrap_3/CMakeLists.txt b/Alpha_wrap_3/examples/Alpha_wrap_3/CMakeLists.txt
index 8a1c8d1b9fe..ed779a17df5 100644
--- a/Alpha_wrap_3/examples/Alpha_wrap_3/CMakeLists.txt
+++ b/Alpha_wrap_3/examples/Alpha_wrap_3/CMakeLists.txt
@@ -1,7 +1,7 @@
# Created by the script cgal_create_cmake_script
# This is the CMake script for compiling a CGAL application.
-cmake_minimum_required(VERSION 3.12...3.29)
+cmake_minimum_required(VERSION 3.12...3.31)
project(Alpha_wrap_3_Examples)
find_package(CGAL REQUIRED)
diff --git a/Alpha_wrap_3/test/Alpha_wrap_3/CMakeLists.txt b/Alpha_wrap_3/test/Alpha_wrap_3/CMakeLists.txt
index d719fae8a63..4281c1efcda 100644
--- a/Alpha_wrap_3/test/Alpha_wrap_3/CMakeLists.txt
+++ b/Alpha_wrap_3/test/Alpha_wrap_3/CMakeLists.txt
@@ -1,7 +1,7 @@
# Created by the script cgal_create_cmake_script
# This is the CMake script for compiling a CGAL application.
-cmake_minimum_required(VERSION 3.12...3.29)
+cmake_minimum_required(VERSION 3.12...3.31)
project(Alpha_wrap_3_Tests)
find_package(CGAL REQUIRED)
diff --git a/Apollonius_graph_2/examples/Apollonius_graph_2/CMakeLists.txt b/Apollonius_graph_2/examples/Apollonius_graph_2/CMakeLists.txt
index 8b4217331c6..758309e7dc0 100644
--- a/Apollonius_graph_2/examples/Apollonius_graph_2/CMakeLists.txt
+++ b/Apollonius_graph_2/examples/Apollonius_graph_2/CMakeLists.txt
@@ -1,7 +1,7 @@
# Created by the script cgal_create_cmake_script
# This is the CMake script for compiling a CGAL application.
-cmake_minimum_required(VERSION 3.12...3.29)
+cmake_minimum_required(VERSION 3.12...3.31)
project(Apollonius_graph_2_Examples)
find_package(CGAL REQUIRED COMPONENTS Core)
diff --git a/Apollonius_graph_2/test/Apollonius_graph_2/CMakeLists.txt b/Apollonius_graph_2/test/Apollonius_graph_2/CMakeLists.txt
index c9d061984c7..51ea8576fa6 100644
--- a/Apollonius_graph_2/test/Apollonius_graph_2/CMakeLists.txt
+++ b/Apollonius_graph_2/test/Apollonius_graph_2/CMakeLists.txt
@@ -1,7 +1,7 @@
# Created by the script cgal_create_cmake_script
# This is the CMake script for compiling a CGAL application.
-cmake_minimum_required(VERSION 3.12...3.29)
+cmake_minimum_required(VERSION 3.12...3.31)
project(Apollonius_graph_2_Tests)
find_package(CGAL REQUIRED)
diff --git a/Arithmetic_kernel/test/Arithmetic_kernel/CMakeLists.txt b/Arithmetic_kernel/test/Arithmetic_kernel/CMakeLists.txt
index 2b62b5b12c9..a2df1177140 100644
--- a/Arithmetic_kernel/test/Arithmetic_kernel/CMakeLists.txt
+++ b/Arithmetic_kernel/test/Arithmetic_kernel/CMakeLists.txt
@@ -1,7 +1,7 @@
# Created by the script cgal_create_cmake_script
# This is the CMake script for compiling a CGAL application.
-cmake_minimum_required(VERSION 3.12...3.29)
+cmake_minimum_required(VERSION 3.12...3.31)
project(Arithmetic_kernel_Tests)
find_package(CGAL REQUIRED COMPONENTS Core)
diff --git a/Arrangement_on_surface_2/demo/Arrangement_on_surface_2/CMakeLists.txt b/Arrangement_on_surface_2/demo/Arrangement_on_surface_2/CMakeLists.txt
index 990e8d5092e..5e94ede8117 100644
--- a/Arrangement_on_surface_2/demo/Arrangement_on_surface_2/CMakeLists.txt
+++ b/Arrangement_on_surface_2/demo/Arrangement_on_surface_2/CMakeLists.txt
@@ -1,6 +1,6 @@
# This is the CMake script for compiling a CGAL application.
-cmake_minimum_required(VERSION 3.12...3.29)
+cmake_minimum_required(VERSION 3.12...3.31)
project(Arrangement_on_surface_2_Demo)
if(NOT POLICY CMP0070 AND POLICY CMP0053)
diff --git a/Arrangement_on_surface_2/demo/Arrangement_on_surface_2_earth/CMakeLists.txt b/Arrangement_on_surface_2/demo/Arrangement_on_surface_2_earth/CMakeLists.txt
index fa18ff35df6..332c3deada6 100644
--- a/Arrangement_on_surface_2/demo/Arrangement_on_surface_2_earth/CMakeLists.txt
+++ b/Arrangement_on_surface_2/demo/Arrangement_on_surface_2_earth/CMakeLists.txt
@@ -1,6 +1,6 @@
# This is the CMake script for compiling a CGAL application.
-cmake_minimum_required(VERSION 3.12...3.29)
+cmake_minimum_required(VERSION 3.12...3.31)
project(Arrangement_on_surface_2_earth_Demo)
if(NOT POLICY CMP0070 AND POLICY CMP0053)
diff --git a/Arrangement_on_surface_2/doc/Arrangement_on_surface_2/Arrangement_on_surface_2.txt b/Arrangement_on_surface_2/doc/Arrangement_on_surface_2/Arrangement_on_surface_2.txt
index ba6f1adb152..64d3604362f 100644
--- a/Arrangement_on_surface_2/doc/Arrangement_on_surface_2/Arrangement_on_surface_2.txt
+++ b/Arrangement_on_surface_2/doc/Arrangement_on_surface_2/Arrangement_on_surface_2.txt
@@ -1438,14 +1438,15 @@ vary according to the user choice.} for answering queries:
points or choosing points on a grid, are also available; see the
Reference Manual for more details.
- The landmark strategy requires that the type of the attached
- arrangement be an instance of the `Arrangement_2` class
- template, where the `Traits` parameter is substituted by a
- geometry-traits class that models the `ArrangementLandmarkTraits_2`
- concept, which refines the basic `ArrangementBasicTraits_2` concept;
- see Section \ref aos_sssec-tr_landmarks_concept for details. Most
- traits classes included in the \ref PkgArrangementOnSurface2 package
- are models of this refined concept.
+ The arrangement attached to the landmark strategy must be either (i)
+ an instance of the `Arrangement_2` class template, where
+ the `Traits` parameter is substituted by a geometry-traits class
+ that models the `ArrangementLandmarkTraits_2` concept, or (ii) an
+ instance of the `Arrangement_on_surface_2`
+ class template, where the `GeomTraits` is similarly substituted;
+ see Section \ref aos_sssec-tr_landmarks_concept for details about
+ this concept. Most traits classes included in the \ref
+ PkgArrangementOnSurface2 package are models of this refined concept.
`Arr_trapezoid_ric_point_location` implements an
improved variant of Mulmuley's point-location algorithm
diff --git a/Arrangement_on_surface_2/doc/Arrangement_on_surface_2/CGAL/Arr_conic_traits_2.h b/Arrangement_on_surface_2/doc/Arrangement_on_surface_2/CGAL/Arr_conic_traits_2.h
index 8d8cc6785d4..a68feead26c 100644
--- a/Arrangement_on_surface_2/doc/Arrangement_on_surface_2/CGAL/Arr_conic_traits_2.h
+++ b/Arrangement_on_surface_2/doc/Arrangement_on_surface_2/CGAL/Arr_conic_traits_2.h
@@ -440,13 +440,14 @@ public:
Bbox_2 operator()(const X_monotone_curve_2& xcv) const { return bbox(xcv); }
};
- /*! \name Auxiliary Functor definitions, used gor, e.g., the landmarks
+ /*! \name Auxiliary Functor definitions, used gor, e.g., the landmarks \
* point-location strategy and the drawing function.
*/
//@{
typedef double Approximate_number_type;
typedef CGAL::Cartesian Approximate_kernel;
typedef Approximate_kernel::Point_2 Approximate_point_2;
+ //@}
/*! \class Approximate_2
* A functor that approximates a point and an \f$x\f$-monotone curve.
diff --git a/Arrangement_on_surface_2/doc/Arrangement_on_surface_2/CGAL/Arr_segment_traits_2.h b/Arrangement_on_surface_2/doc/Arrangement_on_surface_2/CGAL/Arr_segment_traits_2.h
index 37a7a6c29bd..1db9da8bc82 100644
--- a/Arrangement_on_surface_2/doc/Arrangement_on_surface_2/CGAL/Arr_segment_traits_2.h
+++ b/Arrangement_on_surface_2/doc/Arrangement_on_surface_2/CGAL/Arr_segment_traits_2.h
@@ -121,6 +121,7 @@ public:
X_monotone_curve_2(const X_monotone_curve_2& xcv,
const Point_2& src, const Point_2& tgt) const;
+ //! @}
} /* end Arr_segment_traits_2::Trim_2 */
}; /* end Arr_segment_traits_2 */
diff --git a/Arrangement_on_surface_2/doc/Arrangement_on_surface_2/Concepts/ArrangementBottomSideTraits_2.h b/Arrangement_on_surface_2/doc/Arrangement_on_surface_2/Concepts/ArrangementBottomSideTraits_2.h
index a29b1d33531..8d2682583b8 100644
--- a/Arrangement_on_surface_2/doc/Arrangement_on_surface_2/Concepts/ArrangementBottomSideTraits_2.h
+++ b/Arrangement_on_surface_2/doc/Arrangement_on_surface_2/Concepts/ArrangementBottomSideTraits_2.h
@@ -29,6 +29,7 @@ public:
/// \name Functor Types
/// @{
+ /// @}
/// \name Accessing Functor Objects
/// @{
diff --git a/Arrangement_on_surface_2/doc/Arrangement_on_surface_2/Concepts/ArrangementContractedBottomTraits_2.h b/Arrangement_on_surface_2/doc/Arrangement_on_surface_2/Concepts/ArrangementContractedBottomTraits_2.h
index 09de38a67c5..48563de6d81 100644
--- a/Arrangement_on_surface_2/doc/Arrangement_on_surface_2/Concepts/ArrangementContractedBottomTraits_2.h
+++ b/Arrangement_on_surface_2/doc/Arrangement_on_surface_2/Concepts/ArrangementContractedBottomTraits_2.h
@@ -33,6 +33,7 @@ public:
/// \name Functor Types
/// @{
+ /// @}
/// \name Accessing Functor Objects
/// @{
diff --git a/Arrangement_on_surface_2/doc/Arrangement_on_surface_2/Concepts/ArrangementContractedLeftTraits_2.h b/Arrangement_on_surface_2/doc/Arrangement_on_surface_2/Concepts/ArrangementContractedLeftTraits_2.h
index 9a06f1e409c..de1940c372b 100644
--- a/Arrangement_on_surface_2/doc/Arrangement_on_surface_2/Concepts/ArrangementContractedLeftTraits_2.h
+++ b/Arrangement_on_surface_2/doc/Arrangement_on_surface_2/Concepts/ArrangementContractedLeftTraits_2.h
@@ -33,6 +33,7 @@ public:
/// \name Functor Types
/// @{
+ /// @}
/// \name Accessing Functor Objects
/// @{
diff --git a/Arrangement_on_surface_2/doc/Arrangement_on_surface_2/Concepts/ArrangementContractedRightTraits_2.h b/Arrangement_on_surface_2/doc/Arrangement_on_surface_2/Concepts/ArrangementContractedRightTraits_2.h
index 3f93d80deb2..a36bca2691e 100644
--- a/Arrangement_on_surface_2/doc/Arrangement_on_surface_2/Concepts/ArrangementContractedRightTraits_2.h
+++ b/Arrangement_on_surface_2/doc/Arrangement_on_surface_2/Concepts/ArrangementContractedRightTraits_2.h
@@ -33,6 +33,7 @@ public:
/// \name Functor Types
/// @{
+ /// @}
/// \name Accessing Functor Objects
/// @{
diff --git a/Arrangement_on_surface_2/doc/Arrangement_on_surface_2/Concepts/ArrangementContractedTopTraits_2.h b/Arrangement_on_surface_2/doc/Arrangement_on_surface_2/Concepts/ArrangementContractedTopTraits_2.h
index be39ea2b6b1..d4a2d352af4 100644
--- a/Arrangement_on_surface_2/doc/Arrangement_on_surface_2/Concepts/ArrangementContractedTopTraits_2.h
+++ b/Arrangement_on_surface_2/doc/Arrangement_on_surface_2/Concepts/ArrangementContractedTopTraits_2.h
@@ -33,6 +33,7 @@ public:
/// \name Functor Types
/// @{
+ /// @}
/// \name Accessing Functor Objects
/// @{
diff --git a/Arrangement_on_surface_2/doc/Arrangement_on_surface_2/Concepts/ArrangementLeftSideTraits_2.h b/Arrangement_on_surface_2/doc/Arrangement_on_surface_2/Concepts/ArrangementLeftSideTraits_2.h
index 3b01d80db4f..6f2d1343a85 100644
--- a/Arrangement_on_surface_2/doc/Arrangement_on_surface_2/Concepts/ArrangementLeftSideTraits_2.h
+++ b/Arrangement_on_surface_2/doc/Arrangement_on_surface_2/Concepts/ArrangementLeftSideTraits_2.h
@@ -29,6 +29,7 @@ public:
/// \name Functor Types
/// @{
+ /// @}
/// \name Accessing Functor Objects
/// @{
diff --git a/Arrangement_on_surface_2/doc/Arrangement_on_surface_2/Concepts/ArrangementOpenBottomTraits_2.h b/Arrangement_on_surface_2/doc/Arrangement_on_surface_2/Concepts/ArrangementOpenBottomTraits_2.h
index c53f51ef056..2298e679738 100644
--- a/Arrangement_on_surface_2/doc/Arrangement_on_surface_2/Concepts/ArrangementOpenBottomTraits_2.h
+++ b/Arrangement_on_surface_2/doc/Arrangement_on_surface_2/Concepts/ArrangementOpenBottomTraits_2.h
@@ -33,6 +33,7 @@ public:
/// \name Functor Types
/// @{
+ /// @}
/// \name Accessing Functor Objects
/// @{
diff --git a/Arrangement_on_surface_2/doc/Arrangement_on_surface_2/Concepts/ArrangementOpenLeftTraits_2.h b/Arrangement_on_surface_2/doc/Arrangement_on_surface_2/Concepts/ArrangementOpenLeftTraits_2.h
index f1b7d62ca68..b4f1b8d2ee3 100644
--- a/Arrangement_on_surface_2/doc/Arrangement_on_surface_2/Concepts/ArrangementOpenLeftTraits_2.h
+++ b/Arrangement_on_surface_2/doc/Arrangement_on_surface_2/Concepts/ArrangementOpenLeftTraits_2.h
@@ -33,6 +33,7 @@ public:
/// \name Functor Types
/// @{
+ /// @}
/// \name Accessing Functor Objects
/// @{
diff --git a/Arrangement_on_surface_2/doc/Arrangement_on_surface_2/Concepts/ArrangementOpenRightTraits_2.h b/Arrangement_on_surface_2/doc/Arrangement_on_surface_2/Concepts/ArrangementOpenRightTraits_2.h
index fa8468d49dc..a5683bc1aff 100644
--- a/Arrangement_on_surface_2/doc/Arrangement_on_surface_2/Concepts/ArrangementOpenRightTraits_2.h
+++ b/Arrangement_on_surface_2/doc/Arrangement_on_surface_2/Concepts/ArrangementOpenRightTraits_2.h
@@ -33,6 +33,7 @@ public:
/// \name Functor Types
/// @{
+ /// @}
/// \name Accessing Functor Objects
/// @{
diff --git a/Arrangement_on_surface_2/doc/Arrangement_on_surface_2/Concepts/ArrangementOpenTopTraits_2.h b/Arrangement_on_surface_2/doc/Arrangement_on_surface_2/Concepts/ArrangementOpenTopTraits_2.h
index 455bef4d160..ad852c41ed3 100644
--- a/Arrangement_on_surface_2/doc/Arrangement_on_surface_2/Concepts/ArrangementOpenTopTraits_2.h
+++ b/Arrangement_on_surface_2/doc/Arrangement_on_surface_2/Concepts/ArrangementOpenTopTraits_2.h
@@ -33,6 +33,7 @@ public:
/// \name Functor Types
/// @{
+ /// @}
/// \name Accessing Functor Objects
/// @{
diff --git a/Arrangement_on_surface_2/doc/Arrangement_on_surface_2/Concepts/ArrangementRightSideTraits_2.h b/Arrangement_on_surface_2/doc/Arrangement_on_surface_2/Concepts/ArrangementRightSideTraits_2.h
index 689d2b7af2d..ed6d2be0c4d 100644
--- a/Arrangement_on_surface_2/doc/Arrangement_on_surface_2/Concepts/ArrangementRightSideTraits_2.h
+++ b/Arrangement_on_surface_2/doc/Arrangement_on_surface_2/Concepts/ArrangementRightSideTraits_2.h
@@ -29,6 +29,7 @@ public:
/// \name Functor Types
/// @{
+ /// @}
/// \name Accessing Functor Objects
/// @{
diff --git a/Arrangement_on_surface_2/doc/Arrangement_on_surface_2/Concepts/ArrangementTopSideTraits_2.h b/Arrangement_on_surface_2/doc/Arrangement_on_surface_2/Concepts/ArrangementTopSideTraits_2.h
index 94614dfc81a..e579a7df9ef 100644
--- a/Arrangement_on_surface_2/doc/Arrangement_on_surface_2/Concepts/ArrangementTopSideTraits_2.h
+++ b/Arrangement_on_surface_2/doc/Arrangement_on_surface_2/Concepts/ArrangementTopSideTraits_2.h
@@ -29,6 +29,7 @@ public:
/// \name Functor Types
/// @{
+ /// @}
/// \name Accessing Functor Objects
/// @{
diff --git a/Arrangement_on_surface_2/examples/Arrangement_on_surface_2/CMakeLists.txt b/Arrangement_on_surface_2/examples/Arrangement_on_surface_2/CMakeLists.txt
index 2784310f4ed..bb5566835ab 100644
--- a/Arrangement_on_surface_2/examples/Arrangement_on_surface_2/CMakeLists.txt
+++ b/Arrangement_on_surface_2/examples/Arrangement_on_surface_2/CMakeLists.txt
@@ -1,7 +1,7 @@
# Created by the script cgal_create_cmake_script
# This is the CMake script for compiling a CGAL application.
-cmake_minimum_required(VERSION 3.12...3.29)
+cmake_minimum_required(VERSION 3.12...3.31)
project(Arrangement_on_surface_2_Examples)
find_package(CGAL REQUIRED COMPONENTS Core OPTIONAL_COMPONENTS Qt6)
diff --git a/Arrangement_on_surface_2/examples/Arrangement_on_surface_2/sgm_point_location.cpp b/Arrangement_on_surface_2/examples/Arrangement_on_surface_2/sgm_point_location.cpp
index 565f903cddc..8d53c465581 100644
--- a/Arrangement_on_surface_2/examples/Arrangement_on_surface_2/sgm_point_location.cpp
+++ b/Arrangement_on_surface_2/examples/Arrangement_on_surface_2/sgm_point_location.cpp
@@ -36,13 +36,6 @@ using Trap_pl = CGAL::Arr_trapezoid_ric_point_location;
using Geom_traits = Gm::Geometry_traits_2;
using Point_2 = Geom_traits::Point_2;
-using Point_location_result = CGAL::Arr_point_location_result;
-using Query_result = std::pair;
-
-using Vertex_const_handle = Gm::Vertex_const_handle;
-using Halfedge_const_handle = Gm::Halfedge_const_handle;
-using Face_const_handle = Gm::Face_const_handle;
-
int main() {
Gm_polyhedron p;
p.make_tetrahedron(Point_3(1.0, 0.0, 0.0), Point_3(0.0, 1.0, 0.0),
@@ -50,7 +43,7 @@ int main() {
Gm gm;
Naive_pl naive_pl(gm);
- // Landmarks_pl landmarks_pl(gm);
+ Landmarks_pl landmarks_pl(gm);
Walk_pl walk_pl(gm);
// Trap_pl trap_pl(gm);
@@ -70,30 +63,17 @@ int main() {
locate_point(naive_pl, points[1]);
locate_point(naive_pl, points[2]);
+ // locate_point(walk_pl, points[0]);
+ // locate_point(walk_pl, points[1]);
+ // locate_point(walk_pl, points[2]);
+
+ locate_point(landmarks_pl, points[0]);
+ locate_point(landmarks_pl, points[1]);
+ locate_point(landmarks_pl, points[2]);
+
// locate_point(trap_pl, points[0]);
-
- ////////
- std::list results;
- // The following cause an assertion failure.
- // CGAL::locate(gm, &points[0], &points[3], std::back_inserter(results));
-
- // Print the results.
- for (auto it = results.begin(); it != results.end(); ++it) {
- std::cout << "The point (" << it->first << ") is located ";
- if (const Face_const_handle* f =
- std::get_if(&(it->second))) // inside a face
- std::cout << "inside "
- << (((*f)->is_unbounded()) ? "the unbounded" : "a bounded")
- << " face.\n";
- else if (const Halfedge_const_handle* e =
- std::get_if(&(it->second))) // on an edge
- std::cout << "on an edge: " << (*e)->curve() << std::endl;
- else if (const Vertex_const_handle* v =
- std::get_if(&(it->second))) // on a vertex
- std::cout << "on "
- << (((*v)->is_isolated()) ? "an isolated" : "a")
- << " vertex: " << (*v)->point() << std::endl;
- }
+ // locate_point(trap_pl, points[1]);
+ // locate_point(trap_pl, points[2]);
return 0;
}
diff --git a/Arrangement_on_surface_2/include/CGAL/Arr_conic_traits_2.h b/Arrangement_on_surface_2/include/CGAL/Arr_conic_traits_2.h
index cff7c59d379..0f63b3c41fa 100644
--- a/Arrangement_on_surface_2/include/CGAL/Arr_conic_traits_2.h
+++ b/Arrangement_on_surface_2/include/CGAL/Arr_conic_traits_2.h
@@ -1515,7 +1515,7 @@ public:
//@}
- /*! \name Auxiliary Functor definitions, used gor, e.g., the landmarks
+ /*! \name Auxiliary Functor definitions, used gor, e.g., the landmarks \
* point-location strategy and the drawing function.
*/
//@{
diff --git a/Arrangement_on_surface_2/include/CGAL/Arr_landmarks_point_location.h b/Arrangement_on_surface_2/include/CGAL/Arr_landmarks_point_location.h
index 9cfcd680aea..8db96653d1b 100644
--- a/Arrangement_on_surface_2/include/CGAL/Arr_landmarks_point_location.h
+++ b/Arrangement_on_surface_2/include/CGAL/Arr_landmarks_point_location.h
@@ -8,8 +8,8 @@
// SPDX-License-Identifier: GPL-3.0-or-later OR LicenseRef-Commercial
//
//
-// Author(s) : Idit Haran
-// Ron Wein
+// Author(s) : Idit Haran
+// Ron Wein
#ifndef CGAL_ARR_LANDMARKS_POINT_LOCATION_H
#define CGAL_ARR_LANDMARKS_POINT_LOCATION_H
@@ -27,6 +27,7 @@
#include
#include
#include
+#include
#include
@@ -42,44 +43,54 @@ namespace CGAL {
* Generator is a class that generates the set of landmarks.
*/
-template >
-class Arr_landmarks_point_location
-{
+template >
+class Arr_landmarks_point_location {
public:
- typedef Arrangement_ Arrangement_2;
- typedef typename Arrangement_2::Geometry_traits_2 Geometry_traits_2;
- typedef Generator_ Generator;
+ using Arrangement_2 = Arrangement_;
+ using Generator = Generator_;
+ using Geometry_traits_2 = typename Arrangement_2::Geometry_traits_2;
- typedef typename Arrangement_2::Vertex_const_handle Vertex_const_handle;
- typedef typename Arrangement_2::Halfedge_const_handle Halfedge_const_handle;
- typedef typename Arrangement_2::Face_const_handle Face_const_handle;
+ using Vertex_const_handle = typename Arrangement_2::Vertex_const_handle;
+ using Halfedge_const_handle = typename Arrangement_2::Halfedge_const_handle;
+ using Face_const_handle = typename Arrangement_2::Face_const_handle;
- typedef typename Arrangement_2::Vertex_const_iterator Vertex_const_iterator;
- typedef typename Arrangement_2::Halfedge_const_iterator
- Halfedge_const_iterator;
- typedef typename Arrangement_2::Halfedge_around_vertex_const_circulator
- Halfedge_around_vertex_const_circulator;
- typedef typename Arrangement_2::Ccb_halfedge_const_circulator
- Ccb_halfedge_const_circulator;
- typedef typename Arrangement_2::Outer_ccb_const_iterator
- Outer_ccb_const_iterator;
- typedef typename Arrangement_2::Inner_ccb_const_iterator
- Inner_ccb_const_iterator;
- typedef typename Arrangement_2::Isolated_vertex_const_iterator
- Isolated_vertex_const_iterator;
+ using Vertex_const_iterator = typename Arrangement_2::Vertex_const_iterator;
+ using Halfedge_const_iterator =
+ typename Arrangement_2::Halfedge_const_iterator;
- typedef typename Arrangement_2::Point_2 Point_2;
- typedef typename Arrangement_2::X_monotone_curve_2 X_monotone_curve_2;
+ using Halfedge_around_vertex_const_circulator =
+ typename Arrangement_2::Halfedge_around_vertex_const_circulator;
+ using Ccb_halfedge_const_circulator =
+ typename Arrangement_2::Ccb_halfedge_const_circulator;
+ using Outer_ccb_const_iterator =
+ typename Arrangement_2::Outer_ccb_const_iterator;
+ using Inner_ccb_const_iterator =
+ typename Arrangement_2::Inner_ccb_const_iterator;
+ using Isolated_vertex_const_iterator =
+ typename Arrangement_2::Isolated_vertex_const_iterator;
- typedef Arr_point_location_result Result;
- typedef typename Result::Type Result_type;
+ using Point_2 = typename Arrangement_2::Point_2;
+ using X_monotone_curve_2 = typename Arrangement_2::X_monotone_curve_2;
+
+ using Result = Arr_point_location_result;
+ using Result_type = typename Result::Type;
// Support cpp11::result_of
- typedef Result_type result_type;
+ using result_type = Result_type;
+
+private:
+ using Gt2 = Geometry_traits_2;
+ using Left_side_category =
+ typename internal::Arr_complete_left_side_category::Category;
+ using Right_side_category =
+ typename internal::Arr_complete_right_side_category::Category;
+ using Left_or_right_sides_category =
+ typename Arr_two_sides_category::result;
protected:
- typedef Arr_traits_basic_adaptor_2 Traits_adaptor_2;
+ using Traits_adaptor_2 = Arr_traits_basic_adaptor_2;
/*! \struct Less_halfedge_handle
* Used to sort handles.
@@ -92,10 +103,10 @@ protected:
typedef std::set Halfedge_set;
// Data members:
- const Arrangement_2* p_arr; // The associated arrangement.
+ const Arrangement_2* p_arr; // The associated arrangement.
const Traits_adaptor_2* m_traits; // Its associated traits object.
- Generator* lm_gen; // The associated landmark generator.
- bool own_gen; // Indicates whether the generator
+ Generator* lm_gen; // The associated landmark generator.
+ bool own_gen; // Indicates whether the generator
// has been locally allocated.
template
@@ -103,7 +114,7 @@ protected:
inline Result_type default_result() const { return Result::default_result(); }
public:
- /*! Default constructor. */
+ /*! constructs default. */
Arr_landmarks_point_location() :
p_arr(nullptr),
m_traits(nullptr),
@@ -111,34 +122,32 @@ public:
own_gen(false)
{}
- /*! Constructor given an arrangement only. */
+ /*! constructs given an arrangement only. */
Arr_landmarks_point_location(const Arrangement_2& arr) :
p_arr(&arr),
m_traits(static_cast(p_arr->geometry_traits())),
lm_gen(new Generator(arr)), // allocate the landmarks generator.
own_gen(true)
- { }
+ {}
- /*! Constructor given an arrangement, and landmarks generator. */
+ /*! constructs given an arrangement, and landmarks generator. */
Arr_landmarks_point_location(const Arrangement_2& arr, Generator* gen) :
p_arr(&arr),
m_traits(static_cast(p_arr->geometry_traits())),
lm_gen(gen),
own_gen(false)
- { }
+ {}
- /*! Destructor. */
- ~Arr_landmarks_point_location()
- {
+ /*! destructs. */
+ ~Arr_landmarks_point_location() {
if (own_gen) {
delete lm_gen;
lm_gen = nullptr;
}
}
- /*! Attach an arrangement object (and a generator, if supplied). */
- void attach(const Arrangement_2& arr, Generator* gen = nullptr)
- {
+ /*! attaches an arrangement object (and a generator, if supplied). */
+ void attach(const Arrangement_2& arr, Generator* gen = nullptr) {
// Keep a pointer to the associated arrangement.
p_arr = &arr;
m_traits = static_cast(p_arr->geometry_traits());
@@ -163,9 +172,8 @@ public:
}
}
- /*! Detach the instance from the arrangement object. */
- void detach()
- {
+ /*! detaches the instance from the arrangement object. */
+ void detach() {
p_arr = nullptr;
m_traits = nullptr;
@@ -174,8 +182,7 @@ public:
lm_gen->detach();
}
- /*!
- * Locate the arrangement feature containing the given point.
+ /*! locates the arrangement feature containing the given point.
* \param p The query point.
* \return An object representing the arrangement feature containing the
* query point. This object is either a Face_const_handle or a
@@ -184,7 +191,7 @@ public:
result_type locate(const Point_2& p) const;
protected:
- /*! Walk from the given vertex to the query point.
+ /*! walks from the given vertex to the query point.
* \param vh The given vertex handle.
* \param p The query point.
* \param crossed_edges In/Out: The set of edges crossed so far.
@@ -196,7 +203,7 @@ protected:
const Point_2& p,
Halfedge_set& crossed_edges) const;
- /*! Locate an edge around a given vertex that is the predecessor of the
+ /*! locates an edge around a given vertex that is the predecessor of the
* curve connecting the vertex to the query point in a clockwise order.
* \param vh The vertex.
* \param p The query point.
@@ -207,7 +214,7 @@ protected:
const Point_2& p,
bool& new_vertex) const;
- /*! Walk from a point on a given halfedge to the query point.
+ /*! walks from a point on a given halfedge to the query point.
* \param eh The given halfedge handle.
* \param np The point that the walk starts from.
* \param p The query point.
@@ -220,7 +227,7 @@ protected:
const Point_2& np,
const Point_2& p,
Halfedge_set& crossed_edges) const;
- /*! In case the arrangement's curve contained in the segment
+ /*! handles the arrangement curve contained in the segment
* from the nearest landmark to the query point
* \param he The given halfedge handle.
* \param p_is_left Is the query point the left endpoint of seg.
@@ -236,7 +243,7 @@ protected:
const Point_2& p,
Halfedge_set& crossed_edges) const;
- /*! Walk from a point in a face to the query point.
+ /*! walks from a point in a face to the query point.
* \param fh A halfedge handle that points to the face.
* \param np The point that the walk starts from.
* \param p The query point.
@@ -250,7 +257,7 @@ protected:
const Point_2& p,
Halfedge_set& crossed_edges) const;
- /*! Find a halfedge on the given CCB that intersects the given x-monotone
+ /*! finds a halfedge on the given CCB that intersects the given x-monotone
* curve, connecting the current landmark to the query point.
* \param circ The CCB circulator.
* \param seg The segment connecting the landmark and the query point.
@@ -275,7 +282,7 @@ protected:
bool& cv_is_contained_in_seg,
Vertex_const_handle& new_vertex) const;
- /*! Return the halfedge that contains the query point.
+ /*! returns the halfedge that contains the query point.
* \param he The halfedge handle.
* \param crossed_edges In/Out: The set of edges crossed so far.
* \param p The query point.
@@ -287,7 +294,7 @@ protected:
const Point_2& p,
bool& is_target) const;
- /*! Check whether the given curve intersects a simple segment, which connects
+ /*! checks whether the given curve intersects a simple segment, which connects
* the current landmark to the query point, an odd number of times.
* \param cv The curve.
* \param seg The segment connecting the landmark and the query point.
@@ -303,9 +310,62 @@ protected:
bool& p_on_curve,
bool& cv_and_seg_overlap,
bool& cv_is_contained_in_seg) const;
+
+ //!
+ template
+ std::pair
+ construct_segment(const Point_2& p, const Point_2& q, T const& traits,
+ ...) const {
+ X_monotone_curve_2 seg = traits.construct_x_monotone_curve_2_object()(p, q);
+ Comparison_result res = traits.compare_xy_2_object()(p, q);
+ return std::make_pair(seg, res);
+ }
+
+ //*!
+ template
+ std::pair
+ construct_segment(const Point_2& p, const Point_2& q, T const& traits,
+ int) const {
+ X_monotone_curve_2 seg = traits.construct_x_monotone_curve_2_object()(p, q);
+ Comparison_result res = traits.compare_endpoints_xy_2_object()(seg);
+ return std::make_pair(seg, res);
+ }
+
+ /*! Determines whether the $x$-coordinates of two points are equal.
+ */
+ bool equal_x_2(const Point_2& p, const Point_2& q,
+ Arr_all_sides_oblivious_tag) const
+ { return (m_traits->compare_x_2_object()(p, q) == EQUAL); }
+
+ /*! Determines whether the $x$-coordinates of two points are equal.
+ */
+ bool equal_x_2(const Point_2& p, const Point_2& q,
+ Arr_has_identified_side_tag) const {
+ auto is_on_y_identification = m_traits->is_on_y_identification_2_object();
+ if (is_on_y_identification(p)) {
+ return is_on_y_identification(q);
+ }
+ if (is_on_y_identification(q)) return false;
+ return (m_traits->compare_x_2_object()(p, q) == EQUAL);
+ }
+
+ /*! Determines whether the $x$-coordinates of two points are equal.
+ */
+ bool equal_x_2(const Point_2& p, const Point_2& q,
+ Arr_boundary_cond_tag) const {
+ auto param_space_in_x = m_traits->parameter_space_in_x_2_object();
+ switch (param_space_in_x(p)) {
+ case ARR_LEFT_BOUNDARY: return (param_space_in_x(q) == ARR_LEFT_BOUNDARY);
+ case ARR_RIGHT_BOUNDARY: return (param_space_in_x(q) == ARR_LEFT_BOUNDARY);
+ case ARR_INTERIOR: return (m_traits->compare_x_2_object()(p, q) == EQUAL);
+ default: CGAL_error();
+ }
+ CGAL_error();
+ return false;
+ }
};
-} //namespace CGAL
+} // namespace CGAL
// The member-function definitions can be found under:
#include
diff --git a/Arrangement_on_surface_2/include/CGAL/Arr_point_location/Arr_landmarks_pl_impl.h b/Arrangement_on_surface_2/include/CGAL/Arr_point_location/Arr_landmarks_pl_impl.h
index dae2f574090..74d400cfc33 100644
--- a/Arrangement_on_surface_2/include/CGAL/Arr_point_location/Arr_landmarks_pl_impl.h
+++ b/Arrangement_on_surface_2/include/CGAL/Arr_point_location/Arr_landmarks_pl_impl.h
@@ -7,16 +7,15 @@
// $Id$
// SPDX-License-Identifier: GPL-3.0-or-later OR LicenseRef-Commercial
//
-// Author(s) : Idit Haran
-// Ron Wein
-// Efi Fogel
+// Author(s) : Idit Haran
+// Ron Wein
+// Efi Fogel
#ifndef CGAL_ARR_LANDMARKS_PL_IMPL_H
#define CGAL_ARR_LANDMARKS_PL_IMPL_H
#include
-
/*! \file
* Member-function definitions for the
* Arr_landmarks_point_location class.
@@ -24,60 +23,53 @@
namespace CGAL {
-//-----------------------------------------------------------------------------
-// Locate the arrangement feature containing the given point.
-//
+/*! locates the arrangement feature containing the given point.
+ */
template
typename Arr_landmarks_point_location::result_type
-Arr_landmarks_point_location::locate(const Point_2& p) const
-{
+Arr_landmarks_point_location::locate(const Point_2& p) const {
// If the arrangement is empty, return its initial (empty and
// non-fictitious) face.
if (p_arr->number_of_vertices() == 0) {
CGAL_assertion(p_arr->number_of_faces() == 1);
- Face_const_handle fh = p_arr->faces_begin();
+ Face_const_handle fh = p_arr->faces_begin();
return make_result(fh);
}
+
// Use the generator and to find the closest landmark to the query point.
- result_type lm_location_obj;
+ result_type lm_location_obj;
const Point_2& landmark_point = lm_gen->closest_landmark(p, lm_location_obj);
// If the query point and the landmark point are equal, return the landmark.
- if (m_traits->equal_2_object()(landmark_point, p))
- return lm_location_obj;
+ if (m_traits->equal_2_object()(landmark_point, p)) return lm_location_obj;
// Walk from the nearest_vertex to the point p, using walk algorithm,
// and find the location of the query point p. Note that the set of edges
// we have crossed so far is initially empty.
- Halfedge_set crossed_edges;
- result_type out_obj;
+ Halfedge_set crossed_edges;
+ result_type out_obj;
// Locate the arrangement feature that contains the landmark.
- const Vertex_const_handle* vh;
- const Halfedge_const_handle* hh;
- const Face_const_handle* fh;
- if ( ( vh = Result().template assign(&lm_location_obj) ) )
- out_obj = _walk_from_vertex(*vh, p, crossed_edges);
- else if ( ( hh = Result().template assign(&lm_location_obj) ) )
- out_obj = _walk_from_edge(*hh, landmark_point, p, crossed_edges);
- else if ( ( fh = Result().template assign(&lm_location_obj) ) )
- out_obj = _walk_from_face(*fh, landmark_point, p, crossed_edges);
+ if (const auto* v = std::get_if(&lm_location_obj))
+ out_obj = _walk_from_vertex(*v, p, crossed_edges);
+ else if (const auto* e = std::get_if(&lm_location_obj))
+ out_obj = _walk_from_edge(*e, landmark_point, p, crossed_edges);
+ else if (const auto* f = std::get_if(&lm_location_obj))
+ out_obj = _walk_from_face(*f, landmark_point, p, crossed_edges);
else CGAL_error_msg("lm_location_obj of an unknown type.");
- if ( ( fh = Result().template assign(&out_obj) ) ) {
+ if (const auto* fp = std::get_if(&out_obj)) {
+ const auto& f = *fp;
// If we reached here, we did not locate the query point in any of the
// holes inside the current face, so we conclude it is contained in this
- // face.
- // However, we first have to check whether the query point coincides with
- // any of the isolated vertices contained inside this face.
- Isolated_vertex_const_iterator iso_verts_it;
- typename Traits_adaptor_2::Equal_2 equal = m_traits->equal_2_object();
-
- for (iso_verts_it = (*fh)->isolated_vertices_begin();
- iso_verts_it != (*fh)->isolated_vertices_end(); ++iso_verts_it)
- {
+ // face. However, we first have to check whether the query point coincides
+ // with any of the isolated vertices contained inside this face.
+ auto equal = m_traits->equal_2_object();
+ // Do not use 'auto' to define the iterator, as MSVC2017 complains.
+ for (Isolated_vertex_const_iterator iso_verts_it = f->isolated_vertices_begin();
+ iso_verts_it != f->isolated_vertices_end(); ++iso_verts_it) {
if (equal(p, iso_verts_it->point())) {
- Vertex_const_handle ivh = iso_verts_it;
+ Vertex_const_handle ivh = iso_verts_it;
return make_result(ivh);
}
}
@@ -86,28 +78,24 @@ Arr_landmarks_point_location::locate(const Point_2& p) const
return out_obj;
}
-//-----------------------------------------------------------------------------
-// Walk from a given vertex to the query point.
-//
+/*! walks from a given vertex to the query point.
+ */
template
typename Arr_landmarks_point_location::result_type
Arr_landmarks_point_location::
-_walk_from_vertex(Vertex_const_handle nearest_vertex,
- const Point_2& p,
- Halfedge_set& crossed_edges) const
-{
+_walk_from_vertex(Vertex_const_handle nearest_vertex, const Point_2& p,
+ Halfedge_set& crossed_edges) const {
Vertex_const_handle vh = nearest_vertex;
CGAL_assertion_msg(! vh->is_at_open_boundary(),
"_walk_from_vertex() from a vertex at infinity.");
// Check if the query point p coincides with the vertex.
- if (m_traits->equal_2_object()(vh->point(), p))
- return make_result(vh);
+ if (m_traits->equal_2_object()(vh->point(), p)) return make_result(vh);
// In case of an isolated vertex, walk to from the face that contains
// it toward the query point.
if (vh->is_isolated()) {
- Face_const_handle fh = vh->face();
+ Face_const_handle fh = vh->face();
return (_walk_from_face(fh, vh->point(), p, crossed_edges));
}
@@ -116,16 +104,15 @@ _walk_from_vertex(Vertex_const_handle nearest_vertex,
Halfedge_around_vertex_const_circulator first = vh->incident_halfedges();
// Create an x-monotone curve connecting the point associated with the
// vertex vp and the query point p.
- const Point_2& vp = vh->point();
- X_monotone_curve_2 seg =
- m_traits->construct_x_monotone_curve_2_object()(vp, p);
- const bool seg_dir_right =
- (m_traits->compare_xy_2_object()(vp, p) == SMALLER);
+ const Point_2& vp = vh->point();
+ X_monotone_curve_2 seg;
+ Comparison_result res;
+ std::tie(seg, res) = construct_segment(vp, p, *m_traits, 0);
+ bool seg_dir_right = (res == SMALLER);
Halfedge_around_vertex_const_circulator curr_iter = first;
Halfedge_around_vertex_const_circulator next_iter = curr_iter;
++next_iter;
- typename Traits_adaptor_2::Is_between_cw_2 is_between_cw =
- m_traits->is_between_cw_2_object();
+ auto is_between_cw = m_traits->is_between_cw_2_object();
// Traverse the halfedges around vp until we find the pair of adjacent
// halfedges such as seg is located clockwise in between them.
do {
@@ -134,12 +121,11 @@ _walk_from_vertex(Vertex_const_handle nearest_vertex,
(curr_iter->direction() == ARR_RIGHT_TO_LEFT),
next_iter->curve(),
(next_iter->direction() == ARR_RIGHT_TO_LEFT),
- vp, eq_curr_iter, eq_next_iter))
- {
+ vp, eq_curr_iter, eq_next_iter)) {
// the assumption is that each edge is crossed at most twice
- CGAL_assertion_msg(crossed_edges.count (curr_iter) < 2,
+ CGAL_assertion_msg(crossed_edges.count(curr_iter) < 2,
"crossed_edges should contain each halfedge at most twice.");
- CGAL_assertion_msg(crossed_edges.count (next_iter) < 2,
+ CGAL_assertion_msg(crossed_edges.count(next_iter) < 2,
"crossed_edges should contain each halfedge at most twice.");
crossed_edges.insert(curr_iter);
crossed_edges.insert(curr_iter->twin());
@@ -158,8 +144,7 @@ _walk_from_vertex(Vertex_const_handle nearest_vertex,
result_type obj = _find_face_around_vertex(vh, p, new_vertex);
if (new_vertex) {
// We found a vertex closer to p; Continue using this vertex.
- const Vertex_const_handle* p_vh =
- Result().template assign(&obj);
+ const auto* p_vh = std::get_if(&obj);
CGAL_assertion(p_vh != nullptr);
vh = *p_vh;
continue;
@@ -167,15 +152,13 @@ _walk_from_vertex(Vertex_const_handle nearest_vertex,
// If p is located on an edge or on a vertex, return the object
// that wraps this arrangement feature.
- if (Result().template assign(&obj) ||
- Result().template assign(&obj))
+ if (std::get_if(&obj) ||
+ std::get_if(&obj))
return obj;
- const Face_const_handle* p_fh =
- Result().template assign(&obj);
- if (p_fh)
- // Walk to p from the face we have located:
- return _walk_from_face(*p_fh, vh->point(), p, crossed_edges);
+ const auto* p_fh = std::get_if(&obj);
+ // Walk to p from the face we have located:
+ if (p_fh) return _walk_from_face(*p_fh, vh->point(), p, crossed_edges);
CGAL_error_msg("_find_face_around_vertex() returned an unknown object.");
}
@@ -185,31 +168,27 @@ _walk_from_vertex(Vertex_const_handle nearest_vertex,
return default_result();
}
-//-----------------------------------------------------------------------------
-// Locate an edge around a given vertex that is the predecessor of the curve
-// connecting the vertex to the query point in a clockwise order.
-//
+/*! locates an edge around a given vertex that is the predecessor of the curve
+ * connecting the vertex to the query point in a clockwise order.
+ */
template
typename Arr_landmarks_point_location::result_type
Arr_landmarks_point_location::
-_find_face_around_vertex(Vertex_const_handle vh,
- const Point_2& p,
- bool& new_vertex) const
-{
+_find_face_around_vertex(Vertex_const_handle vh, const Point_2& p,
+ bool& new_vertex) const {
new_vertex = false;
// Create an x-monotone curve connecting the point associated with the
// vertex vp and the query point p.
- const Point_2& vp = vh->point();
- X_monotone_curve_2 seg =
- m_traits->construct_x_monotone_curve_2_object()(vp, p);
- const bool seg_dir_right =
- (m_traits->compare_xy_2_object()(vp, p) == SMALLER);
-
+ const Point_2& vp = vh->point();
+ X_monotone_curve_2 seg;
+ Comparison_result res;
+ std::tie(seg, res) = construct_segment(vp, p, *m_traits, 0);
+ bool seg_dir_right = (res == SMALLER);
// Get the first incident halfedge around v and the next halfedge.
- Halfedge_around_vertex_const_circulator first = vh->incident_halfedges();
- Halfedge_around_vertex_const_circulator curr, next;
- bool equal_curr = false;
+ Halfedge_around_vertex_const_circulator first = vh->incident_halfedges();
+ Halfedge_around_vertex_const_circulator curr, next;
+ bool equal_curr = false;
next = curr = first;
++next;
@@ -241,16 +220,14 @@ _find_face_around_vertex(Vertex_const_handle vh,
else {
// Traverse the halfedges around v until we find the pair of adjacent
// halfedges such as seg is located clockwise in between them.
- typename Traits_adaptor_2::Is_between_cw_2 is_between_cw =
- m_traits->is_between_cw_2_object();
- bool eq_curr, eq_next;
+ auto is_between_cw = m_traits->is_between_cw_2_object();
+ bool eq_curr, eq_next;
while (! is_between_cw(seg, seg_dir_right, curr->curve(),
(curr->direction() == ARR_RIGHT_TO_LEFT),
next->curve(),
(next->direction() == ARR_RIGHT_TO_LEFT),
- vp, eq_curr, eq_next))
- {
+ vp, eq_curr, eq_next)) {
// Break the loop if seg equals one of the halfedges next to v.
if (eq_curr) {
equal_curr = true;
@@ -291,10 +268,9 @@ _find_face_around_vertex(Vertex_const_handle vh,
// Check whether p lies on the curve associated with the edge.
if (m_traits->is_in_x_range_2_object()(curr->curve(), p) &&
- m_traits->compare_y_at_x_2_object()(p, curr->curve()) == EQUAL)
- {
+ m_traits->compare_y_at_x_2_object()(p, curr->curve()) == EQUAL) {
// p is located on the interior of the edge.
- Halfedge_const_handle he = curr;
+ Halfedge_const_handle he = curr;
return make_result(he);
}
@@ -304,22 +280,18 @@ _find_face_around_vertex(Vertex_const_handle vh,
return make_result(curr->source());
}
-//-----------------------------------------------------------------------------
-// Walk from the edge to the query point.
-//
+/*! walks from the edge to the query point.
+ */
template
typename Arr_landmarks_point_location::result_type
Arr_landmarks_point_location::
-_walk_from_edge(Halfedge_const_handle eh,
- const Point_2& np,
- const Point_2& p,
- Halfedge_set& crossed_edges) const
-{
+_walk_from_edge(Halfedge_const_handle eh, const Point_2& np, const Point_2& p,
+ Halfedge_set& crossed_edges) const {
CGAL_assertion_msg(! eh->is_fictitious(),
"_walk_from_edge() from a fictitious edge.");
const X_monotone_curve_2& cv = eh->curve() ;
- Comparison_result res;
+ Comparison_result res;
X_monotone_curve_2 seg =
m_traits->construct_x_monotone_curve_2_object()(np, p);
@@ -345,8 +317,7 @@ _walk_from_edge(Halfedge_const_handle eh,
if (m_traits->is_in_x_range_2_object()(seg, temp_p)) {
//we must make sure that eh is not a tip on an "antena"
if (m_traits->compare_y_at_x_2_object()(temp_p, seg) == EQUAL &&
- eh->prev() != eh->twin())
- {
+ eh->prev() != eh->twin()) {
// the assumption is that each edge is crossed at most twice
CGAL_assertion_msg(crossed_edges.count(eh->prev()) < 2,
"crossed_edges should contain each halfedge at most twice.");
@@ -367,8 +338,7 @@ _walk_from_edge(Halfedge_const_handle eh,
if (m_traits->is_in_x_range_2_object()(seg, temp_p)) {
//we must make sure that eh is not a tip on an "antena"
if (m_traits->compare_y_at_x_2_object()(temp_p, seg) == EQUAL &&
- eh->next() != eh->twin())
- {
+ eh->next() != eh->twin()) {
// the assumption is that each edge is crossed at most twice
CGAL_assertion_msg(crossed_edges.count(eh->next()) < 2,
"crossed_edges should contain each halfedge at most twice.");
@@ -428,89 +398,71 @@ _walk_from_edge(Halfedge_const_handle eh,
return (_walk_from_vertex(vh, p, crossed_edges));
}
-//-----------------------------------------------------------------------------
-// In case the arrangement's curve contained in the segment
-// from the nearest landmark to the query point
-//
+/*! deals with an arrangement curve contained in the segment from the nearest
+ * landmark to the query point
+ */
template
typename Arr_landmarks_point_location::result_type
Arr_landmarks_point_location::
-_deal_with_curve_contained_in_segment(Halfedge_const_handle he,
- bool p_is_left,
+_deal_with_curve_contained_in_segment(Halfedge_const_handle he, bool p_is_left,
const Point_2& p,
- Halfedge_set& crossed_edges) const
-{
+ Halfedge_set& crossed_edges) const {
// in this case we want to walk from to the query point from the nearest
// vertex either the halfedge's source or target
- Vertex_const_handle vh;
- bool target_is_left;
- if (m_traits->compare_xy_2_object()
- (he->source()->point(),he->target()->point()) == LARGER)
- target_is_left = true;
- else
- target_is_left = false;
+ auto cmp_xy = m_traits->compare_xy_2_object();
+ bool target_is_left =
+ (cmp_xy(he->source()->point(), he->target()->point()) == LARGER);
+
+ Vertex_const_handle vh;
if (p_is_left) {
- if (target_is_left)
- vh = he->target();
- else
- vh = he->source();
+ if (target_is_left) vh = he->target();
+ else vh = he->source();
}
else {
- if (target_is_left)
- vh = he->source();
- else
- vh = he->target();
+ if (target_is_left) vh = he->source();
+ else vh = he->target();
}
// vh is the closest vertex among the halfedge's end points
return (_walk_from_vertex(vh, p, crossed_edges));
}
-//-----------------------------------------------------------------------------
-// Walk from the given face to the query point.
-//
+/*! walks from the given face to the query point.
+ */
template
typename Arr_landmarks_point_location::result_type
Arr_landmarks_point_location::
-_walk_from_face(Face_const_handle face,
- const Point_2& np,
- const Point_2& p,
- Halfedge_set& crossed_edges) const
-{
+_walk_from_face(Face_const_handle face, const Point_2& np, const Point_2& p,
+ Halfedge_set& crossed_edges) const {
// Construct an x-monotone curve connecting the nearest landmark point np
// to the query point p and check which CCB intersects this segment.
- X_monotone_curve_2 seg =
- m_traits->construct_x_monotone_curve_2_object()(np, p);
- const bool p_is_left =
- (m_traits->compare_xy_2_object()(np, p) == LARGER);
+ X_monotone_curve_2 seg;
+ Comparison_result res;
+ std::tie(seg, res) = construct_segment(np, p, *m_traits, 0);
+ const bool p_is_left = (res == LARGER);
- Inner_ccb_const_iterator inner_ccb_iter;
- Outer_ccb_const_iterator outer_ccb_iter;
- const Halfedge_const_handle invalid_he;
- Halfedge_const_handle he;
- Face_const_handle new_face;
- bool is_on_edge;
- bool is_target;
- bool cv_is_contained_in_seg;
- Vertex_const_handle new_vertex;
- const Vertex_const_handle invalid_vertex;
+ const Halfedge_const_handle invalid_he;
+ const Vertex_const_handle invalid_vertex;
+ bool cv_is_contained_in_seg;
do {
// Check whether p lies inside the current face (including its holes):
- if (p_arr->topology_traits()->is_in_face(&(*face), p, nullptr))
- {
+ if (p_arr->topology_traits()->is_in_face(&(*face), p, nullptr)) {
// We know that p is located inside the current face, and we check
// whether it lies inside one of its holes (or on the boundary of
// its holes).
cv_is_contained_in_seg = false;
- new_face = face;
- for (inner_ccb_iter = face->inner_ccbs_begin();
- inner_ccb_iter != face->inner_ccbs_end(); ++inner_ccb_iter)
- {
- he = _intersection_with_ccb(*inner_ccb_iter,seg, p, p_is_left,
- crossed_edges,is_on_edge, is_target,
- cv_is_contained_in_seg,new_vertex);
- if (he == invalid_he && cv_is_contained_in_seg)
- {
+ auto new_face = face;
+ // Do not use 'auto' to define the iterator, as MSVC2017 complains.
+ for (Inner_ccb_const_iterator inner_ccb_iter = face->inner_ccbs_begin();
+ inner_ccb_iter != face->inner_ccbs_end(); ++inner_ccb_iter) {
+ bool is_on_edge;
+ bool is_target;
+ Vertex_const_handle new_vertex;
+ Halfedge_const_handle he =
+ _intersection_with_ccb(*inner_ccb_iter,seg, p, p_is_left,
+ crossed_edges, is_on_edge, is_target,
+ cv_is_contained_in_seg, new_vertex);
+ if (he == invalid_he && cv_is_contained_in_seg) {
return _deal_with_curve_contained_in_segment(*inner_ccb_iter,
p_is_left,p,
crossed_edges);
@@ -535,8 +487,7 @@ _walk_from_face(Face_const_handle face,
// Check if we found a new face (hole) containing p. If not, the current
// face contains p.
- if (new_face == face)
- return make_result(face);
+ if (new_face == face) return make_result(face);
// Continue from the new face (hole).
face = new_face;
@@ -544,13 +495,17 @@ _walk_from_face(Face_const_handle face,
else {
// We know that p is not located inside the current face. We therefore
// look for an edge on its outer boundary that intersects seg.
- new_face = face;
- for (outer_ccb_iter = face->outer_ccbs_begin();
- outer_ccb_iter != face->outer_ccbs_end(); ++outer_ccb_iter)
- {
- he = _intersection_with_ccb(*outer_ccb_iter,seg, p, p_is_left,
- crossed_edges,is_on_edge, is_target,
- cv_is_contained_in_seg,new_vertex);
+ auto new_face = face;
+ // Do not use 'auto' to define the iterator, as MSVC2017 complains.
+ for (Inner_ccb_const_iterator outer_ccb_iter = face->outer_ccbs_begin();
+ outer_ccb_iter != face->outer_ccbs_end(); ++outer_ccb_iter) {
+ bool is_on_edge;
+ bool is_target;
+ Vertex_const_handle new_vertex;
+ Halfedge_const_handle he =
+ _intersection_with_ccb(*outer_ccb_iter,seg, p, p_is_left,
+ crossed_edges, is_on_edge, is_target,
+ cv_is_contained_in_seg, new_vertex);
if (he == invalid_he && cv_is_contained_in_seg) {
return _deal_with_curve_contained_in_segment(*outer_ccb_iter,
p_is_left,p,
@@ -585,10 +540,9 @@ _walk_from_face(Face_const_handle face,
return default_result();
}
-//-----------------------------------------------------------------------------
-// Find a halfedge on the given CCB that intersects the given x-monotone
-// curve, connecting the current landmark to the query point.
-//
+/*! finds a halfedge on the given CCB that intersects the given x-monotone
+ * curve, connecting the current landmark to the query point.
+ */
template
typename Arr_landmarks_point_location::Halfedge_const_handle
Arr_landmarks_point_location::
@@ -598,17 +552,15 @@ _intersection_with_ccb(Ccb_halfedge_const_circulator circ,
Halfedge_set& crossed_edges,
bool& is_on_edge, bool& is_target,
bool& cv_is_contained_in_seg,
- Vertex_const_handle & new_vertex) const
-{
+ Vertex_const_handle& new_vertex) const {
is_on_edge = false;
is_target = false;
// Go over the CCB.
- typename Traits_adaptor_2::Is_in_x_range_2 is_in_x_range =
- m_traits->is_in_x_range_2_object();
- Ccb_halfedge_const_circulator curr = circ , temp_circ;
- const Halfedge_const_handle invalid_he;
- Halfedge_const_handle he;
+ auto is_in_x_range = m_traits->is_in_x_range_2_object();
+ Ccb_halfedge_const_circulator curr = circ , temp_circ;
+ const Halfedge_const_handle invalid_he;
+ Halfedge_const_handle he;
bool cv_and_seg_overlap;
do {
he = curr;
@@ -646,33 +598,28 @@ _intersection_with_ccb(Ccb_halfedge_const_circulator circ,
// Check whether the current curve intersects seg an odd number of times.
if (_have_odd_intersections(he->curve(), seg, p_is_left,
is_on_edge,cv_and_seg_overlap,
- cv_is_contained_in_seg)
- && !(cv_and_seg_overlap || cv_is_contained_in_seg))
- {
+ cv_is_contained_in_seg) &&
+ ! (cv_and_seg_overlap || cv_is_contained_in_seg)) {
// Check if the query point lies on the current edge, or whether
// it lies in its interior.
if (is_on_edge)
return _in_case_p_is_on_edge(he,crossed_edges,p,is_target);
if ((!curr->target()->is_at_open_boundary()) &&
- is_in_x_range(seg, curr->target()->point()))
- {
+ is_in_x_range(seg, curr->target()->point())) {
// if the target point of curr is located on seg
// we should walk from it to the query point
if (m_traits->compare_y_at_x_2_object()
- (curr->target()->point(), seg) == EQUAL)
- {
+ (curr->target()->point(), seg) == EQUAL) {
new_vertex = curr->target();
}
}
else if ((!curr->source()->is_at_open_boundary()) &&
- is_in_x_range(seg , curr->source()->point() ))
- {
+ is_in_x_range(seg , curr->source()->point())) {
// if the source point of curr is located on seg
// we should walk from it to the query point
if (m_traits->compare_y_at_x_2_object()
- (curr->source()->point() , seg) == EQUAL)
- {
+ (curr->source()->point(), seg) == EQUAL) {
new_vertex = curr->source();
}
}
@@ -718,8 +665,7 @@ Arr_landmarks_point_location::
_in_case_p_is_on_edge(Halfedge_const_handle he,
Halfedge_set& crossed_edges,
const Point_2 & p,
- bool & is_target) const
-{
+ bool & is_target) const {
// cv and seg overlap, obviously we crossed it
// the assumption is that each edge is crossed at most twice
CGAL_assertion_msg(crossed_edges.count(he) < 2,
@@ -728,14 +674,12 @@ _in_case_p_is_on_edge(Halfedge_const_handle he,
crossed_edges.insert(he->twin());
// Check if p equals one of the edge end-vertices.
if (! he->target()->is_at_open_boundary() &&
- m_traits->compare_xy_2_object()(he->target()->point(), p) == EQUAL)
- {
+ m_traits->equal_2_object()(he->target()->point(), p)) {
// p is the target of the current halfedge.
is_target = true;
}
else if (! he->source()->is_at_open_boundary() &&
- m_traits->compare_xy_2_object()(he->source()->point(), p) == EQUAL)
- {
+ m_traits->equal_2_object()(he->source()->point(), p)) {
// Take the twin halfedge, so p equals its target.
he = he->twin();
is_target = true;
@@ -744,21 +688,17 @@ _in_case_p_is_on_edge(Halfedge_const_handle he,
return he;
}
-//-----------------------------------------------------------------------------
-// Check whether the given curve intersects a simple segment, which connects
-// the current landmark to the query point, an odd number of times.
-//
+/*! checks whether the given curve intersects a simple segment, which connects
+ * the current landmark to the query point, an odd number of times.
+ */
template
bool Arr_landmarks_point_location::
_have_odd_intersections(const X_monotone_curve_2& cv,
const X_monotone_curve_2& seg,
- bool p_is_left,
- bool& p_on_curve,
+ bool p_is_left, bool& p_on_curve,
bool& cv_and_seg_overlap,
- bool& cv_is_contained_in_seg) const
-{
- typename Traits_adaptor_2::Is_in_x_range_2 is_in_x_range =
- m_traits->is_in_x_range_2_object();
+ bool& cv_is_contained_in_seg) const {
+ auto is_in_x_range = m_traits->is_in_x_range_2_object();
p_on_curve = false;
cv_and_seg_overlap = false;
cv_is_contained_in_seg = false;
@@ -776,9 +716,9 @@ _have_odd_intersections(const X_monotone_curve_2& cv,
cv_right = m_traits->construct_max_vertex_2_object()(cv);
if (cv_left_is_closed && cv_right_is_closed) {
if (is_in_x_range(seg,cv_left) && is_in_x_range(seg,cv_right)) {
- if ((m_traits->compare_y_at_x_2_object()(cv_left, seg) == EQUAL) &&
- (m_traits->compare_y_at_x_2_object()(cv_right, seg) == EQUAL))
- {
+ auto cmp_y_at_x = m_traits->compare_y_at_x_2_object();
+ if ((cmp_y_at_x(cv_left, seg) == EQUAL) &&
+ (cmp_y_at_x(cv_right, seg) == EQUAL)) {
// cv is contained in seg non of the answer true or false is correct
// we must set a special flag to distinguish this case
cv_is_contained_in_seg = true;
@@ -791,22 +731,17 @@ _have_odd_intersections(const X_monotone_curve_2& cv,
if (cv_left_is_closed) {
// Check if the left endpoint of cv has the same x-coordinate as the
// right endpoint of seg.
- if (m_traits->compare_x_2_object()
- (m_traits->construct_min_vertex_2_object()(cv), seg_right) == EQUAL)
- {
- if (! p_is_left &&
- m_traits->compare_xy_2_object()
- (m_traits->construct_min_vertex_2_object()(cv), seg_right) == EQUAL)
- {
+ auto min_p = m_traits->construct_min_vertex_2_object()(cv);
+ if (equal_x_2(min_p, seg_right, Left_or_right_sides_category())) {
+ if (! p_is_left && m_traits->equal_2_object()(min_p, seg_right)) {
p_on_curve = true;
return true;
}
else if (m_traits->is_vertical_2_object()(seg)) {
+ auto cmp_y_at_x = m_traits->compare_y_at_x_2_object();
// Special treatment for vertical segments.
- Comparison_result res_l =
- m_traits->compare_y_at_x_2_object()(seg_left, cv);
- Comparison_result res_r =
- m_traits->compare_y_at_x_2_object()(seg_right, cv);
+ Comparison_result res_l = cmp_y_at_x(seg_left, cv);
+ Comparison_result res_r = cmp_y_at_x(seg_right, cv);
if ((p_is_left && res_l == EQUAL) || (! p_is_left && res_r == EQUAL)) {
p_on_curve = true;
return true;
@@ -819,23 +754,17 @@ _have_odd_intersections(const X_monotone_curve_2& cv,
if (cv_right_is_closed) {
// Check if the right endpoint of cv has the same x-coordinate as the
// left endpoint of seg.
- if (m_traits->compare_x_2_object()
- (m_traits->construct_max_vertex_2_object()(cv), seg_left) == EQUAL)
- {
- if (p_is_left &&
- m_traits->compare_xy_2_object()
- (m_traits->construct_max_vertex_2_object()(cv), seg_left) == EQUAL)
- {
+ auto max_p = m_traits->construct_max_vertex_2_object()(cv);
+ if (equal_x_2(max_p, seg_left, Left_or_right_sides_category())) {
+ if (p_is_left && m_traits->equal_2_object()(max_p, seg_left)) {
p_on_curve = true;
return true;
}
else if (m_traits->is_vertical_2_object()(seg)) {
// Special treatment for vertical segments.
- Comparison_result res_l =
- m_traits->compare_y_at_x_2_object()(seg_left, cv);
- Comparison_result res_r =
- m_traits->compare_y_at_x_2_object()(seg_right, cv);
-
+ auto cmp_y_at_x = m_traits->compare_y_at_x_2_object();
+ Comparison_result res_l = cmp_y_at_x(seg_left, cv);
+ Comparison_result res_r = cmp_y_at_x(seg_right, cv);
if ((p_is_left && res_l == EQUAL) || (! p_is_left && res_r == EQUAL)) {
p_on_curve = true;
return true;
@@ -846,8 +775,8 @@ _have_odd_intersections(const X_monotone_curve_2& cv,
}
}
// Compare the two left ends of cv and seg.
- Comparison_result left_res;
- const Arr_parameter_space bx_l =
+ Comparison_result left_res;
+ const Arr_parameter_space bx_l =
m_traits->parameter_space_in_x_2_object()(cv, ARR_MIN_END);
if (bx_l == ARR_LEFT_BOUNDARY) {
// The left end of cv lies to the left of seg_left:
@@ -858,11 +787,11 @@ _have_odd_intersections(const X_monotone_curve_2& cv,
// The left end of cv lies to the right of seg_left.
// Compare the left endpoint of cv to seg.
left_res = m_traits->compare_y_at_x_2_object()
- (m_traits->construct_min_vertex_2_object()(cv), seg);
+ (m_traits->construct_min_vertex_2_object()(cv), seg);
left_res = CGAL::opposite(left_res);
}
else {
- const Arr_parameter_space by_l =
+ const Arr_parameter_space by_l =
m_traits->parameter_space_in_y_2_object()(cv, ARR_MIN_END);
if (by_l == ARR_BOTTOM_BOUNDARY)
// The left end of cv is at y = -oo, so cv obviously lies above it.
@@ -876,8 +805,7 @@ _have_odd_intersections(const X_monotone_curve_2& cv,
Comparison_result res = m_traits->compare_xy_2_object()(cv_left, seg_left);
if (res != LARGER) {
left_res = m_traits->compare_y_at_x_2_object()(seg_left, cv);
- if (p_is_left && left_res == EQUAL)
- {
+ if (p_is_left && left_res == EQUAL) {
// In this case the query point p, which is the left endpoint of seg,
// lies on cv.
p_on_curve = true;
@@ -904,8 +832,7 @@ _have_odd_intersections(const X_monotone_curve_2& cv,
// we must set a special flag to distinguish this case
if (is_in_x_range(cv,( p_is_left ? seg_left : seg_right)))
if (m_traits->compare_y_at_x_2_object()
- ((p_is_left ? seg_left : seg_right), cv) == EQUAL)
- {
+ ((p_is_left ? seg_left : seg_right), cv) == EQUAL) {
p_on_curve = true;
}
cv_and_seg_overlap = true;
@@ -913,8 +840,8 @@ _have_odd_intersections(const X_monotone_curve_2& cv,
}
}
// Compare the two right ends of cv and seg.
- Comparison_result right_res;
- const Arr_parameter_space bx_r =
+ Comparison_result right_res;
+ const Arr_parameter_space bx_r =
m_traits->parameter_space_in_x_2_object()(cv, ARR_MAX_END);
if (bx_r == ARR_RIGHT_BOUNDARY) {
// The right end of cv lies to the right of seg_right:
@@ -925,11 +852,11 @@ _have_odd_intersections(const X_monotone_curve_2& cv,
// The right end of cv lies to the left of seg_right.
// Compare the right endpoint of cv to seg.
right_res = m_traits->compare_y_at_x_2_object()
- (m_traits->construct_max_vertex_2_object()(cv), seg);
+ (m_traits->construct_max_vertex_2_object()(cv), seg);
right_res = CGAL::opposite(right_res);
}
else {
- const Arr_parameter_space by_r =
+ const Arr_parameter_space by_r =
m_traits->parameter_space_in_y_2_object()(cv, ARR_MAX_END);
if (by_r == ARR_BOTTOM_BOUNDARY)
// The right end of cv is at y = -oo, so cv obviously lies above it.
@@ -972,8 +899,7 @@ _have_odd_intersections(const X_monotone_curve_2& cv,
// we must set a special flag to distinguish this case
if (is_in_x_range(cv, (p_is_left ? seg_left : seg_right)))
if (m_traits->compare_y_at_x_2_object()
- ((p_is_left ? seg_left : seg_right), cv) == EQUAL)
- {
+ ((p_is_left ? seg_left : seg_right), cv) == EQUAL) {
p_on_curve = true;
}
cv_and_seg_overlap = true;
@@ -986,6 +912,6 @@ _have_odd_intersections(const X_monotone_curve_2& cv,
return (left_res != right_res);
}
-} //namespace CGAL
+} // namespace CGAL
#endif
diff --git a/Arrangement_on_surface_2/include/CGAL/Arr_tracing_traits_2.h b/Arrangement_on_surface_2/include/CGAL/Arr_tracing_traits_2.h
index c3f09ef16e9..9fcf72dc557 100644
--- a/Arrangement_on_surface_2/include/CGAL/Arr_tracing_traits_2.h
+++ b/Arrangement_on_surface_2/include/CGAL/Arr_tracing_traits_2.h
@@ -76,9 +76,9 @@ public:
NUMBER_OF_OPERATIONS
};
-private:
using Base = BaseTraits;
+private:
//! A set of bits that indicate whether operations should be traced.
unsigned long long m_flags;
@@ -212,6 +212,7 @@ public:
using X_monotone_curve_2 = typename Base::X_monotone_curve_2;
using Curve_2 = typename Base::Curve_2;
using Multiplicity = typename Base::Multiplicity;
+ //@}
/*! A functor that compares the \f$x\f$-coordinates of two points. */
class Compare_x_2 {
@@ -832,9 +833,16 @@ public:
std::cout << "approximate_2" << std::endl
<< " xcv: " << xcv << ", error: " << error
<< ", l2r: " << l2r << std::endl;
- auto res = m_object(xcv, error, oi, l2r);
- std::cout << " result: " << res << std::endl;
- return res;
+ std::list container;
+ m_object(xcv, error, std::back_inserter(container), l2r);
+ if (container.empty()) return oi;
+
+ std::size_t i = 0;
+ for (const auto& point : container) {
+ std::cout << " result[" << i++ << "]: " << point << std::endl;
+ *oi++ = point;
+ }
+ return oi;
}
};
diff --git a/Arrangement_on_surface_2/test/Arrangement_on_surface_2/CMakeLists.txt b/Arrangement_on_surface_2/test/Arrangement_on_surface_2/CMakeLists.txt
index adb6df001b3..60add4ac51b 100644
--- a/Arrangement_on_surface_2/test/Arrangement_on_surface_2/CMakeLists.txt
+++ b/Arrangement_on_surface_2/test/Arrangement_on_surface_2/CMakeLists.txt
@@ -1,7 +1,7 @@
# Created by the script cgal_create_cmake_script
# This is the CMake script for compiling a CGAL application.
-cmake_minimum_required(VERSION 3.12...3.29)
+cmake_minimum_required(VERSION 3.12...3.31)
project(Arrangement_on_surface_2_Tests)
enable_testing()
diff --git a/Arrangement_on_surface_2/test/Arrangement_on_surface_2/cgal_test_with_cmake b/Arrangement_on_surface_2/test/Arrangement_on_surface_2/cgal_test_with_cmake
deleted file mode 100755
index d8c26c68390..00000000000
--- a/Arrangement_on_surface_2/test/Arrangement_on_surface_2/cgal_test_with_cmake
+++ /dev/null
@@ -1,1749 +0,0 @@
-#! /bin/bash
-
-# This is a script for the CGAL test suite. Such a script must obey
-# the following rules:
-#
-# - the name of the script is cgal_test
-# - for every target two one line messages are written to the file 'error.txt'
-# the first one indicates if the compilation was successful
-# the second one indicates if the execution was successful
-# if one of the two was not successful, the line should start with 'ERROR:'
-# - running the script should not require any user interaction
-# - the script should clean up object files and executables
-
-# SET PARAMETERS FOR cgal_test
-
-set -- -cmake
-ERRORFILE=error.txt
-DO_RUN=y
-if [ -z "${MAKE_CMD}" ]; then
- MAKE_CMD=make
-fi
-
-
-FULL_ERROR_DESCRIPTION_FILE=ProgramOutput.error.txt
-
-#---------------------------------------------------------------------#
-# compile_and_run
-#---------------------------------------------------------------------#
-
-# note that these values shloud match to the values in test_configuration.h file
-
-CARTESIAN_KERNEL=0
-SIMPLE_CARTESIAN_KERNEL=1
-UNIVARIATE_ALGEBRAIC_KERNEL=2
-
-SEGMENT_GEOM_TRAITS=0
-NON_CACHING_SEGMENT_GEOM_TRAITS=1
-POLYLINE_GEOM_TRAITS=2
-NON_CACHING_POLYLINE_GEOM_TRAITS=3
-POLYCURVE_CONIC_GEOM_TRAITS=14
-POLYCURVE_CIRCULAR_ARC_GEOM_TRAITS=15
-POLYCURVE_BEZIER_GEOM_TRAITS=16
-LINEAR_GEOM_TRAITS=4
-CORE_CONIC_GEOM_TRAITS=5
-LINE_ARC_GEOM_TRAITS=6
-CIRCULAR_ARC_GEOM_TRAITS=7
-CIRCULAR_LINE_ARC_GEOM_TRAITS=8
-CIRCLE_SEGMENT_GEOM_TRAITS=9
-BEZIER_GEOM_TRAITS=10
-GEODESIC_ARC_ON_SPHERE_GEOM_TRAITS=11
-RATIONAL_ARC_GEOM_TRAITS=12
-ALGEBRAIC_GEOM_TRAITS=13
-POLYCURVE_CONIC_GEOM_TRAITS=14
-POLYCURVE_CIRCULAR_ARC_GEOM_TRAITS=15
-POLYCURVE_BEZIER_GEOM_TRAITS=16
-FLAT_TORUS_GEOM_TRAITS=17
-
-PLANAR_BOUNDED_TOPOL_TRAITS=0
-PLANAR_UNBOUNDED_TOPOL_TRAITS=1
-SPHERICAL_TOPOL_TRAITS=2
-
-DOUBLE_NT=0
-MP_FLOAT_NT=1
-GMPZ_NT=2
-LEDA_RAT_NT=3
-QUOTIENT_MP_FLOAT_NT=4
-QUOTIENT_CGAL_GMPZ_NT=5
-CGAL_GMPQ_NT=6
-LAZY_LEDA_RAT_NT=7
-LAZY_CGAL_GMPQ_NT=8
-LAZY_QUOTIENT_MP_FLOAT_NT=9
-LEDA_REAL_NT=10
-CORE_EXPR_NT=11
-LAZY_GMPZ_NT=12
-LEDA_INT_NT=13
-CGAL_GMPZ_NT=14
-CORE_INT_NT=15
-CORE_RAT_NT=16
-
-if [ -n "${CGAL_DISABLE_GMP}" ]; then
- if [ -n "CGAL_USE_LEDA" ]; then
- echo GMP is disabled, try to use LEDA instead.
- GMPZ_NT=$LEDA_INT_NT
- QUOTIENT_CGAL_GMPZ_NT=$LEDA_RAT_NT
- CGAL_GMPQ_NT=$LEDA_RAT_NT
- LAZY_CGAL_GMPQ_NT=$LAZY_LEDA_RAT_NT
- LAZY_GMPZ_NT=$LAZY_LEDA_RAT_NT
- CGAL_GMPZ_NT=$LEDA_INT_NT
- else
- echo GMP is disabled, try to use MP float instead.
- GMPZ_NT=$MP_FLOAT_NT
- QUOTIENT_CGAL_GMPZ_NT=$QUOTIENT_MP_FLOAT_NT
- CGAL_GMPQ_NT=$QUOTIENT_MP_FLOAT_NT
- LAZY_CGAL_GMPQ_NT=$LAZY_QUOTIENT_MP_FLOAT_NT
- LAZY_GMPZ_NT=$LAZY_QUOTIENT_MP_FLOAT_NT
- CGAL_GMPZ_NT=$MP_FLOAT_NT
- fi
-fi
-
-COMPARE=1
-VERTEX=2
-IS_VERTICAL=3
-COMPARE_Y_AT_X=4
-COMPARE_Y_AT_X_LEFT=5
-COMPARE_Y_AT_X_RIGHT=6
-MAKE_X_MONOTONE=7
-INTERSECT=8
-SPLIT=9
-ARE_MERGEABLE=10
-MERGE=11
-ASSERTIONS=12
-CONSTRUCTOR=13
-COMPARE_X_ON_BOUNDARY=16
-COMPARE_X_NEAR_BOUNDARY=17
-COMPARE_Y_NEAR_BOUNDARY=18
-PARAMETER_SPACE_X=19
-PARAMETER_SPACE_Y=20
-X_ON_IDENTIFICATION=21
-Y_ON_IDENTIFICATION=22
-IS_BOUNDED=23
-IS_IN_X_RANGE=24
-COMPARE_Y_POSITION=25
-IS_BETWEEN_CW=26
-COMPARE_CW_AROUND_POINT=27
-PUSH_BACK=28
-PUSH_FRONT=29
-NUMBER_OF_POINTS=32
-COMPARE_ENDPOINTS_XY=33
-CONSTRUCT_OPPOSITE=34
-TRIM=35
-
-#---------------------------------------------------------------------#
-# configure
-#---------------------------------------------------------------------#
-
-configure()
-{
- echo "Configuring... "
- rm -rf CMakeCache.txt CMakeFiles/
- if [ -f "$INIT_FILE" ]
- then
- if eval 'cmake --no-warn-unused-cli ${INIT_FILE:+"-C${INIT_FILE}"} -DRUNNING_CGAL_AUTO_TEST=TRUE \
- -DCGAL_DIR="$CGAL_DIR" \
- -DCGAL_CXX_FLAGS:STRING="$CGAL_CXX_FLAGS $TESTSUITE_CXXFLAGS -I../../include" \
- -DCGAL_EXE_LINKER_FLAGS="$CGAL_EXE_LINKER_FLAGS $TESTSUITE_LDFLAGS" \
- .' ; then
-
- echo " successful configuration" >> $ERRORFILE
- else
- echo " ERROR: configuration" >> $ERRORFILE
- fi
- else
- echo "cmake --no-warn-unused-cli ${INIT_FILE:+"-C${INIT_FILE}"} "$CMAKE_GENERATOR" -DRUNNING_CGAL_AUTO_TEST=TRUE \
- -DCGAL_DIR=\"$CGAL_DIR\" \
- -DCGAL_CXX_FLAGS:STRING=\"$TESTSUITE_CXXFLAGS -I../../include\" \
- -DCGAL_EXE_LINKER_FLAGS=\"$TESTSUITE_LDFLAGS\" \
- -DCMAKE_BUILD_TYPE=NOTFOUND \
- ."
- if eval 'cmake --no-warn-unused-cli ${INIT_FILE:+"-C${INIT_FILE}"} "$CMAKE_GENERATOR" -DRUNNING_CGAL_AUTO_TEST=TRUE \
- -DCGAL_DIR="$CGAL_DIR" \
- -DCGAL_CXX_FLAGS:STRING="$TESTSUITE_CXXFLAGS -I../../include" \
- -DCGAL_EXE_LINKER_FLAGS="$TESTSUITE_LDFLAGS" \
- -DCMAKE_BUILD_TYPE=NOTFOUND \
- .' ; then
-
- echo " successful configuration" >> $ERRORFILE
- else
- echo " ERROR: configuration" >> $ERRORFILE
- fi
- fi
-}
-
-compile_test_with_flags()
-{
- local name=$1;
- local type=$2;
- local flags=$3;
-
- echo "Compiling $name $type ... "
- if [ "${TEST_WITH_CMAKE}" != "FALSE" ]; then
- export TESTSUITE_CXXFLAGS="$flags"
- configure
- if eval '${MAKE_CMD} VERBOSE=1 -fMakefile \
- $name' ; then
- echo " successful compilation of $name $type" >> $ERRORFILE;
- SUCCESS="y"
- else
- echo " ERROR: compilation of $name $type" >> $ERRORFILE;
- SUCCESS=""
- fi
- else
- if eval 'make CGAL_MAKEFILE=$CGAL_MAKEFILE \
- TESTSUITE_CXXFLAGS="$TESTSUITE_CXXFLAGS" \
- TESTSUITE_LDFLAGS="$TESTSUITE_LDFLAGS" $name'; then
- echo " successful compilation of $name $type" >> $ERRORFILE;
- SUCCESS="y"
- else
- echo " ERROR: compilation of $name $type" >> $ERRORFILE;
- SUCCESS=""
- fi
- fi
-}
-
-run_test()
-{
- # $1 - executable name
-
- basedata=`basename "$5"`
- OUTPUTFILE="ProgramOutput.$1"
- rm -f $OUTPUTFILE
- COMMAND="./$1"
- if [ -f $1.cmd ] ; then
- COMMAND="$COMMAND `cat $1.cmd`"
- fi
- if [ -f $1.cin ] ; then
- COMMAND="cat $1.cin | $COMMAND"
- fi
- OUTPUTFILE="$OUTPUTFILE.$PLATFORM"
- echo "Executing $1 ($2) ... "
- ulimit -t 3600 2> /dev/null
- if eval $COMMAND > $OUTPUTFILE 2>&1 ; then
- echo " successful execution of $1" >> $ERRORFILE
- else
- echo " ERROR: execution of $1" >> $ERRORFILE
- cat $OUTPUTFILE >> $FULL_ERROR_DESCRIPTION_FILE
- fi
-}
-
-run_test_with_flags()
-{
- # $1 - executable name
- # $2 - test substring name
-
- basedata=`basename "$5"`
- OUTPUTFILE="ProgramOutput.$1"
- rm -f $OUTPUTFILE
- COMMAND="./$1"
- if [ -f $1.cmd ] ; then
- COMMAND="$COMMAND `cat $1.cmd`"
- elif [ -f $1.$2.cmd ] ; then
- COMMAND="$COMMAND `cat $1.$2.cmd`"
- OUTPUTFILE=$OUTPUTFILE.`echo $2 | tr '/' '.'`
- fi
- if [ -f $1.cin ] ; then
- COMMAND="cat $1.cin | $COMMAND"
- elif [ -f $1.$2.cin ] ; then
- COMMAND="cat $1.$2.cin | $COMMAND"
- OUTPUTFILE=$OUTPUTFILE.`echo $2 | tr '/' '.'`
- fi
- OUTPUTFILE="$OUTPUTFILE.$PLATFORM"
- echo "Executing $1 ($2) ... "
- ulimit -t 3600 2> /dev/null
- if eval $COMMAND > $OUTPUTFILE 2>&1 ; then
- echo " successful execution of $1 ($2)" >> $ERRORFILE
- else
- echo " ERROR: execution of $1 ($2)" >> $ERRORFILE
- cat $OUTPUTFILE >> $FULL_ERROR_DESCRIPTION_FILE
- fi
-}
-
-run_test_alt()
-{
- basedata=`basename "$5"`
- OUTPUTFILE=ProgramOutput.$1.`echo $5 | tr '/' '.'`.$6
- #echo ****generating file $OUTPUTFILE
- # dirdata=`dirname "$datafile"`
- rm -f $OUTPUTFILE
- COMMAND="./$1"
- echo "Executing $1 $5 $6 ... "
- if eval $COMMAND $2 $3 $4 $5 $6 > $OUTPUTFILE 2>&1 ; then
- echo " successful execution of $5 $6" >> $ERRORFILE
- else
- echo " ERROR: execution of $5 $6" >> $ERRORFILE
- cat $OUTPUTFILE >> $FULL_ERROR_DESCRIPTION_FILE
- fi
-}
-
-run_trapped_test()
-{
- #local name=$1;
- #local datafile=$2;
-
- if [ "${OSTYPE}" != "cygwin" ]; then
- ulimit -t 1200
- run_test_alt $1 $2 $3 $4 $5 $6
- else
- run_test_alt $1 $2 $3 $4 $5 $6 &
- WPID=$!
- trap "kill -9 $WPID" INT
- (sleep 1200; kill -9 $WPID) > /dev/null 2>&1 &
- SPID=$!
- wait $WPID > /dev/null 2>&1
- # RES=$?
- kill -9 $SPID > /dev/null 2>&1
- # return $RES
- fi
-}
-
-clean_tests()
-{
- if [ "${TEST_WITH_CMAKE}" != "FALSE" ]; then
- #
- # The clean target generated by CMake under cygwin
- # always fails for some reason
- #
- if ! ( uname | grep -q "CYGWIN" ) ; then
- make -fMakefile clean
- fi
- fi
- eval "make clean > /dev/null 2>&1"
-}
-
-compile_and_run()
-{
- local name=$1;
-
- echo "Compiling $name ... "
- if [ "${TEST_WITH_CMAKE}" != "FALSE" ]; then
- if eval '${MAKE_CMD} VERBOSE=1 -fMakefile $1' ; then
- echo " successful compilation of $1" >> $ERRORFILE
- SUCCESS="y"
- else
- echo " ERROR: compilation of $1" >> $ERRORFILE
- SUCCESS=""
- fi
- else
- SUCCESS="y"
- #TESTSUITE_CXXFLAGS="$TESTSUITE_CXXFLAGS"
- TESTSUITE_CXXFLAGS=""
- TESTSUITE_LDFLAGS="$TESTSUITE_LDFLAGS"
- if eval 'make CGAL_MAKEFILE=$CGAL_MAKEFILE \
- TESTSUITE_CXXFLAGS="$TESTSUITE_CXXFLAGS" \
- TESTSUITE_LDFLAGS="$TESTSUITE_LDFLAGS" $name' ; then
- echo " successful compilation of $name" >> $ERRORFILE
- else
- echo " ERROR: compilation of $name" >> $ERRORFILE
- SUCCESS=""
- fi
- fi
-
- if [ "${TEST_WITH_CMAKE}" != "FALSE" ]; then
- if [ -n "$DO_RUN" ] ; then
- if [ -n "${SUCCESS}" ] ; then
- run_test $1
- else
- echo " ERROR: not executed $1" >> $ERRORFILE
- fi
- fi
- else
- if [ -n "${SUCCESS}" ] ; then
- OUTPUTFILE=ProgramOutput.$name.$PLATFORM
- rm -f $OUTPUTFILE
- COMMAND="./$name"
- if [ -f $name.cmd ] ; then
- COMMAND="$COMMAND `cat $name.cmd`"
- fi
- if [ -f $name.cin ] ; then
- COMMAND="cat $name.cin | $COMMAND"
- fi
- echo "Executing $name ... "
- echo " "
- if eval $COMMAND > $OUTPUTFILE 2>&1 ; then
- echo " successful execution of $name" >> $ERRORFILE
- else
- echo " ERROR: execution of $name" >> $ERRORFILE
- cat $OUTPUTFILE >> $FULL_ERROR_DESCRIPTION_FILE
- fi
- else
- echo " ERROR: not executed $name" >> $ERRORFILE
- fi
- fi
- clean_tests
-}
-
-compile_and_run_trapped_test()
-{
- local name=$1;
-
- if [ "${OSTYPE}" != "cygwin" ]; then
- ulimit -t 1200
- compile_and_run $1
- else
- compile_and_run $1 &
- WPID=$!
- trap "kill -9 $WPID" INT
- (sleep 1200; kill -9 $WPID) > /dev/null 2>&1 &
- SPID=$!
- wait $WPID > /dev/null 2>&1
- # RES=$?
- kill -9 $SPID > /dev/null 2>&1
- # return $RES
- fi
-}
-
-execute_commands_old_structure()
-{
-
-# at first the tests where designed in such way that all the test input was
-# in one file, the points, the xcurves, the curves and the execution block
-# this function is used to execute the old tests, one may use it when needed
-# but you should remember that separating the input into smaller files creates
-# much more modular and comfortable test suite
-
-# the old structure is default, so this function executes all commands
-# except the commands that are given as arguments
-
-
- commands_indicator[COMPARE]=1
- commands_indicator[VERTEX]=1
- commands_indicator[IS_VERTICAL]=1
- commands_indicator[COMPARE_Y_AT_X]=1
- commands_indicator[COMPARE_Y_AT_X_LEFT]=1
- commands_indicator[COMPARE_Y_AT_X_RIGHT]=1
- commands_indicator[MAKE_X_MONOTONE]=1
- commands_indicator[INTERSECT]=1
- commands_indicator[SPLIT]=1
- commands_indicator[ARE_MERGEABLE]=1
- commands_indicator[MERGE]=1
- commands_indicator[ASSERTIONS]=1
- commands_indicator[CONSTRUCTOR]=1
- i=1
- if [ $# -gt 2 ] ; then
- for arg in $* ; do
- if [ $i -gt 2 ] ; then
- commands_indicator[$arg]=0
- fi
- let "i+=1"
- done
- fi
- if [ ${commands_indicator[$COMPARE]} -ne 0 ] ; then
- run_trapped_test test_traits \
- data/compare.pt data/empty.zero \
- data/empty.zero data/compare $2
- fi
- if [ ${commands_indicator[$VERTEX]} -ne 0 ] ; then
- run_trapped_test test_traits \
- data/$1/vertex.pt data/$1/vertex.xcv \
- data/empty.zero data/$1/vertex $2
- fi
- if [ ${commands_indicator[$IS_VERTICAL]} -ne 0 ] ; then
- run_trapped_test test_traits \
- data/empty.zero data/$1/is_vertical.xcv data/empty.zero \
- data/$1/is_vertical $2
- fi
- if [ ${commands_indicator[$COMPARE_Y_AT_X]} -ne 0 ] ; then
- run_trapped_test test_traits \
- data/$1/compare_y_at_x.pt data/$1/compare_y_at_x.xcv \
- data/empty.zero data/$1/compare_y_at_x $2
- fi
- if [ ${commands_indicator[$COMPARE_Y_AT_X_LEFT]} -ne 0 ] ; then
- run_trapped_test test_traits \
- data/$1/compare_y_at_x_left.pt data/$1/compare_y_at_x_left.xcv \
- data/empty.zero data/$1/compare_y_at_x_left $2
- fi
- if [ ${commands_indicator[$COMPARE_Y_AT_X_RIGHT]} -ne 0 ] ; then
- run_trapped_test test_traits \
- data/$1/compare_y_at_x_right.pt data/$1/compare_y_at_x_right.xcv \
- data/empty.zero data/$1/compare_y_at_x_right $2
- fi
- if [ ${commands_indicator[$MAKE_X_MONOTONE]} -ne 0 ] ; then
- run_trapped_test test_traits \
- data/empty.zero data/$1/make_x_monotone.xcv \
- data/$1/make_x_monotone.cv data/$1/make_x_monotone $2
- fi
- if [ ${commands_indicator[$INTERSECT]} -ne 0 ] ; then
- run_trapped_test test_traits \
- data/$1/intersect.pt data/$1/intersect.xcv \
- data/empty.zero data/$1/intersect $2
- fi
- if [ ${commands_indicator[$SPLIT]} -ne 0 ] ; then
- run_trapped_test test_traits \
- data/$1/split.pt data/$1/split.xcv \
- data/empty.zero data/$1/split $2
- fi
- if [ ${commands_indicator[$ARE_MERGEABLE]} -ne 0 ] ; then
- run_trapped_test test_traits \
- data/empty.zero data/$1/are_mergeable.xcv \
- data/empty.zero data/$1/are_mergeable $2
- fi
- if [ ${commands_indicator[$MERGE]} -ne 0 ] ; then
- run_trapped_test test_traits \
- data/empty.zero data/$1/merge.xcv \
- data/empty.zero data/$1/merge $2
- fi
- if [ ${commands_indicator[$ASSERTIONS]} -ne 0 ] ; then
- run_trapped_test test_traits \
- data/$1/assertions.pt data/$1/assertions.xcv \
- data/empty.zero data/$1/assertions $2
- fi
- if [ ${commands_indicator[$CONSTRUCTOR]} -ne 0 ] ; then
- run_trapped_test test_traits \
- data/empty.zero data/$1/constructor.xcv \
- data/$1/constructor.cv data/$1/constructor $2
- fi
-}
-
-execute_commands_new_structure()
-{
-
-# the new design for the tests includes separation of the test input into 4
-# parts: points file, xcurves file, curves file and execution block file.
-# one may reuse the input files for the various tests
-
-# the new structure is not default, so this function executes only
-# commands that are given as arguments
-
- commands_indicator[COMPARE]=0
- commands_indicator[VERTEX]=0
- commands_indicator[IS_VERTICAL]=0
- commands_indicator[COMPARE_Y_AT_X]=0
- commands_indicator[COMPARE_Y_AT_X_LEFT]=0
- commands_indicator[COMPARE_Y_AT_X_RIGHT]=0
- commands_indicator[MAKE_X_MONOTONE]=0
- commands_indicator[INTERSECT]=0
- commands_indicator[SPLIT]=0
- commands_indicator[ARE_MERGEABLE]=0
- commands_indicator[MERGE]=0
- commands_indicator[ASSERTIONS]=0
- commands_indicator[CONSTRUCTOR]=0
- commands_indicator[COMPARE_X_ON_BOUNDARY]=0
- commands_indicator[COMPARE_X_NEAR_BOUNDARY]=0
- commands_indicator[COMPARE_Y_NEAR_BOUNDARY]=0
- commands_indicator[PARAMETER_SPACE_X]=0
- commands_indicator[PARAMETER_SPACE_Y]=0
- commands_indicator[EQUAL]=0
- commands_indicator[PUSH_BACK]=0
- commands_indicator[PUSH_FRONT]=0
- commands_indicator[NUMBER_OF_POINTS]=0
- commands_indicator[COMPARE_ENDPOINTS_XY]=0
- commands_indicator[CONSTRUCT_OPPOSITE]=0
- commands_indicator[TRIM]=0
- i=1
- if [ $# -gt 2 ] ; then
- for arg in $* ; do
- if [ $i -gt 2 ] ; then
- commands_indicator[$arg]=1
- fi
- let "i+=1"
- done
- fi
- if [ ${commands_indicator[$COMPARE]} -ne 0 ] ; then
- run_trapped_test test_traits data/$1/points \
- data/$1/xcurves data/$1/curves data/$1/compare $2
- fi
- if [ ${commands_indicator[$VERTEX]} -ne 0 ] ; then
- run_trapped_test test_traits data/$1/points \
- data/$1/xcurves data/$1/curves data/$1/vertex $2
- fi
- if [ ${commands_indicator[$IS_VERTICAL]} -ne 0 ] ; then
- run_trapped_test test_traits data/$1/points \
- data/$1/xcurves data/$1/curves data/$1/is_vertical $2
- fi
- if [ ${commands_indicator[$COMPARE_X_ON_BOUNDARY]} -ne 0 ] ; then
- run_trapped_test test_traits data/$1/points \
- data/$1/xcurves data/$1/curves data/$1/compare_x_on_boundary $2
- fi
- if [ ${commands_indicator[$COMPARE_X_NEAR_BOUNDARY]} -ne 0 ] ; then
- run_trapped_test test_traits data/$1/points \
- data/$1/xcurves data/$1/curves data/$1/compare_x_near_boundary $2
- fi
- if [ ${commands_indicator[$COMPARE_Y_NEAR_BOUNDARY]} -ne 0 ] ; then
- run_trapped_test test_traits data/$1/points \
- data/$1/xcurves data/$1/curves data/$1/compare_y_near_boundary $2
- fi
- if [ ${commands_indicator[$PARAMETER_SPACE_X]} -ne 0 ] ; then
- run_trapped_test test_traits data/$1/points \
- data/$1/xcurves data/$1/curves data/$1/parameter_space_x $2
- fi
- if [ ${commands_indicator[$PARAMETER_SPACE_Y]} -ne 0 ] ; then
- run_trapped_test test_traits data/$1/points \
- data/$1/xcurves data/$1/curves data/$1/parameter_space_y $2
- fi
- if [ ${commands_indicator[$COMPARE_Y_AT_X]} -ne 0 ] ; then
- run_trapped_test test_traits data/$1/points \
- data/$1/xcurves data/$1/curves data/$1/compare_y_at_x $2
- fi
- if [ ${commands_indicator[$COMPARE_Y_AT_X_LEFT]} -ne 0 ] ; then
- run_trapped_test test_traits data/$1/points \
- data/$1/xcurves data/$1/curves data/$1/compare_y_at_x_left $2
- fi
- if [ ${commands_indicator[$COMPARE_Y_AT_X_RIGHT]} -ne 0 ] ; then
- run_trapped_test test_traits data/$1/points \
- data/$1/xcurves data/$1/curves data/$1/compare_y_at_x_right $2
- fi
- if [ ${commands_indicator[$MAKE_X_MONOTONE]} -ne 0 ] ; then
- run_trapped_test test_traits data/$1/points \
- data/$1/xcurves data/$1/curves data/$1/make_x_monotone $2
- fi
- if [ ${commands_indicator[$INTERSECT]} -ne 0 ] ; then
- run_trapped_test test_traits data/$1/points \
- data/$1/xcurves data/$1/curves data/$1/intersect $2
- fi
- if [ ${commands_indicator[$SPLIT]} -ne 0 ] ; then
- run_trapped_test test_traits data/$1/points \
- data/$1/xcurves data/$1/curves data/$1/split $2
- fi
- if [ ${commands_indicator[$ARE_MERGEABLE]} -ne 0 ] ; then
- run_trapped_test test_traits data/$1/points \
- data/$1/xcurves data/$1/curves data/$1/are_mergeable $2
- fi
- if [ ${commands_indicator[$MERGE]} -ne 0 ] ; then
- run_trapped_test test_traits data/$1/points \
- data/$1/xcurves data/$1/curves data/$1/merge $2
- fi
- if [ ${commands_indicator[$ASSERTIONS]} -ne 0 ] ; then
- run_trapped_test test_traits data/$1/points \
- data/$1/xcurves data/$1/curves data/$1/assertions $2
- fi
- if [ ${commands_indicator[$CONSTRUCTOR]} -ne 0 ] ; then
- run_trapped_test test_traits data/$1/points \
- data/$1/xcurves data/$1/curves data/$1/constructor $2
- fi
- if [ ${commands_indicator[$EQUAL]} -ne 0 ] ; then
- run_trapped_test test_traits data/$1/points \
- data/$1/xcurves data/$1/curves data/$1/equal $2
- fi
- if [ ${commands_indicator[$PUSH_BACK]} -ne 0 ] ; then
- run_trapped_test test_traits data/$1/points \
- data/$1/xcurves data/$1/curves data/$1/push_back $2
- fi
- if [ ${commands_indicator[$PUSH_FRONT]} -ne 0 ] ; then
- run_trapped_test test_traits data/$1/points \
- data/$1/xcurves data/$1/curves data/$1/push_front $2
- fi
- if [ ${commands_indicator[$NUMBER_OF_POINTS]} -ne 0 ] ; then
- run_trapped_test test_traits data/$1/points \
- data/$1/xcurves data/$1/curves data/$1/number_of_points $2
- fi
- if [ ${commands_indicator[$COMPARE_ENDPOINTS_XY]} -ne 0 ] ; then
- run_trapped_test test_traits data/$1/points \
- data/$1/xcurves data/$1/curves data/$1/compare_endpoints_xy $2
- fi
- if [ ${commands_indicator[$CONSTRUCT_OPPOSITE]} -ne 0 ] ; then
- run_trapped_test test_traits data/$1/points \
- data/$1/xcurves data/$1/curves data/$1/construct_opposite $2
- fi
- if [ ${commands_indicator[$TRIM]} -ne 0 ] ; then
- run_trapped_test test_traits data/$1/points \
- data/$1/xcurves data/$1/curves data/$1/trim $2
- fi
-}
-
-execute_commands_traits_adaptor()
-{
-
-# the new structure is not default, so this function executes only
-# commands that are given as arguments
-
- commands_indicator[PARAMETER_SPACE_X]=0
- commands_indicator[PARAMETER_SPACE_Y]=0
- commands_indicator[COMPARE_X_ON_BOUNDARY]=0
- commands_indicator[COMPARE_X_NEAR_BOUNDARY]=0
- commands_indicator[COMPARE_Y_NEAR_BOUNDARY]=0
- commands_indicator[COMPARE_Y_AT_X_LEFT]=0
- commands_indicator[ARE_MERGEABLE]=0
- commands_indicator[MERGE]=0
- commands_indicator[X_ON_IDENTIFICATION]=0
- commands_indicator[Y_ON_IDENTIFICATION]=0
- commands_indicator[IS_BOUNDED]=0
- commands_indicator[IS_IN_X_RANGE]=0
- commands_indicator[COMPARE_Y_POSITION]=0
- commands_indicator[IS_BETWEEN_CW]=0
- commands_indicator[COMPARE_CW_AROUND_POINT]=0
-
- i=1
- if [ $# -gt 2 ] ; then
- for arg in $* ; do
- if [ $i -gt 2 ] ; then
- commands_indicator[$arg]=1
- fi
- let "i+=1"
- done
- fi
-
- if [ ${commands_indicator[$PARAMETER_SPACE_X]} -ne 0 ] ; then
- run_trapped_test test_traits_adaptor data/test_adaptor/$1/points \
- data/test_adaptor/$1/xcurves data/test_adaptor/$1/curves \
- data/test_adaptor/$1/parameter_space_x $2
- fi
- if [ ${commands_indicator[$PARAMETER_SPACE_Y]} -ne 0 ] ; then
- run_trapped_test test_traits_adaptor data/test_adaptor/$1/points \
- data/test_adaptor/$1/xcurves data/test_adaptor/$1/curves \
- data/test_adaptor/$1/parameter_space_y $2
- fi
- if [ ${commands_indicator[$COMPARE_X_ON_BOUNDARY]} -ne 0 ] ; then
- run_trapped_test test_traits_adaptor data/test_adaptor/$1/points \
- data/test_adaptor/$1/xcurves data/test_adaptor/$1/curves \
- data/test_adaptor/$1/compare_x_on_boundary $2
- fi
- if [ ${commands_indicator[$COMPARE_X_NEAR_BOUNDARY]} -ne 0 ] ; then
- run_trapped_test test_traits_adaptor data/test_adaptor/$1/points \
- data/test_adaptor/$1/xcurves data/test_adaptor/$1/curves \
- data/test_adaptor/$1/compare_x_near_boundary $2
- fi
-
- if [ ${commands_indicator[$COMPARE_Y_NEAR_BOUNDARY]} -ne 0 ] ; then
- run_trapped_test test_traits_adaptor data/test_adaptor/$1/points \
- data/test_adaptor/$1/xcurves data/test_adaptor/$1/curves \
- data/test_adaptor/$1/compare_y_near_boundary $2
- fi
- if [ ${commands_indicator[$COMPARE_Y_AT_X_LEFT]} -ne 0 ] ; then
- run_trapped_test test_traits_adaptor data/test_adaptor/$1/points \
- data/test_adaptor/$1/xcurves data/test_adaptor/$1/curves \
- data/test_adaptor/$1/compare_y_at_x_left $2
- fi
- if [ ${commands_indicator[$ARE_MERGEABLE]} -ne 0 ] ; then
- run_trapped_test test_traits_adaptor data/test_adaptor/$1/points \
- data/test_adaptor/$1/xcurves data/test_adaptor/$1/curves \
- data/test_adaptor/$1/are_mergeable $2
- fi
- if [ ${commands_indicator[$MERGE]} -ne 0 ] ; then
- run_trapped_test test_traits_adaptor data/test_adaptor/$1/points \
- data/test_adaptor/$1/xcurves data/test_adaptor/$1/curves \
- data/test_adaptor/$1/merge $2
- fi
- if [ ${commands_indicator[X_ON_IDENTIFICATION]} -ne 0 ] ; then
- run_trapped_test test_traits_adaptor data/test_adaptor/$1/points \
- data/test_adaptor/$1/xcurves data/test_adaptor/$1/curves \
- data/test_adaptor/$1/x_on_idintification $2
- fi
- if [ ${commands_indicator[Y_ON_IDENTIFICATION]} -ne 0 ] ; then
- run_trapped_test test_traits_adaptor data/test_adaptor/$1/points \
- data/test_adaptor/$1/xcurves data/test_adaptor/$1/curves \
- data/test_adaptor/$1/x_on_idintification $2
- fi
- if [ ${commands_indicator[IS_BOUNDED]} -ne 0 ] ; then
- run_trapped_test test_traits_adaptor data/test_adaptor/$1/points \
- data/test_adaptor/$1/xcurves data/test_adaptor/$1/curves \
- data/test_adaptor/$1/is_bounded $2
- fi
- if [ ${commands_indicator[IS_IN_X_RANGE]} -ne 0 ] ; then
- run_trapped_test test_traits_adaptor data/test_adaptor/$1/points \
- data/test_adaptor/$1/xcurves data/test_adaptor/$1/curves \
- data/test_adaptor/$1/is_in_x_range $2
- fi
- if [ ${commands_indicator[COMPARE_Y_POSITION]} -ne 0 ] ; then
- run_trapped_test test_traits_adaptor data/test_adaptor/$1/points \
- data/test_adaptor/$1/xcurves data/test_adaptor/$1/curves \
- data/test_adaptor/$1/compare_y_position $2
- fi
- if [ ${commands_indicator[IS_BETWEEN_CW]} -ne 0 ] ; then
- run_trapped_test test_traits_adaptor data/test_adaptor/$1/points \
- data/test_adaptor/$1/xcurves data/test_adaptor/$1/curves \
- data/test_adaptor/$1/is_between_cw $2
- fi
- if [ ${commands_indicator[COMPARE_CW_AROUND_POINT]} -ne 0 ] ; then
- run_trapped_test test_traits_adaptor data/test_adaptor/$1/points \
- data/test_adaptor/$1/xcurves data/test_adaptor/$1/curves \
- data/test_adaptor/$1/compare_cw_around_point $2
- fi
-}
-
-#---------------------------------------------------------------------#
-# traits adaptor (segments traits)
-#---------------------------------------------------------------------#
-test_segment_traits_adaptor()
-{
- local nt=$QUOTIENT_MP_FLOAT_NT;
- local kernel=$CARTESIAN_KERNEL;
- local geom_traits=$SEGMENT_GEOM_TRAITS;
- local flags="-DTEST_NT=$nt -DTEST_KERNEL=$kernel -DTEST_GEOM_TRAITS=$geom_traits";
-
- compile_test_with_flags test_traits_adaptor segments "$flags"
- if [ -n "${SUCCESS}" ] ; then
- execute_commands_traits_adaptor segments segments_traits_adaptor \
- COMPARE_Y_POSITION COMPARE_CW_AROUND_POINT COMPARE_Y_AT_X_LEFT \
- ARE_MERGEABLE MERGE IS_IN_X_RANGE IS_BETWEEN_CW
- else
- echo " ERROR: not executed test_traits_adaptor segment_traits" >> $ERRORFILE
- fi
- clean_tests
-}
-
-#---------------------------------------------------------------------#
-# traits adaptor (linear traits)
-#---------------------------------------------------------------------#
-test_linear_traits_adaptor()
-{
- local nt=$QUOTIENT_MP_FLOAT_NT;
- local kernel=$CARTESIAN_KERNEL;
- local geom_traits=$LINEAR_GEOM_TRAITS;
- local flags="-DTEST_NT=$nt -DTEST_KERNEL=$kernel -DTEST_GEOM_TRAITS=$geom_traits";
-
- compile_test_with_flags test_traits_adaptor linear "$flags"
- if [ -n "${SUCCESS}" ] ; then
- execute_commands_traits_adaptor linear linear_traits_adaptor \
- COMPARE_Y_AT_X_LEFT ARE_MERGEABLE MERGE IS_IN_X_RANGE \
- COMPARE_Y_POSITION IS_BETWEEN_CW COMPARE_CW_AROUND_POINT
- else
- echo " ERROR: not executed test_traits_adaptor linear_traits" >> $ERRORFILE
- fi
- clean_tests
-}
-
-#---------------------------------------------------------------------#
-# traits adaptor (spherical arcs traits)
-#---------------------------------------------------------------------#
-test_spherical_arcs_traits_adaptor()
-{
- local nt=$CGAL_GMPQ_NT;
- local kernel=$CARTESIAN_KERNEL;
- local geom_traits=$GEODESIC_ARC_ON_SPHERE_GEOM_TRAITS;
- local topol_traits=$SPHERICAL_TOPOL_TRAITS
- local flags="-DTEST_NT=$nt -DTEST_KERNEL=$kernel -DTEST_GEOM_TRAITS=$geom_traits -DTEST_TOPOL_TRAITS=$topol_traits";
-
- compile_test_with_flags test_traits_adaptor geodesic_arcs_on_sphere "$flags"
- if [ -n "${SUCCESS}" ] ; then
- execute_commands_traits_adaptor spherical_arcs spherical_arcs_traits_adaptor \
- COMPARE_Y_AT_X_LEFT ARE_MERGEABLE MERGE IS_IN_X_RANGE \
- COMPARE_Y_POSITION IS_BETWEEN_CW COMPARE_CW_AROUND_POINT
- else
- echo " ERROR: not executed test_traits_adaptor spherical_arcs_traits" >> $ERRORFILE
- fi
- clean_tests
-}
-
-#---------------------------------------------------------------------#
-# compile and run test with traits
-#---------------------------------------------------------------------#
-compile_and_run_with_flags()
-{
- local name=$1;
- local type=$2;
- local flags=$3;
-
- compile_test_with_flags $name $type "$flags"
- if [ -n "${SUCCESS}" ] ; then
- if [ -n "$DO_RUN" ] ; then
- run_test_with_flags $name $type
- fi
- else
- echo " ERROR: not executed construction of segments" >> $ERRORFILE
- fi
- clean_tests
-}
-
-#---------------------------------------------------------------------#
-# construction with segments
-#---------------------------------------------------------------------#
-test_construction_segments()
-{
- local nt=$CGAL_GMPQ_NT;
- local kernel=$CARTESIAN_KERNEL;
- local geom_traits=$SEGMENT_GEOM_TRAITS;
- local flags="-DTEST_NT=$nt -DTEST_KERNEL=$kernel -DTEST_GEOM_TRAITS=$geom_traits";
- compile_and_run_with_flags test_construction segments "$flags"
-}
-
-#---------------------------------------------------------------------#
-# construction with linear curves
-#---------------------------------------------------------------------#
-test_construction_linear_curves()
-{
- local nt=$CGAL_GMPQ_NT;
- local kernel=$CARTESIAN_KERNEL;
- local geom_traits=$LINEAR_GEOM_TRAITS;
- local topol_traits=$PLANAR_UNBOUNDED_TOPOL_TRAITS;
- local flags="-DTEST_NT=$nt -DTEST_KERNEL=$kernel -DTEST_GEOM_TRAITS=$geom_traits -DTEST_TOPOL_TRAITS=$topol_traits";
- compile_and_run_with_flags test_construction linear "$flags"
-}
-
-#---------------------------------------------------------------------#
-# construction with geodesic arcs on the sphere
-#---------------------------------------------------------------------#
-test_construction_spherical_arcs()
-{
- local nt=$CGAL_GMPQ_NT;
- local kernel=$CARTESIAN_KERNEL;
- local geom_traits=$GEODESIC_ARC_ON_SPHERE_GEOM_TRAITS;
- local topol_traits=$SPHERICAL_TOPOL_TRAITS;
- local flags="-DTEST_NT=$nt -DTEST_KERNEL=$kernel -DTEST_GEOM_TRAITS=$geom_traits -DTEST_TOPOL_TRAITS=$topol_traits";
- compile_and_run_with_flags test_construction geodesic_arcs_on_sphere "$flags"
-}
-
-#---------------------------------------------------------------------#
-# construction with polylines
-#---------------------------------------------------------------------#
-test_construction_polylines()
-{
- local nt=$CGAL_GMPQ_NT;
- local kernel=$CARTESIAN_KERNEL;
- local geom_traits=$POLYLINE_GEOM_TRAITS;
- local flags="-DTEST_NT=$nt -DTEST_KERNEL=$kernel -DTEST_GEOM_TRAITS=$geom_traits";
- compile_and_run_with_flags test_construction polylines "$flags"
-}
-
-#---------------------------------------------------------------------#
-# overlay with segments
-#---------------------------------------------------------------------#
-test_overlay_segments()
-{
- local nt=$CGAL_GMPQ_NT;
- local kernel=$CARTESIAN_KERNEL;
- local geom_traits=$SEGMENT_GEOM_TRAITS;
- local flags="-DTEST_NT=$nt -DTEST_KERNEL=$kernel -DTEST_GEOM_TRAITS=$geom_traits";
- compile_and_run_with_flags test_overlay segments "$flags"
-}
-
-#---------------------------------------------------------------------#
-# overlay with geodesic arcs on the sphere
-#---------------------------------------------------------------------#
-test_overlay_spherical_arcs()
-{
- local nt=$CGAL_GMPQ_NT;
- local kernel=$CARTESIAN_KERNEL;
- local geom_traits=$GEODESIC_ARC_ON_SPHERE_GEOM_TRAITS;
- local topol_traits=$SPHERICAL_TOPOL_TRAITS;
- local flags="-DTEST_NT=$nt -DTEST_KERNEL=$kernel -DTEST_GEOM_TRAITS=$geom_traits -DTEST_TOPOL_TRAITS=$topol_traits";
- compile_and_run_with_flags test_overlay geodesic_arcs_on_sphere "$flags"
-}
-
-#---------------------------------------------------------------------#
-# point location with segments
-#---------------------------------------------------------------------#
-test_point_location_segments()
-{
- local nt=$CGAL_GMPQ_NT;
- local kernel=$CARTESIAN_KERNEL;
- local geom_traits=$SEGMENT_GEOM_TRAITS;
- local flags="-DTEST_NT=$nt -DTEST_KERNEL=$kernel -DTEST_GEOM_TRAITS=$geom_traits";
- compile_and_run_with_flags test_point_location segments "$flags"
-}
-
-# For backward compatibility
-test_point_location_segments_conversion()
-{
- local nt=$CGAL_GMPQ_NT;
- local kernel=$CARTESIAN_KERNEL;
- local geom_traits=$SEGMENT_GEOM_TRAITS;
- local flags="-DTEST_NT=$nt -DTEST_KERNEL=$kernel -DTEST_GEOM_TRAITS=$geom_traits -DCGAL_ARR_POINT_LOCATION_CONVERSION";
- compile_and_run_with_flags test_point_location segments "$flags"
-}
-
-#---------------------------------------------------------------------#
-# point location dynamic with segments
-#---------------------------------------------------------------------#
-test_point_location_dynamic_segments()
-{
- local nt=$CGAL_GMPQ_NT;
- local kernel=$CARTESIAN_KERNEL;
- local geom_traits=$SEGMENT_GEOM_TRAITS;
- local flags="-DTEST_NT=$nt -DTEST_KERNEL=$kernel -DTEST_GEOM_TRAITS=$geom_traits";
- compile_and_run_with_flags test_point_location_dynamic segments "$flags"
-}
-
-#---------------------------------------------------------------------#
-# point location with circle segments
-#---------------------------------------------------------------------#
-test_point_location_circle_segments()
-{
- local nt=$CGAL_GMPQ_NT;
- local kernel=$CARTESIAN_KERNEL;
- local geom_traits=$CIRCLE_SEGMENT_GEOM_TRAITS;
- local flags="-DTEST_NT=$nt -DTEST_KERNEL=$kernel -DTEST_GEOM_TRAITS=$geom_traits";
- compile_and_run_with_flags test_point_location circle_segments "$flags"
-}
-
-#---------------------------------------------------------------------#
-# point location with linear objects
-#---------------------------------------------------------------------#
-test_point_location_linear()
-{
- local nt=$CGAL_GMPQ_NT;
- local kernel=$CARTESIAN_KERNEL;
- local geom_traits=$LINEAR_GEOM_TRAITS;
- local flags="-DTEST_NT=$nt -DTEST_KERNEL=$kernel -DTEST_GEOM_TRAITS=$geom_traits";
- compile_and_run_with_flags test_point_location linear "$flags"
-}
-
-#---------------------------------------------------------------------#
-# batchecd point location with segments
-#---------------------------------------------------------------------#
-test_batched_point_location_segments()
-{
- local nt=$CGAL_GMPQ_NT;
- local kernel=$CARTESIAN_KERNEL;
- local geom_traits=$SEGMENT_GEOM_TRAITS;
- local flags="-DTEST_NT=$nt -DTEST_KERNEL=$kernel -DTEST_GEOM_TRAITS=$geom_traits";
- compile_and_run_with_flags test_batched_point_location segments "$flags"
-}
-
-#---------------------------------------------------------------------#
-# batchecd point location with linear objects
-#---------------------------------------------------------------------#
-test_batched_point_location_linear()
-{
- local nt=$CGAL_GMPQ_NT;
- local kernel=$CARTESIAN_KERNEL;
- local geom_traits=$LINEAR_GEOM_TRAITS;
- local flags="-DTEST_NT=$nt -DTEST_KERNEL=$kernel -DTEST_GEOM_TRAITS=$geom_traits";
- compile_and_run_with_flags test_batched_point_location linear "$flags"
-}
-
-#---------------------------------------------------------------------#
-# batchecd point location with geodesic arcs on the sphere
-#---------------------------------------------------------------------#
-test_batched_point_location_spherical_arcs()
-{
- local nt=$CGAL_GMPQ_NT;
- local kernel=$CARTESIAN_KERNEL;
- local geom_traits=$GEODESIC_ARC_ON_SPHERE_GEOM_TRAITS;
- local topol_traits=$SPHERICAL_TOPOL_TRAITS;
- local flags="-DTEST_NT=$nt -DTEST_KERNEL=$kernel -DTEST_GEOM_TRAITS=$geom_traits -DTEST_TOPOL_TRAITS=$topol_traits";
- compile_and_run_with_flags test_batched_point_location geodesic_arcs_on_sphere "$flags"
-}
-
-#---------------------------------------------------------------------#
-# vertical decomposition with segments
-#---------------------------------------------------------------------#
-test_vertical_decomposition_segments()
-{
- local nt=$CGAL_GMPQ_NT;
- local kernel=$CARTESIAN_KERNEL;
- local geom_traits=$SEGMENT_GEOM_TRAITS;
- local flags="-DTEST_NT=$nt -DTEST_KERNEL=$kernel -DTEST_GEOM_TRAITS=$geom_traits";
- compile_and_run_with_flags test_vertical_decomposition segments "$flags"
-}
-
-#---------------------------------------------------------------------#
-# vertical decomposition with linear objects
-#---------------------------------------------------------------------#
-test_vertical_decomposition_linear()
-{
- local nt=$CGAL_GMPQ_NT;
- local kernel=$CARTESIAN_KERNEL;
- local geom_traits=$LINEAR_GEOM_TRAITS;
- local flags="-DTEST_NT=$nt -DTEST_KERNEL=$kernel -DTEST_GEOM_TRAITS=$geom_traits";
- compile_and_run_with_flags test_vertical_decomposition linear "$flags"
-}
-
-#---------------------------------------------------------------------#
-# vertical decomposition with geodesic arcs on the sphere
-#---------------------------------------------------------------------#
-test_vertical_decomposition_spherical_arcs()
-{
- local nt=$CGAL_GMPQ_NT;
- local kernel=$CARTESIAN_KERNEL;
- local geom_traits=$LINEAR_GEOM_TRAITS;
- local topol_traits=$SPHERICAL_TOPOL_TRAITS;
- local flags="-DTEST_NT=$nt -DTEST_KERNEL=$kernel -DTEST_GEOM_TRAITS=$geom_traits -DTEST_TOPOL_TRAITS=$topol_traits";
- compile_and_run_with_flags test_vertical_decomposition geodesic_arcs_on_sphere "$flags"
-}
-
-#---------------------------------------------------------------------#
-# segment traits
-#---------------------------------------------------------------------#
-test_segment_traits()
-{
- local nt=$QUOTIENT_MP_FLOAT_NT;
- local kernel=$CARTESIAN_KERNEL;
- local geom_traits=$SEGMENT_GEOM_TRAITS;
- local flags="-DTEST_NT=$nt -DTEST_KERNEL=$kernel -DTEST_GEOM_TRAITS=$geom_traits";
-
- compile_test_with_flags test_traits segments "$flags"
- if [ -n "${SUCCESS}" ] ; then
- execute_commands_old_structure segments segment_traits \
- VERTEX IS_VERTICAL COMPARE_Y_AT_X COMPARE_Y_AT_X_LEFT CONSTRUCTOR \
- COMPARE_Y_AT_X_RIGHT ARE_MERGEABLE
-
- execute_commands_new_structure segments segment_traits \
- IS_VERTICAL COMPARE_Y_AT_X COMPARE_Y_AT_X_LEFT ARE_MERGEABLE
-
- run_trapped_test test_traits \
- data/segments/vertex.pt data/segments/xcurves \
- data/empty.zero data/segments/vertex segment_traits
- else
- echo " ERROR: not executed test_traits segment_traits" >> $ERRORFILE
- fi
- clean_tests
-}
-
-#---------------------------------------------------------------------#
-# non-caching segment traits
-#---------------------------------------------------------------------#
-test_non_caching_segment_traits()
-{
- local nt=$CGAL_GMPQ_NT;
- local kernel=$CARTESIAN_KERNEL;
- local geom_traits=$NON_CACHING_SEGMENT_GEOM_TRAITS;
- local flags="-DTEST_NT=$nt -DTEST_KERNEL=$kernel -DTEST_GEOM_TRAITS=$geom_traits";
-
- compile_test_with_flags test_traits non_caching_segments "$flags"
- if [ -n "${SUCCESS}" ] ; then
- execute_commands_old_structure segments non_caching_segment_traits \
- VERTEX IS_VERTICAL COMPARE_Y_AT_X COMPARE_Y_AT_X_LEFT CONSTRUCTOR \
- COMPARE_Y_AT_X_RIGHT ARE_MERGEABLE ASSERTIONS
-
- execute_commands_new_structure segments segment_traits \
- IS_VERTICAL COMPARE_Y_AT_X COMPARE_Y_AT_X_LEFT
-
- run_trapped_test test_traits \
- data/segments/vertex.pt data/segments/xcurves \
- data/empty.zero data/segments/vertex non_caching_segment_traits
- else
- echo " ERROR: not executed test_traits non_caching_segment_traits" >> $ERRORFILE
- fi
- clean_tests
-}
-
-#---------------------------------------------------------------------#
-# polycurve conic traits
-#---------------------------------------------------------------------#
-test_polycurve_conic_traits()
-{
- if [ -n "${CGAL_DISABLE_GMP}" ]; then
- echo "CORE is not available, test_polycurve_conic_traits not ran"
- return
- fi
- echo polycurve test starting
- local nt=$CORE_EXPR_NT;
- local kernel=$CARTESIAN_KERNEL;
- local geom_traits=$POLYCURVE_CONIC_GEOM_TRAITS;
- local flags="-DTEST_NT=$nt -DTEST_KERNEL=$kernel -DTEST_GEOM_TRAITS=$geom_traits";
-
- compile_test_with_flags test_traits conic_polycurve "$flags"
- if [ -n "${SUCCESS}" ] ; then
-
- # The input arguments for the execute_commands_new_structure,
- # 1. polycurve_conics is the directory name in "data"
- # 2. polycurve_conic_traits is a string
- # Execute_command_new_structure will only run the test on functors provided as the third, fourth and so on arguments.
- # To see how the input data directory should be structured for each functor, check the execute_commands_new_structure function in this file.
- execute_commands_new_structure polycurves_conics polycurve_conic_traits \
- COMPARE_Y_AT_X \
- INTERSECT \
- EQUAL \
- IS_VERTICAL \
- SPLIT \
- ARE_MERGEABLE \
- COMPARE_Y_AT_X_LEFT \
- COMPARE_Y_AT_X_RIGHT \
- MAKE_X_MONOTONE \
- PUSH_BACK \
- PUSH_FRONT \
- NUMBER_OF_POINTS \
- VERTEX \
- CONSTRUCT_OPPOSITE \
- MERGE \
- COMPARE_ENDPOINTS_XY \
- TRIM
-
- else
- echo " ERROR: not executed test_traits polyline_traits" >> $ERRORFILE
- fi
- clean_tests
-}
-
-#---------------------------------------------------------------------#
-# polycurve arc traits
-#---------------------------------------------------------------------#
-test_polycurve_circular_arc_traits()
-{
- local nt=$QUOTIENT_MP_FLOAT_NT;
- local kernel=$CARTESIAN_KERNEL;
- local geom_traits=$POLYCURVE_CIRCULAR_ARC_GEOM_TRAITS;
- local flags="-DTEST_NT=$nt -DTEST_KERNEL=$kernel -DTEST_GEOM_TRAITS=$geom_traits";
-
- compile_test_with_flags test_traits circular_arc_polycurve "$flags"
- if [ -n "${SUCCESS}" ] ; then
- execute_commands_new_structure polycurves_circular_arcs polycurve_circular_arc_traits \
- COMPARE_Y_AT_X \
- EQUAL \
- IS_VERTICAL \
- SPLIT \
- ARE_MERGEABLE \
- COMPARE_Y_AT_X_LEFT \
- COMPARE_Y_AT_X_RIGHT \
- MAKE_X_MONOTONE \
- PUSH_BACK \
- PUSH_FRONT \
- NUMBER_OF_POINTS \
- VERTEX \
- CONSTRUCT_OPPOSITE \
- MERGE \
- COMPARE_ENDPOINTS_XY \
- INTERSECT
-
- else
- echo " ERROR: not executed test_traits polyline_traits" >> $ERRORFILE
- fi
- clean_tests
-}
-
-#---------------------------------------------------------------------#
-# polycurve bezier traits
-#---------------------------------------------------------------------#
-test_polycurve_bezier_traits()
-{
- if [ -n "${CGAL_DISABLE_GMP}" ]; then
- echo "CORE is not available, test_polycurve_bezier_traits not ran"
- return
- fi
- local nt=$CORE_EXPR_NT;
- local kernel=$CARTESIAN_KERNEL;
- local geom_traits=$POLYCURVE_BEZIER_GEOM_TRAITS;
- local flags="-DTEST_NT=$nt -DTEST_KERNEL=$kernel -DTEST_GEOM_TRAITS=$geom_traits";
-
- compile_test_with_flags test_traits bezier_polycurve "$flags"
- if [ -n "${SUCCESS}" ] ; then
- execute_commands_new_structure polycurves_bezier test_polycurve_bezier_traits \
- MERGE \
- EQUAL \
- IS_VERTICAL \
- NUMBER_OF_POINTS \
- PUSH_BACK \
- PUSH_FRONT \
- VERTEX \
- ARE_MERGEABLE \
- COMPARE_ENDPOINTS_XY
- # TODO (add data for these tests)
- # COMPARE_Y_AT_X \
- # SPLIT \
- # COMPARE_Y_AT_X_LEFT \
- # COMPARE_Y_AT_X_RIGHT \
- # MAKE_X_MONOTONE \
- # CONSTRUCT_OPPOSITE \
-
- # INTERSECT
-
- else
- echo " ERROR: not executed test_traits polyline_traits" >> $ERRORFILE
- fi
- clean_tests
-}
-
-#---------------------------------------------------------------------#
-# polyline traits
-#---------------------------------------------------------------------#
-test_polyline_traits()
-{
- local nt=$CGAL_GMPQ_NT;
- local kernel=$CARTESIAN_KERNEL;
- local geom_traits=$POLYLINE_GEOM_TRAITS;
- local flags="-DTEST_NT=$nt -DTEST_KERNEL=$kernel -DTEST_GEOM_TRAITS=$geom_traits";
-
- compile_test_with_flags test_traits test_polylines "$flags"
- if [ -n "${SUCCESS}" ] ; then
- execute_commands_old_structure polylines polyline_traits \
- CONSTRUCTOR COMPARE_Y_AT_X_LEFT \
- COMPARE_Y_AT_X_RIGHT ARE_MERGEABLE
- else
- echo " ERROR: not executed test_traits polyline_traits" >> $ERRORFILE
- fi
- clean_tests
-}
-
-#---------------------------------------------------------------------#
-# non-caching polyline traits
-#---------------------------------------------------------------------#
-test_non_caching_polyline_traits()
-{
- local nt=$CGAL_GMPQ_NT;
- local kernel=$CARTESIAN_KERNEL;
- local geom_traits=$NON_CACHING_POLYLINE_GEOM_TRAITS;
- local flags="-DTEST_NT=$nt -DTEST_KERNEL=$kernel -DTEST_GEOM_TRAITS=$geom_traits";
-
- compile_test_with_flags test_traits non_caching_polylines "$flags"
- if [ -n "${SUCCESS}" ] ; then
- execute_commands_old_structure polylines non_caching_polyline_traits \
- CONSTRUCTOR COMPARE_Y_AT_X_LEFT \
- COMPARE_Y_AT_X_RIGHT ARE_MERGEABLE
- else
- echo " ERROR: not executed test_traits non_caching_polyline_traits" >> $ERRORFILE
- fi
- clean_tests
-}
-
-#---------------------------------------------------------------------#
-# linear traits
-#---------------------------------------------------------------------#
-test_linear_traits()
-{
- local nt=$QUOTIENT_MP_FLOAT_NT;
- local kernel=$CARTESIAN_KERNEL;
- local geom_traits=$LINEAR_GEOM_TRAITS;
- local flags="-DTEST_NT=$nt -DTEST_KERNEL=$kernel -DTEST_GEOM_TRAITS=$geom_traits";
-
- compile_test_with_flags test_traits linear "$flags"
- if [ -n "${SUCCESS}" ] ; then
- execute_commands_old_structure linear/segments linear_traits.segments \
- VERTEX IS_VERTICAL COMPARE_Y_AT_X COMPARE_Y_AT_X_LEFT \
- COMPARE_Y_AT_X_RIGHT CONSTRUCTOR ARE_MERGEABLE
-
- execute_commands_new_structure linear/segments linear_traits.segments \
- IS_VERTICAL COMPARE_Y_AT_X COMPARE_Y_AT_X_LEFT
-
- run_trapped_test test_traits \
- data/linear/segments/vertex.pt data/linear/segments/xcurves \
- data/empty.zero data/linear/segments/vertex linear_traits.segments
-
- execute_commands_old_structure linear/rays linear_traits.rays \
- VERTEX IS_VERTICAL COMPARE_Y_AT_X COMPARE_Y_AT_X_LEFT \
- COMPARE_Y_AT_X_RIGHT CONSTRUCTOR ARE_MERGEABLE
-
- execute_commands_new_structure linear/rays linear_traits.rays \
- IS_VERTICAL COMPARE_Y_AT_X COMPARE_Y_AT_X_LEFT
-
- run_trapped_test test_traits \
- data/linear/rays/vertex.pt data/linear/rays/xcurves \
- data/empty.zero data/linear/rays/vertex linear_traits.rays
-
- execute_commands_new_structure linear/lines linear_traits.lines \
- IS_VERTICAL COMPARE_Y_AT_X COMPARE_Y_AT_X_LEFT INTERSECT \
- SPLIT MERGE \
- PARAMETER_SPACE_X PARAMETER_SPACE_Y \
- COMPARE_X_ON_BOUNDARY COMPARE_X_NEAR_BOUNDARY COMPARE_Y_NEAR_BOUNDARY
- else
- echo " ERROR: not executed test_traits linear_traits" >> $ERRORFILE
- fi
- clean_tests
-}
-
-#---------------------------------------------------------------------#
-# conic traits
-#---------------------------------------------------------------------#
-test_conic_traits()
-{
- if [ -n "${CGAL_DISABLE_GMP}" ]; then
- echo "CORE is not available, test_conic_traits not ran"
- return
- fi
- local nt=$CORE_EXPR_NT;
- local kernel=$CARTESIAN_KERNEL;
- local geom_traits=$CORE_CONIC_GEOM_TRAITS;
- local flags="-DTEST_NT=$nt -DTEST_KERNEL=$kernel -DTEST_GEOM_TRAITS=$geom_traits";
-
- compile_test_with_flags test_traits conics "$flags"
- if [ -n "${SUCCESS}" ] ; then
- execute_commands_old_structure conics conic_traits \
- INTERSECT SPLIT MERGE COMPARE_Y_AT_X_LEFT \
- COMPARE_Y_AT_X_RIGHT ARE_MERGEABLE
-
- execute_commands_new_structure conics conic_traits \
- INTERSECT SPLIT MERGE
-
- run_trapped_test test_traits \
- data/conics/compare.pt data/empty.zero \
- data/empty.zero data/conics/compare conic_traits
- else
- echo " ERROR: not executed test_traits conic_traits" >> $ERRORFILE
- fi
- clean_tests
-}
-
-#---------------------------------------------------------------------#
-# "line arcs" (segments) only
-#---------------------------------------------------------------------#
-test_line_arc_traits()
-{
- local nt=$QUOTIENT_MP_FLOAT_NT;
- local kernel=$CARTESIAN_KERNEL;
- local geom_traits=$LINE_ARC_GEOM_TRAITS;
- local flags="-DTEST_NT=$nt -DTEST_KERNEL=$kernel -DTEST_GEOM_TRAITS=$geom_traits";
-
- compile_test_with_flags test_traits line_arcs "$flags"
- if [ -n "${SUCCESS}" ] ; then
- execute_commands_old_structure circular_lines line_arc_traits \
- VERTEX IS_VERTICAL COMPARE_Y_AT_X COMPARE_Y_AT_X_LEFT \
- ASSERTIONS COMPARE_Y_AT_X_RIGHT MERGE ARE_MERGEABLE
-
- execute_commands_new_structure circular_lines line_arc_traits \
- IS_VERTICAL COMPARE_Y_AT_X
-
- run_trapped_test test_traits \
- data/circular_lines/compare.pt data/empty.zero \
- data/empty.zero data/circular_lines/compare line_arc_traits
-
- run_trapped_test test_traits \
- data/circular_lines/vertex.pt data/circular_lines/xcurves \
- data/empty.zero data/circular_lines/vertex line_arc_traits
- else
- echo " ERROR: not executed test_traits" >> $ERRORFILE
- fi
- clean_tests
-}
-
-#---------------------------------------------------------------------#
-# circular arcs only
-#---------------------------------------------------------------------#
-test_circular_arc_traits()
-{
- local nt=$QUOTIENT_MP_FLOAT_NT;
- local kernel=$CARTESIAN_KERNEL;
- local geom_traits=$CIRCULAR_ARC_GEOM_TRAITS;
- local flags="-DTEST_NT=$nt -DTEST_KERNEL=$kernel -DTEST_GEOM_TRAITS=$geom_traits";
-
- compile_test_with_flags test_traits circular_arcs "$flags"
- if [ -n "${SUCCESS}" ] ; then
- execute_commands_old_structure circular_arcs circular_arc_traits \
- VERTEX IS_VERTICAL COMPARE_Y_AT_X COMPARE_Y_AT_X_LEFT \
- ASSERTIONS COMPARE_Y_AT_X_RIGHT MERGE ARE_MERGEABLE
-
- execute_commands_new_structure circular_arcs circular_arc_traits \
- VERTEX IS_VERTICAL COMPARE_Y_AT_X
- else
- echo " ERROR: not executed test_traits" >> $ERRORFILE
- fi
- clean_tests
-}
-
-#---------------------------------------------------------------------#
-# circular and line arcs
-#---------------------------------------------------------------------#
-test_circular_line_arc_traits()
-{
- local nt=$QUOTIENT_MP_FLOAT_NT;
- local kernel=$CARTESIAN_KERNEL;
- local geom_traits=$CIRCULAR_LINE_ARC_GEOM_TRAITS;
- local flags="-DTEST_NT=$nt -DTEST_KERNEL=$kernel -DTEST_GEOM_TRAITS=$geom_traits";
-
- compile_test_with_flags test_traits circular_line_arcs "$flags"
- if [ -n "${SUCCESS}" ] ; then
- execute_commands_old_structure circular_line_arcs circular_line_arc_traits \
- VERTEX IS_VERTICAL CONSTRUCTOR COMPARE_Y_AT_X COMPARE_Y_AT_X_LEFT \
- ASSERTIONS COMPARE_Y_AT_X_RIGHT MERGE ARE_MERGEABLE
-
- execute_commands_new_structure circular_line_arcs circular_line_arc_traits \
- IS_VERTICAL COMPARE_Y_AT_X
-
- run_trapped_test test_traits \
- data/circular_line_arcs/vertex.pt data/circular_line_arcs/xcurves \
- data/empty.zero data/circular_line_arcs/vertex circular_line_arc_traits
- else
- echo " ERROR: not executed test_traits circular_line_arc_traits" >> $ERRORFILE
- fi
- clean_tests
-}
-
-#---------------------------------------------------------------------#
-# circle segment traits
-#---------------------------------------------------------------------#
-test_circle_segments_traits()
-{
- local nt=$QUOTIENT_MP_FLOAT_NT;
- local kernel=$CARTESIAN_KERNEL;
- local geom_traits=$CIRCLE_SEGMENT_GEOM_TRAITS;
- local flags="-DTEST_NT=$nt -DTEST_KERNEL=$kernel -DTEST_GEOM_TRAITS=$geom_traits";
-
- compile_test_with_flags test_traits circle_segments "$flags"
- if [ -n "${SUCCESS}" ] ; then
- execute_commands_old_structure circle_segments circle_segments_traits \
- VERTEX IS_VERTICAL COMPARE_Y_AT_X COMPARE_Y_AT_X_LEFT \
- COMPARE_Y_AT_X_RIGHT CONSTRUCTOR ARE_MERGEABLE
-
- run_trapped_test test_traits \
- data/circle_segments/points data/circle_segments/xcurves.8 \
- data/empty.zero data/circle_segments/vertex circle_segments_traits
- run_trapped_test test_traits \
- data/empty.zero data/circle_segments/xcurves.8 \
- data/empty.zero data/circle_segments/is_vertical circle_segments_traits
- run_trapped_test test_traits \
- data/circle_segments/points data/circle_segments/xcurves.8 \
- data/empty.zero data/circle_segments/compare_y_at_x circle_segments_traits
- run_trapped_test test_traits \
- data/circle_segments/points data/circle_segments/xcurves.16 \
- data/empty.zero data/circle_segments/compare_y_at_x_left circle_segments_traits
- run_trapped_test test_traits \
- data/circle_segments/points data/circle_segments/xcurves.16 \
- data/empty.zero data/circle_segments/compare_y_at_x_right circle_segments_traits
- run_trapped_test test_traits \
- data/empty.zero data/circle_segments/constructor.xcv \
- data/empty.zero data/circle_segments/constructor circle_segments_traits
- else
- echo " ERROR: not executed test_traits circle_segments_traits" >> $ERRORFILE
- fi
- clean_tests
-}
-
-#---------------------------------------------------------------------#
-# bezier traits
-#---------------------------------------------------------------------#
-test_bezier_traits()
-{
- if [ -n "${CGAL_DISABLE_GMP}" ]; then
- echo "CORE is not available, test_bezier_traits not ran"
- return
- fi
- local nt=$CORE_EXPR_NT;
- local kernel=$CARTESIAN_KERNEL;
- local geom_traits=$BEZIER_GEOM_TRAITS;
- local flags="-DTEST_NT=$nt -DTEST_KERNEL=$kernel -DTEST_GEOM_TRAITS=$geom_traits";
-
- compile_test_with_flags test_traits Bezier "$flags"
- if [ -n "${SUCCESS}" ] ; then
- execute_commands_old_structure bezier bezier_traits \
- COMPARE_Y_AT_X_LEFT COMPARE_Y_AT_X_RIGHT SPLIT \
- CONSTRUCTOR ASSERTIONS ARE_MERGEABLE
- else
- echo " ERROR: not executed test_traits bezier_traits" >> $ERRORFILE
- fi
- clean_tests
-}
-
-#---------------------------------------------------------------------#
-# spherical arc traits
-#---------------------------------------------------------------------#
-test_spherical_arc_traits()
-{
- local nt=$CGAL_GMPQ_NT;
- local kernel=$CARTESIAN_KERNEL;
- local geom_traits=$GEODESIC_ARC_ON_SPHERE_GEOM_TRAITS;
- local topol_traits=$SPHERICAL_TOPOL_TRAITS
- local flags="-DTEST_NT=$nt -DTEST_KERNEL=$kernel -DTEST_GEOM_TRAITS=$geom_traits -DTEST_TOPOL_TRAITS=$topol_traits";
-
- compile_test_with_flags test_traits geodesic_arcs_on_sphere "$flags"
- if [ -n "${SUCCESS}" ] ; then
- execute_commands_old_structure spherical_arcs spherical_arc_traits \
- COMPARE_Y_AT_X_LEFT COMPARE_Y_AT_X_RIGHT INTERSECT \
- CONSTRUCTOR \
- COMPARE MAKE_X_MONOTONE SPLIT MERGE ASSERTIONS ARE_MERGEABLE
-
- execute_commands_new_structure spherical_arcs spherical_arc_traits \
- INTERSECT \
- COMPARE_X_ON_BOUNDARY COMPARE_X_NEAR_BOUNDARY \
- COMPARE_Y_NEAR_BOUNDARY
-
- run_trapped_test test_traits \
- data/spherical_arcs/compare.pt data/spherical_arcs/compare.xcv \
- data/empty.zero data/spherical_arcs/compare spherical_arc_traits
- else
- echo " ERROR: not executed test_traits spherical_arc_traits" >> $ERRORFILE
- fi
- clean_tests
-}
-
-#---------------------------------------------------------------------#
-# rational arc traits
-#---------------------------------------------------------------------#
-test_rational_arc_traits()
-{
- if [ -n "${CGAL_DISABLE_GMP}" ]; then
- echo "CORE is not available, test_rational_arc_traits not ran"
- return
- fi
- local nt=$CORE_INT_NT;
- local kernel=$UNIVARIATE_ALGEBRAIC_KERNEL;
- local geom_traits=$RATIONAL_ARC_GEOM_TRAITS;
- local flags="-DTEST_NT=$nt -DTEST_KERNEL=$kernel -DTEST_GEOM_TRAITS=$geom_traits";
-
- compile_test_with_flags test_traits rational_arcs "$flags"
- if [ -n "${SUCCESS}" ] ; then
- run_trapped_test test_traits \
- data/compare.pt data/empty.zero \
- data/empty.zero data/compare rational_arc_traits
-
- execute_commands_new_structure rational_arcs rational_arc_traits \
- VERTEX IS_VERTICAL COMPARE_Y_AT_X COMPARE_Y_AT_X_LEFT SPLIT MERGE \
- COMPARE_X_ON_BOUNDARY COMPARE_X_NEAR_BOUNDARY COMPARE_Y_NEAR_BOUNDARY
- else
- echo " ERROR: not executed test_traits rational_arc_traits" >> $ERRORFILE
- fi
- clean_tests
-}
-
-#---------------------------------------------------------------------#
-# algebraic traits with GMP/MPFI
-#---------------------------------------------------------------------#
-test_algebraic_traits_gmp()
-{
- #TODO: Adapt
-
- local nt=$CGAL_GMPZ_NT;
- local kernel=$UNIVARIATE_ALGEBRAIC_KERNEL;
- local geom_traits=$ALGEBRAIC_GEOM_TRAITS;
- local flags="-DTEST_NT=$nt -DTEST_KERNEL=$kernel -DTEST_GEOM_TRAITS=$geom_traits";
-
- compile_test_with_flags test_traits algebraic "$flags"
- if [ -n "${SUCCESS}" ] ; then
- execute_commands_new_structure algebraic algebraic_traits_gmp \
- COMPARE COMPARE_Y_AT_X COMPARE_Y_AT_X_RIGHT COMPARE_Y_AT_X_LEFT \
- MAKE_X_MONOTONE IS_VERTICAL VERTEX SPLIT MERGE INTERSECT \
- PARAMETER_SPACE_X PARAMETER_SPACE_Y
- else
- echo " ERROR: not executed test_traits algebraic_traits_gmp" >> $ERRORFILE
- fi
- clean_tests
-}
-
-#---------------------------------------------------------------------#
-# algebraic traits with LEDA
-#---------------------------------------------------------------------#
-test_algebraic_traits_leda()
-{
- #TODO: Adapt
-
- local nt=$LEDA_INT_NT;
- local kernel=$UNIVARIATE_ALGEBRAIC_KERNEL;
- local geom_traits=$ALGEBRAIC_GEOM_TRAITS;
- local flags="-DTEST_NT=$nt -DTEST_KERNEL=$kernel -DTEST_GEOM_TRAITS=$geom_traits";
-
- compile_test_with_flags test_traits algebraic "$flags"
- if [ -n "${SUCCESS}" ] ; then
- execute_commands_new_structure algebraic algebraic_traits_leda \
- COMPARE COMPARE_Y_AT_X COMPARE_Y_AT_X_RIGHT COMPARE_Y_AT_X_LEFT \
- MAKE_X_MONOTONE IS_VERTICAL VERTEX SPLIT MERGE INTERSECT \
- PARAMETER_SPACE_X PARAMETER_SPACE_Y
- else
- echo " ERROR: not executed test_traits algebraic_traits_leda" >> $ERRORFILE
- fi
- clean_tests
-}
-
-
-#---------------------------------------------------------------------#
-# algebraic traits with CORE
-#---------------------------------------------------------------------#
-test_algebraic_traits_core()
-{
- #TODO: Adapt
- if [ -n "${CGAL_DISABLE_GMP}" ]; then
- echo "CORE is not available, test_algebraic_traits_core not ran"
- return
- fi
- local nt=$CORE_INT_NT;
- local kernel=$UNIVARIATE_ALGEBRAIC_KERNEL;
- local geom_traits=$ALGEBRAIC_GEOM_TRAITS;
- local flags="-DTEST_NT=$nt -DTEST_KERNEL=$kernel -DTEST_GEOM_TRAITS=$geom_traits";
-
- compile_test_with_flags test_traits algebraic "$flags"
- if [ -n "${SUCCESS}" ] ; then
- execute_commands_new_structure algebraic algebraic_traits_core \
- COMPARE COMPARE_Y_AT_X COMPARE_Y_AT_X_RIGHT COMPARE_Y_AT_X_LEFT \
- MAKE_X_MONOTONE IS_VERTICAL VERTEX SPLIT MERGE INTERSECT \
- PARAMETER_SPACE_X PARAMETER_SPACE_Y
- else
- echo " ERROR: not executed test_traits algebraic_traits_core" >> $ERRORFILE
- fi
- clean_tests
-}
-
-#---------------------------------------------------------------------#
-# remove the previous error file
-#---------------------------------------------------------------------#
-
-rm -f $ERRORFILE
-rm -f $FULL_ERROR_DESCRIPTION_FILE
-rm -f ProgramOutput.test_*
-touch $ERRORFILE
-
-#---------------------------------------------------------------------#
-# compile and run the tests
-#---------------------------------------------------------------------#
-
-
-
-if [ $# -ne 0 ] ; then
- case $1 in
- -cmake) TEST_WITH_CMAKE="TRUE" ;;
- *)TEST_WITH_CMAKE="FALSE" ;;
- esac
-else
- TEST_WITH_CMAKE="FALSE"
-fi
-
-echo "Run all tests."
-
-if [ "${TEST_WITH_CMAKE}" != "FALSE" ]; then
- configure
-fi
-
-if [ "${TEST_WITH_CMAKE}" != "FALSE" ]; then
- compile_and_run construction_test_suite_generator
-fi
-
-test_segment_traits
-test_non_caching_segment_traits
-test_polyline_traits
-test_polycurve_conic_traits
-test_polycurve_circular_arc_traits
-test_polycurve_bezier_traits
-test_non_caching_polyline_traits
-test_linear_traits
-test_conic_traits
-
-test_line_arc_traits # "line arcs" (segments) only
-test_circular_arc_traits # circular arcs only
-test_circular_line_arc_traits # for both
-
-test_circle_segments_traits
-test_bezier_traits
-
-test_spherical_arc_traits
-
-test_rational_arc_traits
-
-test_algebraic_traits_core
-test_algebraic_traits_gmp
-test_algebraic_traits_leda
-
-compile_and_run test_data_traits
-
-compile_and_run test_insertion
-compile_and_run test_unbounded_rational_insertion
-compile_and_run test_unbounded_rational_direct_insertion
-compile_and_run test_rational_function_traits_2
-compile_and_run test_iso_verts
-
-compile_and_run test_vert_ray_shoot_vert_segments
-
-test_construction_segments
-test_construction_linear_curves
-test_construction_spherical_arcs
-test_construction_polylines
-
-test_overlay_segments
-test_overlay_spherical_arcs
-
-test_point_location_segments
-test_point_location_segments_conversion
-test_point_location_circle_segments
-test_point_location_linear
-
-test_point_location_dynamic_segments
-
-test_batched_point_location_segments
-test_batched_point_location_linear
-test_batched_point_location_spherical_arcs
-
-test_vertical_decomposition_segments
-test_vertical_decomposition_linear
-# test_vertical_decomposition_spherical_arcs
-
-compile_and_run test_dual
-compile_and_run test_do_intersect
-compile_and_run test_zone
-
-compile_and_run test_observer
-compile_and_run test_do_equal
-
-test_segment_traits_adaptor
-test_linear_traits_adaptor
-test_spherical_arcs_traits_adaptor
-
-compile_and_run test_removal
-compile_and_run test_unbounded_removal
-compile_and_run test_spherical_removal
-
-compile_and_run test_io
-
-compile_and_run test_sgm
-
-compile_and_run test_polycurve_intersection
-
-# if any error occurred then append the full error description file to error file
-
-if [ -f $FULL_ERROR_DESCRIPTION_FILE ] ; then
- echo "******************** appending all error outputs ********************" >> $ERRORFILE
- cat $FULL_ERROR_DESCRIPTION_FILE >> $ERRORFILE
-fi
diff --git a/BGL/examples/BGL_LCC/CMakeLists.txt b/BGL/examples/BGL_LCC/CMakeLists.txt
index da350e1ac2d..10fb6c09dc0 100644
--- a/BGL/examples/BGL_LCC/CMakeLists.txt
+++ b/BGL/examples/BGL_LCC/CMakeLists.txt
@@ -1,7 +1,7 @@
# Created by the script cgal_create_CMakeLists
# This is the CMake script for compiling a set of CGAL applications.
-cmake_minimum_required(VERSION 3.12...3.29)
+cmake_minimum_required(VERSION 3.12...3.31)
project(BGL_LCC_Examples)
# CGAL and its components
diff --git a/BGL/examples/BGL_OpenMesh/CMakeLists.txt b/BGL/examples/BGL_OpenMesh/CMakeLists.txt
index a5091363a51..c56f97d03d7 100644
--- a/BGL/examples/BGL_OpenMesh/CMakeLists.txt
+++ b/BGL/examples/BGL_OpenMesh/CMakeLists.txt
@@ -1,7 +1,7 @@
# Created by the script cgal_create_CMakeLists
# This is the CMake script for compiling a set of CGAL applications.
-cmake_minimum_required(VERSION 3.12...3.29)
+cmake_minimum_required(VERSION 3.12...3.31)
project(BGL_OpenMesh_Examples)
# CGAL and its components
diff --git a/BGL/examples/BGL_arrangement_2/CMakeLists.txt b/BGL/examples/BGL_arrangement_2/CMakeLists.txt
index b803d5b9a37..d0347efa6e0 100644
--- a/BGL/examples/BGL_arrangement_2/CMakeLists.txt
+++ b/BGL/examples/BGL_arrangement_2/CMakeLists.txt
@@ -1,4 +1,4 @@
-cmake_minimum_required(VERSION 3.12...3.29)
+cmake_minimum_required(VERSION 3.12...3.31)
project(BGL_arrangement_2_Examples)
find_package(CGAL REQUIRED)
diff --git a/BGL/examples/BGL_graphcut/CMakeLists.txt b/BGL/examples/BGL_graphcut/CMakeLists.txt
index 0de1b979314..8acc8de042c 100644
--- a/BGL/examples/BGL_graphcut/CMakeLists.txt
+++ b/BGL/examples/BGL_graphcut/CMakeLists.txt
@@ -1,7 +1,7 @@
# Created by the script cgal_create_CMakeLists
# This is the CMake script for compiling a set of CGAL applications.
-cmake_minimum_required(VERSION 3.12...3.29)
+cmake_minimum_required(VERSION 3.12...3.31)
project(BGL_graphcut_Examples)
diff --git a/BGL/examples/BGL_polyhedron_3/CMakeLists.txt b/BGL/examples/BGL_polyhedron_3/CMakeLists.txt
index 8c5c669409b..1141da29b73 100644
--- a/BGL/examples/BGL_polyhedron_3/CMakeLists.txt
+++ b/BGL/examples/BGL_polyhedron_3/CMakeLists.txt
@@ -1,7 +1,7 @@
# Created by the script cgal_create_CMakeLists
# This is the CMake script for compiling a set of CGAL applications.
-cmake_minimum_required(VERSION 3.12...3.29)
+cmake_minimum_required(VERSION 3.12...3.31)
project(BGL_polyhedron_3_Examples)
# CGAL and its components
diff --git a/BGL/examples/BGL_surface_mesh/CMakeLists.txt b/BGL/examples/BGL_surface_mesh/CMakeLists.txt
index 921104583dc..87982059ae9 100644
--- a/BGL/examples/BGL_surface_mesh/CMakeLists.txt
+++ b/BGL/examples/BGL_surface_mesh/CMakeLists.txt
@@ -1,4 +1,4 @@
-cmake_minimum_required(VERSION 3.12...3.29)
+cmake_minimum_required(VERSION 3.12...3.31)
project(BGL_surface_mesh_Examples)
find_package(CGAL REQUIRED)
diff --git a/BGL/examples/BGL_triangulation_2/CMakeLists.txt b/BGL/examples/BGL_triangulation_2/CMakeLists.txt
index 7d479d36c4f..d597f2217dd 100644
--- a/BGL/examples/BGL_triangulation_2/CMakeLists.txt
+++ b/BGL/examples/BGL_triangulation_2/CMakeLists.txt
@@ -1,4 +1,4 @@
-cmake_minimum_required(VERSION 3.12...3.29)
+cmake_minimum_required(VERSION 3.12...3.31)
project(BGL_triangulation_2_Examples)
find_package(CGAL REQUIRED)
diff --git a/BGL/include/CGAL/boost/graph/copy_face_graph.h b/BGL/include/CGAL/boost/graph/copy_face_graph.h
index e0d4cbd5b95..bbd7a12708b 100644
--- a/BGL/include/CGAL/boost/graph/copy_face_graph.h
+++ b/BGL/include/CGAL/boost/graph/copy_face_graph.h
@@ -178,6 +178,7 @@ void copy_face_graph_impl(const SourceMesh& sm, TargetMesh& tm,
}
// detect if there are some non-manifold umbrellas and fix missing halfedge target pointers
+ std::map> nm_umbrella_map;
typedef typename std::vector::iterator edge_iterator;
for (edge_iterator it=new_edges.begin(); it!=new_edges.end(); ++it)
{
@@ -199,10 +200,19 @@ void copy_face_graph_impl(const SourceMesh& sm, TargetMesh& tm,
// we recover tm_v using the halfedge associated to the target vertex of
// the halfedge in sm corresponding to nh_t. This is working because we
// set the vertex halfedge pointer to the "same" halfedges.
- tm_vertex_descriptor tm_v =
- target( get(hs_to_ht, halfedge(target(get(ht_to_hs, nh_t), sm), sm)), tm);
- for(tm_halfedge_descriptor ht : halfedges_around_target(nh_t, tm))
- set_target(ht, tm_v, tm);
+
+ sm_vertex_descriptor vs = target(get(ht_to_hs, nh_t), sm);
+ sm_halfedge_descriptor hs = halfedge(vs, sm);
+ if (hs == boost::graph_traits::null_halfedge())
+ { // special case for Face_filtered_graph with a non-manifold input with not all umbrellas selected
+ nm_umbrella_map[vs].push_back(nh_t);
+ }
+ else
+ {
+ tm_vertex_descriptor tm_v = target( get(hs_to_ht, hs), tm);
+ for(tm_halfedge_descriptor ht : halfedges_around_target(nh_t, tm))
+ set_target(ht, tm_v, tm);
+ }
}
nh_t = opposite(nh_t, tm);
}
@@ -210,6 +220,18 @@ void copy_face_graph_impl(const SourceMesh& sm, TargetMesh& tm,
break;
}
}
+
+ for (const auto& vs_and_hts : nm_umbrella_map)
+ {
+ sm_vertex_descriptor v_sm = vs_and_hts.first;
+ tm_vertex_descriptor v_tm = add_vertex(tm);
+ *v2v++=std::make_pair(v_sm, v_tm);
+ set_halfedge(v_tm, vs_and_hts.second.front(), tm);
+ put(tm_vpm, v_tm, conv(get(sm_vpm, v_sm)));
+
+ for (tm_halfedge_descriptor h_tm : vs_and_hts.second)
+ set_target(h_tm, v_tm, tm);
+ }
}
} // end of namespace internal
diff --git a/BGL/test/BGL/CMakeLists.txt b/BGL/test/BGL/CMakeLists.txt
index 53d474d67e2..bc18562bb6e 100644
--- a/BGL/test/BGL/CMakeLists.txt
+++ b/BGL/test/BGL/CMakeLists.txt
@@ -1,7 +1,7 @@
# Created by the script cgal_create_cmake_script_with_options
# This is the CMake script for compiling a set of CGAL applications.
-cmake_minimum_required(VERSION 3.12...3.29)
+cmake_minimum_required(VERSION 3.12...3.31)
project(BGL_Tests)
# CGAL and its components
diff --git a/BGL/test/BGL/test_Face_filtered_graph.cpp b/BGL/test/BGL/test_Face_filtered_graph.cpp
index d83de2bbdc6..84e1bbbf69f 100644
--- a/BGL/test/BGL/test_Face_filtered_graph.cpp
+++ b/BGL/test/BGL/test_Face_filtered_graph.cpp
@@ -579,6 +579,102 @@ void test_Polyhedron_tetrahedron()
test_mesh(poly_adapter);
}
+void non_manifoldness_test1()
+{
+ // works out-of-the-box because Face_filtered_graph handles already non-manifold cycles
+ SM mesh;
+ SM::Vertex_index v0=add_vertex(mesh);
+ SM::Vertex_index v1=add_vertex(mesh);
+ SM::Vertex_index v2=add_vertex(mesh);
+ SM::Vertex_index v3=add_vertex(mesh);
+ SM::Vertex_index v4=add_vertex(mesh);
+ SM::Vertex_index v5=add_vertex(mesh);
+ SM::Vertex_index v6=add_vertex(mesh);
+
+ SM::Face_index f0=mesh.add_face(v0,v1,v2);
+ SM::Face_index f1=mesh.add_face(v0,v3,v4);
+ SM::Face_index f2=mesh.add_face(v0,v5,v6);
+ SM::Halfedge_index h = halfedge(f0,mesh);
+ while(target(h, mesh)!=v0)
+ h=next(h,mesh);
+ set_halfedge(v0, h, mesh);
+
+ std::vector selection = {f1, f2};
+ CGAL::Face_filtered_graph ffg(mesh, selection);
+
+ SM out;
+ CGAL::copy_face_graph(ffg, out);
+
+ assert(vertices(out).size()==5);
+ assert(faces(out).size()==2);
+}
+
+void non_manifoldness_test2()
+{
+ SM mesh;
+ SM::Vertex_index v0=add_vertex(mesh);
+ SM::Vertex_index v0b=add_vertex(mesh);
+ SM::Vertex_index v0t=add_vertex(mesh);
+
+ SM::Vertex_index v1=add_vertex(mesh);
+ SM::Vertex_index v2=add_vertex(mesh);
+ SM::Vertex_index v3=add_vertex(mesh);
+
+ SM::Vertex_index v4=add_vertex(mesh);
+ SM::Vertex_index v5=add_vertex(mesh);
+ SM::Vertex_index v6=add_vertex(mesh);
+
+ SM::Vertex_index v7=add_vertex(mesh);
+ SM::Vertex_index v8=add_vertex(mesh);
+ SM::Vertex_index v9=add_vertex(mesh);
+
+ SM::Face_index f00=mesh.add_face(v1,v2,v0);
+ SM::Face_index f01=mesh.add_face(v2,v3,v0);
+ SM::Face_index f02=mesh.add_face(v3,v1,v0);
+
+ SM::Face_index f10=mesh.add_face(v4,v5,v0b);
+ SM::Face_index f11=mesh.add_face(v5,v6,v0b);
+ SM::Face_index f12=mesh.add_face(v6,v4,v0b);
+
+ SM::Face_index f20=mesh.add_face(v7,v8,v0t);
+ SM::Face_index f21=mesh.add_face(v8,v9,v0t);
+ SM::Face_index f22=mesh.add_face(v9,v7,v0t);
+
+ assert(f00!=SM::Face_index());
+ assert(f01!=SM::Face_index());
+ assert(f02!=SM::Face_index());
+ assert(f10!=SM::Face_index());
+ assert(f11!=SM::Face_index());
+ assert(f12!=SM::Face_index());
+ assert(f20!=SM::Face_index());
+ assert(f21!=SM::Face_index());
+ assert(f22!=SM::Face_index());
+
+ #define UPDATE_V(fX, vX) \
+ { SM::Halfedge_index h = halfedge(fX,mesh);\
+ while(target(h, mesh)!=vX) h=next(h,mesh);\
+ set_target(h, v0, mesh); }
+
+ UPDATE_V(f10, v0b)
+ UPDATE_V(f11, v0b)
+ UPDATE_V(f12, v0b)
+ UPDATE_V(f20, v0t)
+ UPDATE_V(f21, v0t)
+ UPDATE_V(f22, v0t)
+
+ remove_vertex(v0b, mesh);
+ remove_vertex(v0t, mesh);
+
+ std::vector selection = {f10, f11, f12, f20, f21, f22};
+ CGAL::Face_filtered_graph ffg(mesh, selection);
+
+ SM out;
+ CGAL::copy_face_graph(ffg, out);
+
+ assert(vertices(out).size()==7);
+ assert(faces(out).size()==6);
+}
+
int main(int, char**)
{
test_graph_range(poly_data());
@@ -590,6 +686,8 @@ int main(int, char**)
#endif
test_invalid_selections();
+ non_manifoldness_test1();
+ non_manifoldness_test2();
test_SM_tetrahedron();
test_Polyhedron_tetrahedron();
diff --git a/BGL/test/BGL/test_OpenMesh.cpp b/BGL/test/BGL/test_OpenMesh.cpp
index 0dede3e68ed..e3ddcc9c2ca 100644
--- a/BGL/test/BGL/test_OpenMesh.cpp
+++ b/BGL/test/BGL/test_OpenMesh.cpp
@@ -10,13 +10,29 @@ typedef Traits::edge_descriptor edge_descriptor;
typedef Traits::halfedge_descriptor halfedge_descriptor;
typedef Traits::vertex_descriptor vertex_descriptor;
typedef Traits::face_descriptor face_descriptor;
-//typedef Kernel::Point_3 Point_3;
int main()
{
Om om;
- for (Om::EdgeHandle ed : edges(om)) {
- std::cout << "edge" << std::endl;
+ for (Om::EdgeHandle ed : edges(om))
+ {
+ CGAL_USE(ed);
+ }
+ for (edge_descriptor ed : edges(om))
+ {
+ CGAL_USE(ed);
+ }
+ for (halfedge_descriptor hd : halfedges(om))
+ {
+ CGAL_USE(hd);
+ }
+ for (face_descriptor fd : faces(om))
+ {
+ CGAL_USE(fd);
+ }
+ for (vertex_descriptor vd : vertices(om))
+ {
+ CGAL_USE(vd);
}
return 0;
}
diff --git a/Barycentric_coordinates_2/benchmark/Barycentric_coordinates_2/CMakeLists.txt b/Barycentric_coordinates_2/benchmark/Barycentric_coordinates_2/CMakeLists.txt
index 11d40187de3..1d4deb97575 100644
--- a/Barycentric_coordinates_2/benchmark/Barycentric_coordinates_2/CMakeLists.txt
+++ b/Barycentric_coordinates_2/benchmark/Barycentric_coordinates_2/CMakeLists.txt
@@ -3,7 +3,7 @@
project(Barycentric_coordinates_2_Benchmarks)
-cmake_minimum_required(VERSION 3.12...3.29)
+cmake_minimum_required(VERSION 3.12...3.31)
find_package(CGAL REQUIRED COMPONENTS Core)
diff --git a/Barycentric_coordinates_2/examples/Barycentric_coordinates_2/CMakeLists.txt b/Barycentric_coordinates_2/examples/Barycentric_coordinates_2/CMakeLists.txt
index cd3533b5ca7..43a49733d1a 100644
--- a/Barycentric_coordinates_2/examples/Barycentric_coordinates_2/CMakeLists.txt
+++ b/Barycentric_coordinates_2/examples/Barycentric_coordinates_2/CMakeLists.txt
@@ -1,7 +1,7 @@
# Created by the script cgal_create_cmake_script.
# This is the CMake script for compiling a CGAL application.
-cmake_minimum_required(VERSION 3.12...3.29)
+cmake_minimum_required(VERSION 3.12...3.31)
project(Barycentric_coordinates_2_Examples)
diff --git a/Barycentric_coordinates_2/test/Barycentric_coordinates_2/CMakeLists.txt b/Barycentric_coordinates_2/test/Barycentric_coordinates_2/CMakeLists.txt
index c50f052a490..7b01647d5c1 100644
--- a/Barycentric_coordinates_2/test/Barycentric_coordinates_2/CMakeLists.txt
+++ b/Barycentric_coordinates_2/test/Barycentric_coordinates_2/CMakeLists.txt
@@ -1,7 +1,7 @@
# Created by the script cgal_create_cmake_script.
# This is the CMake script for compiling a CGAL application.
-cmake_minimum_required(VERSION 3.12...3.29)
+cmake_minimum_required(VERSION 3.12...3.31)
project(Barycentric_coordinates_2_Tests)
diff --git a/Basic_viewer/examples/Basic_viewer/CMakeLists.txt b/Basic_viewer/examples/Basic_viewer/CMakeLists.txt
index 305e502bd47..4106c9defb4 100644
--- a/Basic_viewer/examples/Basic_viewer/CMakeLists.txt
+++ b/Basic_viewer/examples/Basic_viewer/CMakeLists.txt
@@ -6,7 +6,7 @@
# Used in /CGAL/Documentation/doc/Documentation/Developer_manual/create_and_use_a_cmakelist.txt.
# Careful when modifying
-cmake_minimum_required(VERSION 3.12...3.29)
+cmake_minimum_required(VERSION 3.12...3.31)
project(Basic_viewer_Examples)
#CGAL_Qt6 is needed for the drawing.
diff --git a/Boolean_set_operations_2/examples/Boolean_set_operations_2/CMakeLists.txt b/Boolean_set_operations_2/examples/Boolean_set_operations_2/CMakeLists.txt
index aee59825ba1..99d2c05f6ce 100644
--- a/Boolean_set_operations_2/examples/Boolean_set_operations_2/CMakeLists.txt
+++ b/Boolean_set_operations_2/examples/Boolean_set_operations_2/CMakeLists.txt
@@ -1,7 +1,7 @@
# Created by the script cgal_create_cmake_script
# This is the CMake script for compiling a CGAL application.
-cmake_minimum_required(VERSION 3.12...3.29)
+cmake_minimum_required(VERSION 3.12...3.31)
project(Boolean_set_operations_2_Examples)
find_package(CGAL REQUIRED COMPONENTS Core OPTIONAL_COMPONENTS Qt6)
diff --git a/Boolean_set_operations_2/test/Boolean_set_operations_2/CMakeLists.txt b/Boolean_set_operations_2/test/Boolean_set_operations_2/CMakeLists.txt
index 60bd93b4d37..b7b8ec33bba 100644
--- a/Boolean_set_operations_2/test/Boolean_set_operations_2/CMakeLists.txt
+++ b/Boolean_set_operations_2/test/Boolean_set_operations_2/CMakeLists.txt
@@ -1,7 +1,7 @@
# Created by the script cgal_create_cmake_script
# This is the CMake script for compiling a CGAL application.
-cmake_minimum_required(VERSION 3.12...3.29)
+cmake_minimum_required(VERSION 3.12...3.31)
project(Boolean_set_operations_2_Tests)
find_package(CGAL REQUIRED)
diff --git a/Bounding_volumes/examples/Approximate_min_ellipsoid_d/CMakeLists.txt b/Bounding_volumes/examples/Approximate_min_ellipsoid_d/CMakeLists.txt
index aed57e369fc..1829009c9c0 100644
--- a/Bounding_volumes/examples/Approximate_min_ellipsoid_d/CMakeLists.txt
+++ b/Bounding_volumes/examples/Approximate_min_ellipsoid_d/CMakeLists.txt
@@ -1,4 +1,4 @@
-cmake_minimum_required(VERSION 3.12...3.29)
+cmake_minimum_required(VERSION 3.12...3.31)
project(Approximate_min_ellipsoid_d_Examples)
find_package(CGAL REQUIRED)
diff --git a/Bounding_volumes/examples/Min_annulus_d/CMakeLists.txt b/Bounding_volumes/examples/Min_annulus_d/CMakeLists.txt
index 9c56c1f8cd2..4d968380aef 100644
--- a/Bounding_volumes/examples/Min_annulus_d/CMakeLists.txt
+++ b/Bounding_volumes/examples/Min_annulus_d/CMakeLists.txt
@@ -1,4 +1,4 @@
-cmake_minimum_required(VERSION 3.12...3.29)
+cmake_minimum_required(VERSION 3.12...3.31)
project(Min_annulus_d_Examples)
find_package(CGAL REQUIRED)
diff --git a/Bounding_volumes/examples/Min_circle_2/CMakeLists.txt b/Bounding_volumes/examples/Min_circle_2/CMakeLists.txt
index 9d537c51338..864ad950c98 100644
--- a/Bounding_volumes/examples/Min_circle_2/CMakeLists.txt
+++ b/Bounding_volumes/examples/Min_circle_2/CMakeLists.txt
@@ -1,4 +1,4 @@
-cmake_minimum_required(VERSION 3.12...3.29)
+cmake_minimum_required(VERSION 3.12...3.31)
project(Min_circle_2_Examples)
find_package(CGAL REQUIRED)
diff --git a/Bounding_volumes/examples/Min_ellipse_2/CMakeLists.txt b/Bounding_volumes/examples/Min_ellipse_2/CMakeLists.txt
index 5a8ff8b5094..8e54fb2aab0 100644
--- a/Bounding_volumes/examples/Min_ellipse_2/CMakeLists.txt
+++ b/Bounding_volumes/examples/Min_ellipse_2/CMakeLists.txt
@@ -1,4 +1,4 @@
-cmake_minimum_required(VERSION 3.12...3.29)
+cmake_minimum_required(VERSION 3.12...3.31)
project(Min_ellipse_2_Examples)
find_package(CGAL REQUIRED)
diff --git a/Bounding_volumes/examples/Min_quadrilateral_2/CMakeLists.txt b/Bounding_volumes/examples/Min_quadrilateral_2/CMakeLists.txt
index 4ec0538e65a..ee65337ea99 100644
--- a/Bounding_volumes/examples/Min_quadrilateral_2/CMakeLists.txt
+++ b/Bounding_volumes/examples/Min_quadrilateral_2/CMakeLists.txt
@@ -1,4 +1,4 @@
-cmake_minimum_required(VERSION 3.12...3.29)
+cmake_minimum_required(VERSION 3.12...3.31)
project(Min_quadrilateral_2_Examples)
find_package(CGAL REQUIRED)
diff --git a/Bounding_volumes/examples/Min_sphere_d/CMakeLists.txt b/Bounding_volumes/examples/Min_sphere_d/CMakeLists.txt
index 52f22930d06..7df4fa04f95 100644
--- a/Bounding_volumes/examples/Min_sphere_d/CMakeLists.txt
+++ b/Bounding_volumes/examples/Min_sphere_d/CMakeLists.txt
@@ -1,4 +1,4 @@
-cmake_minimum_required(VERSION 3.12...3.29)
+cmake_minimum_required(VERSION 3.12...3.31)
project(Min_sphere_d_Examples)
find_package(CGAL REQUIRED)
diff --git a/Bounding_volumes/examples/Min_sphere_of_spheres_d/CMakeLists.txt b/Bounding_volumes/examples/Min_sphere_of_spheres_d/CMakeLists.txt
index 04fdce0a6c7..5a4d610bd42 100644
--- a/Bounding_volumes/examples/Min_sphere_of_spheres_d/CMakeLists.txt
+++ b/Bounding_volumes/examples/Min_sphere_of_spheres_d/CMakeLists.txt
@@ -1,4 +1,4 @@
-cmake_minimum_required(VERSION 3.12...3.29)
+cmake_minimum_required(VERSION 3.12...3.31)
project(Min_sphere_of_spheres_d_Examples)
find_package(CGAL REQUIRED)
diff --git a/Bounding_volumes/examples/Rectangular_p_center_2/CMakeLists.txt b/Bounding_volumes/examples/Rectangular_p_center_2/CMakeLists.txt
index b4232b361a1..5f4df68a419 100644
--- a/Bounding_volumes/examples/Rectangular_p_center_2/CMakeLists.txt
+++ b/Bounding_volumes/examples/Rectangular_p_center_2/CMakeLists.txt
@@ -1,4 +1,4 @@
-cmake_minimum_required(VERSION 3.12...3.29)
+cmake_minimum_required(VERSION 3.12...3.31)
project(Rectangular_p_center_2_Examples)
find_package(CGAL REQUIRED)
diff --git a/Bounding_volumes/test/Bounding_volumes/CMakeLists.txt b/Bounding_volumes/test/Bounding_volumes/CMakeLists.txt
index a5b3adfd744..143e296e6ff 100644
--- a/Bounding_volumes/test/Bounding_volumes/CMakeLists.txt
+++ b/Bounding_volumes/test/Bounding_volumes/CMakeLists.txt
@@ -1,7 +1,7 @@
# Created by the script cgal_create_cmake_script
# This is the CMake script for compiling a CGAL application.
-cmake_minimum_required(VERSION 3.12...3.29)
+cmake_minimum_required(VERSION 3.12...3.31)
project(Bounding_volumes_Tests)
find_package(CGAL REQUIRED COMPONENTS Core)
diff --git a/Box_intersection_d/examples/Box_intersection_d/CMakeLists.txt b/Box_intersection_d/examples/Box_intersection_d/CMakeLists.txt
index f1de0dd7150..7cad98a5e06 100644
--- a/Box_intersection_d/examples/Box_intersection_d/CMakeLists.txt
+++ b/Box_intersection_d/examples/Box_intersection_d/CMakeLists.txt
@@ -1,7 +1,7 @@
# Created by the script cgal_create_cmake_script
# This is the CMake script for compiling a CGAL application.
-cmake_minimum_required(VERSION 3.12...3.29)
+cmake_minimum_required(VERSION 3.12...3.31)
project(Box_intersection_d_Examples)
find_package(CGAL REQUIRED)
diff --git a/Box_intersection_d/test/Box_intersection_d/CMakeLists.txt b/Box_intersection_d/test/Box_intersection_d/CMakeLists.txt
index a82e578f345..74af1828b43 100644
--- a/Box_intersection_d/test/Box_intersection_d/CMakeLists.txt
+++ b/Box_intersection_d/test/Box_intersection_d/CMakeLists.txt
@@ -1,7 +1,7 @@
# Created by the script cgal_create_cmake_script
# This is the CMake script for compiling a CGAL application.
-cmake_minimum_required(VERSION 3.12...3.29)
+cmake_minimum_required(VERSION 3.12...3.31)
project(Box_intersection_d_Tests)
find_package(CGAL REQUIRED)
diff --git a/CGAL_Core/examples/Core/CMakeLists.txt b/CGAL_Core/examples/Core/CMakeLists.txt
index 5f1d17eeb8a..a3552430f3c 100644
--- a/CGAL_Core/examples/Core/CMakeLists.txt
+++ b/CGAL_Core/examples/Core/CMakeLists.txt
@@ -1,4 +1,4 @@
-cmake_minimum_required(VERSION 3.12...3.29)
+cmake_minimum_required(VERSION 3.12...3.31)
project(Core_Examples)
# CGAL and its components
diff --git a/CGAL_Core/include/CGAL/CORE/BigFloat.h b/CGAL_Core/include/CGAL/CORE/BigFloat.h
index 5b1bd138bca..671e58d644a 100644
--- a/CGAL_Core/include/CGAL/CORE/BigFloat.h
+++ b/CGAL_Core/include/CGAL/CORE/BigFloat.h
@@ -600,6 +600,7 @@ inline long longValue(const BigFloat& bf)
{
return bf.longValue();
}
+//@}
} //namespace CORE
diff --git a/CGAL_ImageIO/examples/CGALimageIO/CMakeLists.txt b/CGAL_ImageIO/examples/CGALimageIO/CMakeLists.txt
index ee152bc87a8..69a3b23a9d9 100644
--- a/CGAL_ImageIO/examples/CGALimageIO/CMakeLists.txt
+++ b/CGAL_ImageIO/examples/CGALimageIO/CMakeLists.txt
@@ -1,7 +1,7 @@
# Created by the script cgal_create_cmake_script
# This is the CMake script for compiling a CGAL application.
-cmake_minimum_required(VERSION 3.12...3.29)
+cmake_minimum_required(VERSION 3.12...3.31)
project(CGALimageIO_Examples)
find_package(CGAL REQUIRED COMPONENTS ImageIO)
diff --git a/CGAL_ImageIO/test/CGAL_ImageIO/CMakeLists.txt b/CGAL_ImageIO/test/CGAL_ImageIO/CMakeLists.txt
index 9a5154fe35a..92bc01f4576 100644
--- a/CGAL_ImageIO/test/CGAL_ImageIO/CMakeLists.txt
+++ b/CGAL_ImageIO/test/CGAL_ImageIO/CMakeLists.txt
@@ -1,7 +1,7 @@
# Created by the script cgal_create_cmake_script
# This is the CMake script for compiling a CGAL application.
-cmake_minimum_required(VERSION 3.12...3.29)
+cmake_minimum_required(VERSION 3.12...3.31)
project(CGAL_ImageIO_Tests)
find_package(CGAL REQUIRED COMPONENTS ImageIO)
diff --git a/CGAL_ipelets/demo/CGAL_ipelets/CMakeLists.txt b/CGAL_ipelets/demo/CGAL_ipelets/CMakeLists.txt
index 6c942000068..a27008458d1 100644
--- a/CGAL_ipelets/demo/CGAL_ipelets/CMakeLists.txt
+++ b/CGAL_ipelets/demo/CGAL_ipelets/CMakeLists.txt
@@ -1,4 +1,4 @@
-cmake_minimum_required(VERSION 3.12...3.29)
+cmake_minimum_required(VERSION 3.12...3.31)
project(CGAL_ipelets_Demo)
if(NOT POLICY CMP0070 AND POLICY CMP0053)
diff --git a/CGAL_ipelets/test/CGAL_ipelets/CMakeLists.txt b/CGAL_ipelets/test/CGAL_ipelets/CMakeLists.txt
index ae82aa48f7f..f52731322b7 100644
--- a/CGAL_ipelets/test/CGAL_ipelets/CMakeLists.txt
+++ b/CGAL_ipelets/test/CGAL_ipelets/CMakeLists.txt
@@ -1,7 +1,7 @@
# Created by the script cgal_create_cmake_script
# This is the CMake script for compiling a CGAL application.
-cmake_minimum_required(VERSION 3.12...3.29)
+cmake_minimum_required(VERSION 3.12...3.31)
project(CGAL_ipelets_Tests)
find_package(CGAL REQUIRED)
diff --git a/CMakeLists.txt b/CMakeLists.txt
index cb6cbcce79a..c4ac65d480d 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -1,7 +1,7 @@
# Top level CMakeLists.txt for CGAL-branchbuild
# Minimal version of CMake:
-cmake_minimum_required(VERSION 3.12...3.29)
+cmake_minimum_required(VERSION 3.12...3.31)
message("== CMake setup ==")
project(CGAL CXX C)
diff --git a/Circular_kernel_2/examples/Circular_kernel_2/CMakeLists.txt b/Circular_kernel_2/examples/Circular_kernel_2/CMakeLists.txt
index 7b2f5e9e627..33f717ffe50 100644
--- a/Circular_kernel_2/examples/Circular_kernel_2/CMakeLists.txt
+++ b/Circular_kernel_2/examples/Circular_kernel_2/CMakeLists.txt
@@ -1,7 +1,7 @@
# Created by the script cgal_create_cmake_script
# This is the CMake script for compiling a CGAL application.
-cmake_minimum_required(VERSION 3.12...3.29)
+cmake_minimum_required(VERSION 3.12...3.31)
project(Circular_kernel_2_Examples)
find_package(CGAL REQUIRED)
diff --git a/Circular_kernel_2/test/Circular_kernel_2/CMakeLists.txt b/Circular_kernel_2/test/Circular_kernel_2/CMakeLists.txt
index c74331fa0da..18d14536942 100644
--- a/Circular_kernel_2/test/Circular_kernel_2/CMakeLists.txt
+++ b/Circular_kernel_2/test/Circular_kernel_2/CMakeLists.txt
@@ -1,7 +1,7 @@
# Created by the script cgal_create_cmake_script
# This is the CMake script for compiling a CGAL application.
-cmake_minimum_required(VERSION 3.12...3.29)
+cmake_minimum_required(VERSION 3.12...3.31)
project(Circular_kernel_2_Tests)
find_package(CGAL REQUIRED)
diff --git a/Circular_kernel_3/demo/Circular_kernel_3/CMakeLists.txt b/Circular_kernel_3/demo/Circular_kernel_3/CMakeLists.txt
index 15b323a35e4..eb14ee65d51 100644
--- a/Circular_kernel_3/demo/Circular_kernel_3/CMakeLists.txt
+++ b/Circular_kernel_3/demo/Circular_kernel_3/CMakeLists.txt
@@ -1,4 +1,4 @@
-cmake_minimum_required(VERSION 3.12...3.29)
+cmake_minimum_required(VERSION 3.12...3.31)
project(Circular_kernel_3_Demo)
find_package(CGAL REQUIRED OPTIONAL_COMPONENTS Qt6)
diff --git a/Circular_kernel_3/examples/Circular_kernel_3/CMakeLists.txt b/Circular_kernel_3/examples/Circular_kernel_3/CMakeLists.txt
index dd790cb013e..6570aa61957 100644
--- a/Circular_kernel_3/examples/Circular_kernel_3/CMakeLists.txt
+++ b/Circular_kernel_3/examples/Circular_kernel_3/CMakeLists.txt
@@ -1,7 +1,7 @@
# Created by the script cgal_create_cmake_script
# This is the CMake script for compiling a CGAL application.
-cmake_minimum_required(VERSION 3.12...3.29)
+cmake_minimum_required(VERSION 3.12...3.31)
project(Circular_kernel_3_Examples)
find_package(CGAL REQUIRED)
diff --git a/Circular_kernel_3/test/Circular_kernel_3/CMakeLists.txt b/Circular_kernel_3/test/Circular_kernel_3/CMakeLists.txt
index 11f64e04486..3194864b973 100644
--- a/Circular_kernel_3/test/Circular_kernel_3/CMakeLists.txt
+++ b/Circular_kernel_3/test/Circular_kernel_3/CMakeLists.txt
@@ -1,7 +1,7 @@
# Created by the script cgal_create_cmake_script
# This is the CMake script for compiling a CGAL application.
-cmake_minimum_required(VERSION 3.12...3.29)
+cmake_minimum_required(VERSION 3.12...3.31)
project(Circular_kernel_3_Tests)
find_package(CGAL REQUIRED COMPONENTS Core)
diff --git a/Circulator/examples/Circulator/CMakeLists.txt b/Circulator/examples/Circulator/CMakeLists.txt
index 45ce196888c..7ac0a4ca88c 100644
--- a/Circulator/examples/Circulator/CMakeLists.txt
+++ b/Circulator/examples/Circulator/CMakeLists.txt
@@ -1,7 +1,7 @@
# Created by the script cgal_create_cmake_script
# This is the CMake script for compiling a CGAL application.
-cmake_minimum_required(VERSION 3.12...3.29)
+cmake_minimum_required(VERSION 3.12...3.31)
project(Circulator_Examples)
find_package(CGAL REQUIRED)
diff --git a/Circulator/test/Circulator/CMakeLists.txt b/Circulator/test/Circulator/CMakeLists.txt
index 379b55cc364..a502c47e06f 100644
--- a/Circulator/test/Circulator/CMakeLists.txt
+++ b/Circulator/test/Circulator/CMakeLists.txt
@@ -1,7 +1,7 @@
# Created by the script cgal_create_cmake_script
# This is the CMake script for compiling a CGAL application.
-cmake_minimum_required(VERSION 3.12...3.29)
+cmake_minimum_required(VERSION 3.12...3.31)
project(Circulator_Tests)
find_package(CGAL REQUIRED)
diff --git a/Classification/examples/Classification/CMakeLists.txt b/Classification/examples/Classification/CMakeLists.txt
index 803d4279ead..e9e93a6d3a6 100644
--- a/Classification/examples/Classification/CMakeLists.txt
+++ b/Classification/examples/Classification/CMakeLists.txt
@@ -1,7 +1,7 @@
# Created by the script cgal_create_CMakeLists
# This is the CMake script for compiling a set of CGAL applications.
-cmake_minimum_required(VERSION 3.12...3.29)
+cmake_minimum_required(VERSION 3.12...3.31)
project(Classification_Examples)
# CGAL and its components
diff --git a/Classification/test/Classification/CMakeLists.txt b/Classification/test/Classification/CMakeLists.txt
index 332dc9216d8..0135ea6f175 100644
--- a/Classification/test/Classification/CMakeLists.txt
+++ b/Classification/test/Classification/CMakeLists.txt
@@ -1,7 +1,7 @@
# Created by the script cgal_create_CMakeLists
# This is the CMake script for compiling a set of CGAL applications.
-cmake_minimum_required(VERSION 3.12...3.29)
+cmake_minimum_required(VERSION 3.12...3.31)
project(Classification_Tests)
# CGAL and its components
diff --git a/Combinatorial_map/examples/Combinatorial_map/CMakeLists.txt b/Combinatorial_map/examples/Combinatorial_map/CMakeLists.txt
index 828f4756926..98a1e50f7e1 100644
--- a/Combinatorial_map/examples/Combinatorial_map/CMakeLists.txt
+++ b/Combinatorial_map/examples/Combinatorial_map/CMakeLists.txt
@@ -1,7 +1,7 @@
# Created by the script cgal_create_cmake_script
# This is the CMake script for compiling a CGAL application.
-cmake_minimum_required(VERSION 3.12...3.29)
+cmake_minimum_required(VERSION 3.12...3.31)
project(Combinatorial_map_Examples)
find_package(CGAL REQUIRED)
diff --git a/Combinatorial_map/test/Combinatorial_map/CMakeLists.txt b/Combinatorial_map/test/Combinatorial_map/CMakeLists.txt
index b440e257636..271451857f9 100644
--- a/Combinatorial_map/test/Combinatorial_map/CMakeLists.txt
+++ b/Combinatorial_map/test/Combinatorial_map/CMakeLists.txt
@@ -1,7 +1,7 @@
# Created by the script cgal_create_cmake_script
# This is the CMake script for compiling a CGAL application.
-cmake_minimum_required(VERSION 3.12...3.29)
+cmake_minimum_required(VERSION 3.12...3.31)
project(Combinatorial_map_Tests)
find_package(CGAL REQUIRED)
diff --git a/Cone_spanners_2/examples/Cone_spanners_2/CMakeLists.txt b/Cone_spanners_2/examples/Cone_spanners_2/CMakeLists.txt
index 4f4f2226ffc..2ac677d7d71 100644
--- a/Cone_spanners_2/examples/Cone_spanners_2/CMakeLists.txt
+++ b/Cone_spanners_2/examples/Cone_spanners_2/CMakeLists.txt
@@ -1,4 +1,4 @@
-cmake_minimum_required(VERSION 3.12...3.29)
+cmake_minimum_required(VERSION 3.12...3.31)
project(Cone_spanners_2_Examples)
find_package(CGAL REQUIRED OPTIONAL_COMPONENTS Core)
diff --git a/Cone_spanners_2/test/Cone_spanners_2/CMakeLists.txt b/Cone_spanners_2/test/Cone_spanners_2/CMakeLists.txt
index e4d05d60618..559a6418940 100644
--- a/Cone_spanners_2/test/Cone_spanners_2/CMakeLists.txt
+++ b/Cone_spanners_2/test/Cone_spanners_2/CMakeLists.txt
@@ -1,7 +1,7 @@
# Created by the script cgal_create_cmake_script
# This is the CMake script for compiling a CGAL application.
-cmake_minimum_required(VERSION 3.12...3.29)
+cmake_minimum_required(VERSION 3.12...3.31)
project(Cone_spanners_2_Tests)
find_package(CGAL REQUIRED COMPONENTS Core)
diff --git a/Convex_decomposition_3/examples/Convex_decomposition_3/CMakeLists.txt b/Convex_decomposition_3/examples/Convex_decomposition_3/CMakeLists.txt
index 6fb39bf6485..3e4532f6ffc 100644
--- a/Convex_decomposition_3/examples/Convex_decomposition_3/CMakeLists.txt
+++ b/Convex_decomposition_3/examples/Convex_decomposition_3/CMakeLists.txt
@@ -1,7 +1,7 @@
# Created by the script cgal_create_cmake_script
# This is the CMake script for compiling a CGAL application.
-cmake_minimum_required(VERSION 3.12...3.29)
+cmake_minimum_required(VERSION 3.12...3.31)
project(Convex_decomposition_3_Examples)
find_package(CGAL REQUIRED)
diff --git a/Convex_decomposition_3/test/Convex_decomposition_3/CMakeLists.txt b/Convex_decomposition_3/test/Convex_decomposition_3/CMakeLists.txt
index 660388d7120..e06420b426b 100644
--- a/Convex_decomposition_3/test/Convex_decomposition_3/CMakeLists.txt
+++ b/Convex_decomposition_3/test/Convex_decomposition_3/CMakeLists.txt
@@ -1,7 +1,7 @@
# Created by the script cgal_create_cmake_script
# This is the CMake script for compiling a CGAL application.
-cmake_minimum_required(VERSION 3.12...3.29)
+cmake_minimum_required(VERSION 3.12...3.31)
project(Convex_decomposition_3_Tests)
find_package(CGAL REQUIRED)
diff --git a/Convex_hull_2/examples/Convex_hull_2/CMakeLists.txt b/Convex_hull_2/examples/Convex_hull_2/CMakeLists.txt
index dad37d65a65..76a81ede555 100644
--- a/Convex_hull_2/examples/Convex_hull_2/CMakeLists.txt
+++ b/Convex_hull_2/examples/Convex_hull_2/CMakeLists.txt
@@ -1,7 +1,7 @@
# Created by the script cgal_create_cmake_script
# This is the CMake script for compiling a CGAL application.
-cmake_minimum_required(VERSION 3.12...3.29)
+cmake_minimum_required(VERSION 3.12...3.31)
project(Convex_hull_2_Examples)
find_package(CGAL REQUIRED)
diff --git a/Convex_hull_2/test/Convex_hull_2/CMakeLists.txt b/Convex_hull_2/test/Convex_hull_2/CMakeLists.txt
index ba7b0c0b8c1..3a37f23f9aa 100644
--- a/Convex_hull_2/test/Convex_hull_2/CMakeLists.txt
+++ b/Convex_hull_2/test/Convex_hull_2/CMakeLists.txt
@@ -1,7 +1,7 @@
# Created by the script cgal_create_cmake_script
# This is the CMake script for compiling a CGAL application.
-cmake_minimum_required(VERSION 3.12...3.29)
+cmake_minimum_required(VERSION 3.12...3.31)
project(Convex_hull_2_Tests)
find_package(CGAL REQUIRED)
diff --git a/Convex_hull_3/examples/Convex_hull_3/CMakeLists.txt b/Convex_hull_3/examples/Convex_hull_3/CMakeLists.txt
index add02f31d30..99b49365013 100644
--- a/Convex_hull_3/examples/Convex_hull_3/CMakeLists.txt
+++ b/Convex_hull_3/examples/Convex_hull_3/CMakeLists.txt
@@ -1,7 +1,7 @@
# Created by the script cgal_create_CMakeLists
# This is the CMake script for compiling a set of CGAL applications.
-cmake_minimum_required(VERSION 3.12...3.29)
+cmake_minimum_required(VERSION 3.12...3.31)
project(Convex_hull_3_Examples)
# CGAL and its components
diff --git a/Convex_hull_3/test/Convex_hull_3/CMakeLists.txt b/Convex_hull_3/test/Convex_hull_3/CMakeLists.txt
index 3f8e9eb6830..600579792d5 100644
--- a/Convex_hull_3/test/Convex_hull_3/CMakeLists.txt
+++ b/Convex_hull_3/test/Convex_hull_3/CMakeLists.txt
@@ -1,7 +1,7 @@
# Created by the script cgal_create_cmake_script
# This is the CMake script for compiling a CGAL application.
-cmake_minimum_required(VERSION 3.12...3.29)
+cmake_minimum_required(VERSION 3.12...3.31)
project(Convex_hull_3_Tests)
find_package(CGAL REQUIRED)
diff --git a/Convex_hull_d/test/Convex_hull_d/CMakeLists.txt b/Convex_hull_d/test/Convex_hull_d/CMakeLists.txt
index 5e04a505476..15d4dd6b201 100644
--- a/Convex_hull_d/test/Convex_hull_d/CMakeLists.txt
+++ b/Convex_hull_d/test/Convex_hull_d/CMakeLists.txt
@@ -1,7 +1,7 @@
# Created by the script cgal_create_cmake_script
# This is the CMake script for compiling a CGAL application.
-cmake_minimum_required(VERSION 3.12...3.29)
+cmake_minimum_required(VERSION 3.12...3.31)
project(Convex_hull_d_Tests)
find_package(CGAL REQUIRED)
diff --git a/Distance_2/test/Distance_2/CMakeLists.txt b/Distance_2/test/Distance_2/CMakeLists.txt
index 18adb56e7b8..944049ddb60 100644
--- a/Distance_2/test/Distance_2/CMakeLists.txt
+++ b/Distance_2/test/Distance_2/CMakeLists.txt
@@ -1,7 +1,7 @@
# Created by the script cgal_create_cmake_script
# This is the CMake script for compiling a CGAL application.
-cmake_minimum_required(VERSION 3.12...3.29)
+cmake_minimum_required(VERSION 3.12...3.31)
project(Distance_2_Tests)
find_package(CGAL REQUIRED)
diff --git a/Distance_3/test/Distance_3/CMakeLists.txt b/Distance_3/test/Distance_3/CMakeLists.txt
index 9d4d21a31ec..0bdc29865c1 100644
--- a/Distance_3/test/Distance_3/CMakeLists.txt
+++ b/Distance_3/test/Distance_3/CMakeLists.txt
@@ -1,7 +1,7 @@
# Created by the script cgal_create_cmake_script
# This is the CMake script for compiling a CGAL application.
-cmake_minimum_required(VERSION 3.12...3.29)
+cmake_minimum_required(VERSION 3.12...3.31)
project(Distance_3_Tests)
find_package(CGAL REQUIRED)
diff --git a/Documentation/doc/CMakeLists.txt b/Documentation/doc/CMakeLists.txt
index 52ee7faa48b..8695b4b144d 100644
--- a/Documentation/doc/CMakeLists.txt
+++ b/Documentation/doc/CMakeLists.txt
@@ -1,4 +1,4 @@
-cmake_minimum_required(VERSION 3.12...3.29)
+cmake_minimum_required(VERSION 3.12...3.31)
project(Documentation NONE)
# Check whether this cmake script is the top level one
@@ -24,6 +24,8 @@ else()
set(CGAL_ROOT "${CMAKE_SOURCE_DIR}")
endif()
+cmake_minimum_required(VERSION 3.18...3.31) # for list(SORT ... COMPARE NATURAL)
+
find_package(Doxygen REQUIRED)
find_package(Python3 REQUIRED COMPONENTS Interpreter)
@@ -32,7 +34,7 @@ if (NOT Python3_EXECUTABLE)
return()
endif()
-message(STATUS ${Python3_EXECUTABLE})
+message(VERBOSE "Using Python version ${Python3_VERSION}: ${Python3_EXECUTABLE}")
if(NOT DOXYGEN_FOUND)
message(WARNING "Cannot build the documentation without Doxygen!")
@@ -275,7 +277,7 @@ set(CGAL_DOC_DXY_DIR "${CMAKE_BINARY_DIR}/doc_dxy")
file(MAKE_DIRECTORY "${CGAL_DOC_DXY_DIR}")
#Setting the resource directory depending on the version of doxygen
-set(CGAL_DOC_RESOURCE_DIR_DEFAULT "${CMAKE_CURRENT_LIST_DIR}/resources/1.10.0")
+set(CGAL_DOC_RESOURCE_PREFIX_DIR "${CMAKE_CURRENT_LIST_DIR}/resources")
# first look if resources for the specific doxygen version is available, fallback
# on the default otherwise
@@ -283,12 +285,46 @@ set(CGAL_DOC_RESOURCE_DIR_DEFAULT "${CMAKE_CURRENT_LIST_DIR}/resources/1.10.0")
#select only the version number (not the commit hash)
string(REPLACE " " ";" DOXYGEN_VERSION ${DOXYGEN_VERSION})
list(GET DOXYGEN_VERSION 0 DOXYGEN_VERSION)
+message(VERBOSE "Doxygen version ${DOXYGEN_VERSION}: ${DOXYGEN_EXECUTABLE}")
-if(EXISTS "${CMAKE_CURRENT_LIST_DIR}/resources/${DOXYGEN_VERSION}")
- set(CGAL_DOC_RESOURCE_DIR
- "${CMAKE_CURRENT_LIST_DIR}/resources/${DOXYGEN_VERSION}")
+# The Doxygen version is search in that sorted list (to find the index for which the version is less or equal)
+set(CGAL_DOXYGEN_RESOURCES_VERSIONS 1.8.13 1.9.6 1.10.0)
+list(SORT CGAL_DOXYGEN_RESOURCES_VERSIONS COMPARE NATURAL)
+
+# The GLOB is here to check that the list in CGAL_DOXYGEN_RESOURCES_VERSIONS is correct.
+# CGAL_DOXYGEN_RESOURCES_DIRS is also used below.
+file(GLOB CGAL_DOXYGEN_RESOURCES_DIRS
+ RELATIVE "${CGAL_DOC_RESOURCE_PREFIX_DIR}"
+ "${CGAL_DOC_RESOURCE_PREFIX_DIR}/*")
+list(SORT CGAL_DOXYGEN_RESOURCES_DIRS COMPARE NATURAL)
+
+if(NOT CGAL_DOXYGEN_RESOURCES_DIRS STREQUAL CGAL_DOXYGEN_RESOURCES_VERSIONS)
+ message(FATAL "The directories in ${CGAL_DOC_RESOURCE_PREFIX_DIR} do not match the
+expected versions: [${CGAL_DOXYGEN_RESOURCES_VERSIONS}] vs [${CGAL_DOXYGEN_RESOURCES_DIRS}]")
+endif()
+
+function(CGAL_insert_in_sorted_list list_name value)
+ set(list ${${list_name}})
+ if(NOT value IN_LIST list)
+ list(APPEND list "${value}")
+ list(SORT list COMPARE NATURAL)
+ endif()
+ set(${list_name} ${list} PARENT_SCOPE)
+endfunction()
+
+if(DOXYGEN_VERSION IN_LIST CGAL_DOXYGEN_RESOURCES_VERSIONS)
+ list(FIND CGAL_DOXYGEN_RESOURCES_VERSIONS "${DOXYGEN_VERSION}" DOXYGEN_VERSION_INDEX)
else()
- set(CGAL_DOC_RESOURCE_DIR "${CGAL_DOC_RESOURCE_DIR_DEFAULT}")
+ CGAL_insert_in_sorted_list(CGAL_DOXYGEN_RESOURCES_VERSIONS ${DOXYGEN_VERSION})
+ list(FIND CGAL_DOXYGEN_RESOURCES_VERSIONS ${DOXYGEN_VERSION} DOXYGEN_VERSION_INDEX)
+ math(EXPR DOXYGEN_VERSION_INDEX "${DOXYGEN_VERSION_INDEX} - 1")
+endif()
+list(GET CGAL_DOXYGEN_RESOURCES_DIRS "${DOXYGEN_VERSION_INDEX}" CGAL_DOC_RESOURCE_DIR)
+set(CGAL_DOC_RESOURCE_DIR "${CGAL_DOC_RESOURCE_PREFIX_DIR}/${CGAL_DOC_RESOURCE_DIR}")
+if(NOT EXISTS "${CGAL_DOC_RESOURCE_DIR}")
+ message(FATAL_ERROR "Doxygen resources for version ${DOXYGEN_VERSION} not found")
+else()
+ message(VERBOSE "Using Doxygen resources from ${CGAL_DOC_RESOURCE_DIR}")
endif()
set(CGAL_DOC_BIBLIO_DIR "${CMAKE_CURRENT_LIST_DIR}/biblio")
diff --git a/Documentation/doc/Documentation/Developer_manual/Chapter_testing.txt b/Documentation/doc/Documentation/Developer_manual/Chapter_testing.txt
index 627d452e1b8..fc075c63253 100644
--- a/Documentation/doc/Documentation/Developer_manual/Chapter_testing.txt
+++ b/Documentation/doc/Documentation/Developer_manual/Chapter_testing.txt
@@ -8,48 +8,27 @@
Before submitting a change for integration into \cgal it is good style
to run the testsuite of the modified package and all packages that
could be impacted.
-Here is what you need:
-- A shell such as bash (install Cygwin, when you are on Windows)
-- optional: put `Scripts/scripts` and `Scripts/developer_scripts` on your `PATH` environment variable or
- Alternatively, you can call the scripts mentioned below using their full path or a relative path
-- define the environment variable `CGAL_DIR`. It should be the directory where you built CGAL.
-- optional: define the environment variables for Boost, GMP, and any optional third party lib, e.g. Eigen.
-- On Windows: define the environment variable `MAKE_CMD` (put the line `export MAKE_CMD=nmake` in your `$HOME/.bashrc` for VC++)
-- On Windows: define the environment variable `CMAKE_GENERATOR` (put the line export CMAKE_GENERATOR='-GNMake Makefiles' in your `$HOME/.bashrc` for VC++)
-- go in the directory you want to test
-- Run `cgal_test_with_cmake` in the `test` and `examples` directories of the package. This should run CMake, compile and run, and you can see what happened in the generated file `error.txt`.
+All examples and tests in CGAL are now compatible with `ctest`. So to test all examples or all tests
+of a package, you simply need to configure with `cmake` the examples/tests of the package you want to
+test, adding the option `CGAL_ENABLE_TESTING` and setting its value to `ON`. In order to report more
+warnings, it is recommended to also add the option `CGAL_DEV_MODE` and to set it to `ON`.
+Then a call to the command `ctest` will compile and run the tests/examples.
+
\section fullTestsuite Running the Whole Testsuite
We describe here how to proceed to the testing of a full copy of `master` or any branch by creating a flat release
(that is having a layout similar to a release rather than a branch layout with header files gathered by packages).
-The creation of the flat release is done using the script `create_internal_release` located in the directory `Scripts/developer_scripts`.
-Running the script with no argument will give the complete usage of this script. We only describe one way of using it.
+The creation of the flat release is done using the `cmake` script `cgal_create_release_with_cmake.cmake` located in the directory `Scripts/developer_scripts`.
+You can run it using the option `-P` of `cmake`: `cmake -P cgal_create_release_with_cmake.cmake`.
+For an up-to-date documentation of available options, check the comments at the beginning of the script.
-The prerequisite is to have a checkout of the branch we want to test.
-In the example, it will be located in ~/Git/cgal/.
-
-First one goes into a directory where the flat release will be created:
-\code
-> cd /tmp
-\endcode
-
-Then the script `create_internal_release` is ran:
-\code
- > create_internal_release -r CGAL-I-FOO -a ~/Git/cgal/
-\endcode
-
-The directory `CGAL-I-FOO` now contains the flat release of the branch in `~/Git/cgal`.
-Then you need to compile this flat release and set `CGAL_DIR` accordingly as explained in the installation manual.
-
-To run the test-suite simply do:
-\code
- > cd CGAL-I-FOO/test
- > ./run_testsuite_with_cmake
-\endcode
-and wait for the results to be written in the file `error.txt`.
+Then for testing all examples, tests, and demos, in a build directory call `cmake` on the created release
+(the path is given by the script if not manually specified)
+`cmake -DBUILD_TESTING=ON -DWITH_examples=ON -DWITH_tests=ON -DWITH_demos=ON ../CGAL-X.XX/`
+Finally, a call to the command `ctest` will compile and run the tests, examples, and demos.
*/
diff --git a/Documentation/doc/Documentation/Developer_manual/cmakelist_script.txt b/Documentation/doc/Documentation/Developer_manual/cmakelist_script.txt
index eeae486b236..da9bc70ce2a 100644
--- a/Documentation/doc/Documentation/Developer_manual/cmakelist_script.txt
+++ b/Documentation/doc/Documentation/Developer_manual/cmakelist_script.txt
@@ -35,6 +35,6 @@ These options should suffice to create a `CMakeLists.txt` script
for most directories containing programs. However, in some special
cases, it might still be required to create the script manually, for
instance, if some source files/executables need a different linking than
-other source files. The Section \subpage devman_create_and_use_a_cmakelist provides more details.
+other source files. The Section \ref devman_create_and_use_a_cmakelist provides more details.
*/
diff --git a/Documentation/doc/Documentation/Developer_manual/developer_manual.txt b/Documentation/doc/Documentation/Developer_manual/developer_manual.txt
index a133c654aba..6c3b3f0504a 100644
--- a/Documentation/doc/Documentation/Developer_manual/developer_manual.txt
+++ b/Documentation/doc/Documentation/Developer_manual/developer_manual.txt
@@ -23,4 +23,5 @@ The developer manual is primarily aimed at \cgal developers, but may also be int
- \subpage devman_info
- \subpage devman_create_cgal_CMakeLists
- \subpage deprecated
+- \subpage Doxygen_for_CGAL
*/
diff --git a/Documentation/doc/Documentation/Doxyfile.in b/Documentation/doc/Documentation/Doxyfile.in
index 1b174bb8635..d3e21f24daa 100644
--- a/Documentation/doc/Documentation/Doxyfile.in
+++ b/Documentation/doc/Documentation/Doxyfile.in
@@ -19,6 +19,7 @@ FILTER_PATTERNS = *.txt=${CMAKE_BINARY_DIR}/pkglist_filter
HTML_EXTRA_FILES += ${CGAL_DOC_RESOURCE_DIR}/hacks.js \
${CGAL_DOC_RESOURCE_DIR}/menu_version.js \
+ ${CGAL_DOC_RESOURCE_DIR}/cgal_stylesheet.css \
${CMAKE_BINARY_DIR}/how_to_cite_cgal.bib \
${CMAKE_BINARY_DIR}/how_to_cite.html \
${CGAL_PACKAGE_DOC_DIR}/fig/g-196x196-doc.png
diff --git a/Documentation/doc/Customizations.txt b/Documentation/doc/Documentation/Doxygen_for_CGAL.md
similarity index 77%
rename from Documentation/doc/Customizations.txt
rename to Documentation/doc/Documentation/Doxygen_for_CGAL.md
index c1debd91db6..2c13a7cc054 100644
--- a/Documentation/doc/Customizations.txt
+++ b/Documentation/doc/Documentation/Doxygen_for_CGAL.md
@@ -1,4 +1,4 @@
-# Doxygen for CGAL #
+\page Doxygen_for_CGAL Doxygen for CGAL
This is the documentation of doxygen hacks that are applied to make
the output of Doxygen more suitable to CGAL. It explains the general
@@ -14,17 +14,17 @@ hacks that create what you see.
### Package Overview ###
The package overview is build by having a special command that is
-filtered by the python script pkglist_filter.py.
+filtered by the python script `pkglist_filter.py`.
-A command has to be of the form \package_listing{PKG_NAME}, where
-PKG_NAME cannot contain a closing }.
+A command has to be of the form `\package_listing{PKG_NAME}`, where
+`PKG_NAME` cannot contain a closing `}`.
The command is replaced by the text between the two delimiters
-PkgDescBegin and PkgDescEnd in the file ../PKG_NAME/doc/PKG_NAME/PackageDescription.txt
+`cgalPkgDescriptionBegin` and `cgalPkgDescriptionEnd` in the file `../PKG_NAME/doc/PKG_NAME/PackageDescription.txt`
-If PKG_NAME is of the form A/B the selected file is
-../A/doc/B/PackageDescription.txt. This is to support packages like
-TDS_2, which don't reside in their own packages in the SCM.
+If `PKG_NAME` is of the form `A/B` the selected file is
+`../A/doc/B/PackageDescription.txt`. This is to support packages like
+`TDS_2`, which don't reside in their own packages in the SCM.
### Footnotes ###
@@ -50,13 +50,13 @@ LaTex.
This hack fiddles with the internal structures and functions of the
treeview to remove the unnecessary intermediate top-level module part.
-It assigns the first element of the module array (found in module.js)
+It assigns the first element of the module array (found in `module.js`)
to the Reference Manual entry. This makes the tree view link go to
that group directly instead of the intermediate link. It also removes
one level of nesting.
Unfortunately this changes the overall tree structure. To adjust for
-that we hijack the gotoNode function of navtree.js and *augment* it
+that we hijack the `gotoNode` function of `navtree.js` and *augment* it
with an additional check for the specific tree level we borked and
redirect it.
diff --git a/Documentation/doc/resources/1.10.0/BaseDoxyfile.in b/Documentation/doc/resources/1.10.0/BaseDoxyfile.in
index 29b43f5978b..fb19fbae049 100644
--- a/Documentation/doc/resources/1.10.0/BaseDoxyfile.in
+++ b/Documentation/doc/resources/1.10.0/BaseDoxyfile.in
@@ -486,24 +486,6 @@ HTML_HEADER = ${CGAL_DOC_HEADER_PACKAGE}
HTML_FOOTER = ${CGAL_DOC_RESOURCE_DIR}/footer.html
-# The HTML_EXTRA_STYLESHEET tag can be used to specify additional user-defined
-# cascading style sheets that are included after the standard style sheets
-# created by doxygen. Using this option one can overrule certain style aspects.
-# This is preferred over using HTML_STYLESHEET since it does not replace the
-# standard style sheet and is therefore more robust against future updates.
-# Doxygen will copy the style sheet files to the output directory.
-# Note: The order of the extra style sheet files is of importance (e.g. the last
-# style sheet in the list overrules the setting of the previous ones in the
-# list).
-# Note: Since the styling of scrollbars can currently not be overruled in
-# Webkit/Chromium, the styling will be left out of the default doxygen.css if
-# one or more extra stylesheets have been specified. So if scrollbar
-# customization is desired it has to be added explicitly. For an example see the
-# documentation.
-# This tag requires that the tag GENERATE_HTML is set to YES.
-
-HTML_EXTRA_STYLESHEET = ${CGAL_DOC_RESOURCE_DIR}/cgal_stylesheet.css
-
# Doxygen stores a couple of settings persistently in the browser (via e.g.
# cookies). By default these settings apply to all HTML pages generated by
# doxygen across all projects. The HTML_PROJECT_COOKIE tag can be used to store
diff --git a/Documentation/doc/resources/1.10.0/cgal_stylesheet.css b/Documentation/doc/resources/1.10.0/cgal_stylesheet.css
index 71fe3a10aff..d7d2a77ba35 100644
--- a/Documentation/doc/resources/1.10.0/cgal_stylesheet.css
+++ b/Documentation/doc/resources/1.10.0/cgal_stylesheet.css
@@ -52,7 +52,7 @@ h2 {
font-family: Arial, Helvetica;
font-weight: bold;
font-size: 12px;
- height: 14px;
+ height: 22px;
width: 16px;
display: inline-block;
background-color: #FF0000;
@@ -67,7 +67,7 @@ h2 {
font-family: Arial, Helvetica;
font-weight: bold;
font-size: 12px;
- height: 14px;
+ height: 22px;
width: 16px;
display: inline-block;
background-color: #0000FF;
@@ -82,7 +82,7 @@ h2 {
font-family: Arial, Helvetica;
font-weight: bold;
font-size: 12px;
- height: 14px;
+ height: 22px;
width: 16px;
display: inline-block;
background-color: #67489A;
diff --git a/Documentation/doc/resources/1.10.0/header.html b/Documentation/doc/resources/1.10.0/header.html
index 3549905fa84..0b1efb0d3c4 100644
--- a/Documentation/doc/resources/1.10.0/header.html
+++ b/Documentation/doc/resources/1.10.0/header.html
@@ -26,6 +26,7 @@ $search
$mathjax
$darkmode
+
$extrastylesheet
diff --git a/Documentation/doc/resources/1.10.0/header_package.html b/Documentation/doc/resources/1.10.0/header_package.html
index 19b6e358b4c..d39b6ab93dc 100644
--- a/Documentation/doc/resources/1.10.0/header_package.html
+++ b/Documentation/doc/resources/1.10.0/header_package.html
@@ -43,6 +43,7 @@
+
$mathjax
$darkmode
diff --git a/Documentation/doc/resources/1.8.13/BaseDoxyfile.in b/Documentation/doc/resources/1.8.13/BaseDoxyfile.in
index 7fb06630c20..4bd2e290d30 100644
--- a/Documentation/doc/resources/1.8.13/BaseDoxyfile.in
+++ b/Documentation/doc/resources/1.8.13/BaseDoxyfile.in
@@ -477,24 +477,6 @@ HTML_HEADER = ${CGAL_DOC_HEADER_PACKAGE}
HTML_FOOTER = ${CGAL_DOC_RESOURCE_DIR}/footer.html
-# The HTML_EXTRA_STYLESHEET tag can be used to specify additional user-defined
-# cascading style sheets that are included after the standard style sheets
-# created by doxygen. Using this option one can overrule certain style aspects.
-# This is preferred over using HTML_STYLESHEET since it does not replace the
-# standard style sheet and is therefore more robust against future updates.
-# Doxygen will copy the style sheet files to the output directory.
-# Note: The order of the extra style sheet files is of importance (e.g. the last
-# style sheet in the list overrules the setting of the previous ones in the
-# list).
-# Note: Since the styling of scrollbars can currently not be overruled in
-# Webkit/Chromium, the styling will be left out of the default doxygen.css if
-# one or more extra stylesheets have been specified. So if scrollbar
-# customization is desired it has to be added explicitly. For an example see the
-# documentation.
-# This tag requires that the tag GENERATE_HTML is set to YES.
-
-HTML_EXTRA_STYLESHEET = ${CGAL_DOC_RESOURCE_DIR}/cgal_stylesheet.css
-
# If the HTML_TIMESTAMP tag is set to YES then the footer of each generated HTML
# page will contain the date and time when the page was generated. Setting this
# to YES can help to show when doxygen was last run and thus if the
diff --git a/Documentation/doc/resources/1.8.13/header.html b/Documentation/doc/resources/1.8.13/header.html
index 8c8b86f5b9d..3400f24ed80 100644
--- a/Documentation/doc/resources/1.8.13/header.html
+++ b/Documentation/doc/resources/1.8.13/header.html
@@ -17,7 +17,6 @@ $treeview
$search
$mathjax
-
$extrastylesheet
diff --git a/Documentation/doc/resources/1.8.13/header_package.html b/Documentation/doc/resources/1.8.13/header_package.html
index 544fd3ced7f..4c3cd1e8591 100644
--- a/Documentation/doc/resources/1.8.13/header_package.html
+++ b/Documentation/doc/resources/1.8.13/header_package.html
@@ -33,7 +33,6 @@
-
-
$mathjax
$darkmode
diff --git a/Documentation/doc/scripts/pkglist_filter.py b/Documentation/doc/scripts/pkglist_filter.py
index 92208a6f4d9..f6cbff6c7d9 100755
--- a/Documentation/doc/scripts/pkglist_filter.py
+++ b/Documentation/doc/scripts/pkglist_filter.py
@@ -1,4 +1,4 @@
-#!/usr/bin/env python
+#!/usr/bin/env python3
import codecs
import re
@@ -28,16 +28,10 @@ def main(argv):
for l in pkgdesc:
do_print = do_print or re.match(".*cgalPkgDescriptionBegin.*", l)
if(do_print):
- if hasattr(sys.stdout, 'buffer'):
- sys.stdout.buffer.write(l.encode('utf-8')) #python3
- else:
- sys.stdout.write(l.encode('utf-8')) #python2
+ sys.stdout.buffer.write(l.encode('utf-8'))
do_print = do_print and (not re.match(".*cgalPkgDescriptionEnd.*", l))
else:
- if hasattr(sys.stdout, 'buffer'):
- sys.stdout.buffer.write(line.encode('utf-8')) #python3
- else:
- sys.stdout.write(line.encode('utf-8')) #python2
+ sys.stdout.buffer.write(line.encode('utf-8'))
if __name__ == "__main__":
main(sys.argv)
diff --git a/Envelope_2/examples/Envelope_2/CMakeLists.txt b/Envelope_2/examples/Envelope_2/CMakeLists.txt
index 54144877d58..4afdfc6f5f8 100644
--- a/Envelope_2/examples/Envelope_2/CMakeLists.txt
+++ b/Envelope_2/examples/Envelope_2/CMakeLists.txt
@@ -1,7 +1,7 @@
# Created by the script cgal_create_cmake_script
# This is the CMake script for compiling a CGAL application.
-cmake_minimum_required(VERSION 3.12...3.29)
+cmake_minimum_required(VERSION 3.12...3.31)
project(Envelope_2_Examples)
find_package(CGAL REQUIRED)
diff --git a/Envelope_2/test/Envelope_2/CMakeLists.txt b/Envelope_2/test/Envelope_2/CMakeLists.txt
index 37225c2f3a0..9e771071fb6 100644
--- a/Envelope_2/test/Envelope_2/CMakeLists.txt
+++ b/Envelope_2/test/Envelope_2/CMakeLists.txt
@@ -1,7 +1,7 @@
# Created by the script cgal_create_cmake_script
# This is the CMake script for compiling a CGAL application.
-cmake_minimum_required(VERSION 3.12...3.29)
+cmake_minimum_required(VERSION 3.12...3.31)
project(Envelope_2_Tests)
find_package(CGAL REQUIRED)
diff --git a/Envelope_3/examples/Envelope_3/CMakeLists.txt b/Envelope_3/examples/Envelope_3/CMakeLists.txt
index 089c44b56b4..283a2b54ce4 100644
--- a/Envelope_3/examples/Envelope_3/CMakeLists.txt
+++ b/Envelope_3/examples/Envelope_3/CMakeLists.txt
@@ -1,7 +1,7 @@
# Created by the script cgal_create_cmake_script
# This is the CMake script for compiling a CGAL application.
-cmake_minimum_required(VERSION 3.12...3.29)
+cmake_minimum_required(VERSION 3.12...3.31)
project(Envelope_3_Examples)
find_package(CGAL REQUIRED COMPONENTS Core)
diff --git a/Envelope_3/test/Envelope_3/CMakeLists.txt b/Envelope_3/test/Envelope_3/CMakeLists.txt
index 251474dc57a..b9038463e38 100644
--- a/Envelope_3/test/Envelope_3/CMakeLists.txt
+++ b/Envelope_3/test/Envelope_3/CMakeLists.txt
@@ -1,7 +1,7 @@
# Created by the script cgal_create_cmake_script
# This is the CMake script for compiling a CGAL application.
-cmake_minimum_required(VERSION 3.12...3.29)
+cmake_minimum_required(VERSION 3.12...3.31)
project(Envelope_3_Tests)
find_package(CGAL REQUIRED COMPONENTS Core)
diff --git a/Filtered_kernel/benchmark/Filtered_kernel/CMakeLists.txt b/Filtered_kernel/benchmark/Filtered_kernel/CMakeLists.txt
index 9852fdad283..290027a019c 100644
--- a/Filtered_kernel/benchmark/Filtered_kernel/CMakeLists.txt
+++ b/Filtered_kernel/benchmark/Filtered_kernel/CMakeLists.txt
@@ -1,7 +1,7 @@
# Created by the script cgal_create_cmake_script
# This is the CMake script for compiling a CGAL application.
-cmake_minimum_required(VERSION 3.12...3.29)
+cmake_minimum_required(VERSION 3.12...3.31)
project(Filtered_kernel_test)
add_executable(bench_simple_comparisons bench_simple_comparisons.cpp)
diff --git a/Filtered_kernel/examples/Filtered_kernel/CMakeLists.txt b/Filtered_kernel/examples/Filtered_kernel/CMakeLists.txt
index bd9a629f447..cd7bdb737ce 100644
--- a/Filtered_kernel/examples/Filtered_kernel/CMakeLists.txt
+++ b/Filtered_kernel/examples/Filtered_kernel/CMakeLists.txt
@@ -1,7 +1,7 @@
# Created by the script cgal_create_cmake_script
# This is the CMake script for compiling a CGAL application.
-cmake_minimum_required(VERSION 3.12...3.29)
+cmake_minimum_required(VERSION 3.12...3.31)
project(Filtered_kernel_Examples)
find_package(CGAL REQUIRED)
diff --git a/Filtered_kernel/test/Filtered_kernel/CMakeLists.txt b/Filtered_kernel/test/Filtered_kernel/CMakeLists.txt
index da741c2f754..1536d81a950 100644
--- a/Filtered_kernel/test/Filtered_kernel/CMakeLists.txt
+++ b/Filtered_kernel/test/Filtered_kernel/CMakeLists.txt
@@ -1,7 +1,7 @@
# Created by the script cgal_create_cmake_script
# This is the CMake script for compiling a CGAL application.
-cmake_minimum_required(VERSION 3.12...3.29)
+cmake_minimum_required(VERSION 3.12...3.31)
project(Filtered_kernel_Tests)
find_package(CGAL REQUIRED)
diff --git a/Generalized_map/examples/Generalized_map/CMakeLists.txt b/Generalized_map/examples/Generalized_map/CMakeLists.txt
index d0ec729d64c..84d5801abdc 100644
--- a/Generalized_map/examples/Generalized_map/CMakeLists.txt
+++ b/Generalized_map/examples/Generalized_map/CMakeLists.txt
@@ -1,7 +1,7 @@
# Created by the script cgal_create_cmake_script
# This is the CMake script for compiling a CGAL application.
-cmake_minimum_required(VERSION 3.12...3.29)
+cmake_minimum_required(VERSION 3.12...3.31)
project(Generalized_map_Examples)
find_package(CGAL REQUIRED)
diff --git a/Generalized_map/test/Generalized_map/CMakeLists.txt b/Generalized_map/test/Generalized_map/CMakeLists.txt
index 24ac67748cd..792b023745e 100644
--- a/Generalized_map/test/Generalized_map/CMakeLists.txt
+++ b/Generalized_map/test/Generalized_map/CMakeLists.txt
@@ -1,7 +1,7 @@
# Created by the script cgal_create_CMakeLists
# This is the CMake script for compiling a set of CGAL applications.
-cmake_minimum_required(VERSION 3.12...3.29)
+cmake_minimum_required(VERSION 3.12...3.31)
project(Generalized_map_Tests)
# CGAL and its components
diff --git a/Generator/benchmark/Generator/CMakeLists.txt b/Generator/benchmark/Generator/CMakeLists.txt
index e1daf72a299..b8d4c9b9e01 100644
--- a/Generator/benchmark/Generator/CMakeLists.txt
+++ b/Generator/benchmark/Generator/CMakeLists.txt
@@ -1,7 +1,7 @@
# Created by the script cgal_create_cmake_script
# This is the CMake script for compiling a CGAL application.
-cmake_minimum_required(VERSION 3.12...3.29)
+cmake_minimum_required(VERSION 3.12...3.31)
project(Generator_example)
find_package(CGAL REQUIRED COMPONENTS Core)
diff --git a/Generator/examples/Generator/CMakeLists.txt b/Generator/examples/Generator/CMakeLists.txt
index 39e4934705d..0575929b894 100644
--- a/Generator/examples/Generator/CMakeLists.txt
+++ b/Generator/examples/Generator/CMakeLists.txt
@@ -1,7 +1,7 @@
# Created by the script cgal_create_cmake_script
# This is the CMake script for compiling a CGAL application.
-cmake_minimum_required(VERSION 3.12...3.29)
+cmake_minimum_required(VERSION 3.12...3.31)
project(Generator_Examples)
find_package(CGAL REQUIRED)
diff --git a/Generator/test/Generator/CMakeLists.txt b/Generator/test/Generator/CMakeLists.txt
index e7708299971..060c4b02905 100644
--- a/Generator/test/Generator/CMakeLists.txt
+++ b/Generator/test/Generator/CMakeLists.txt
@@ -1,7 +1,7 @@
# Created by the script cgal_create_cmake_script
# This is the CMake script for compiling a CGAL application.
-cmake_minimum_required(VERSION 3.12...3.29)
+cmake_minimum_required(VERSION 3.12...3.31)
project(Generator_Tests)
find_package(CGAL REQUIRED)
diff --git a/GraphicsView/demo/Alpha_shapes_2/CMakeLists.txt b/GraphicsView/demo/Alpha_shapes_2/CMakeLists.txt
index d421e758dc2..0f092bdddba 100644
--- a/GraphicsView/demo/Alpha_shapes_2/CMakeLists.txt
+++ b/GraphicsView/demo/Alpha_shapes_2/CMakeLists.txt
@@ -1,7 +1,7 @@
# Created by the script cgal_create_cmake_script
# This is the CMake script for compiling a CGAL application.
-cmake_minimum_required(VERSION 3.12...3.29)
+cmake_minimum_required(VERSION 3.12...3.31)
project(Alpha_shapes_2_Demo)
find_package(CGAL REQUIRED OPTIONAL_COMPONENTS Qt6)
diff --git a/GraphicsView/demo/Apollonius_graph_2/CMakeLists.txt b/GraphicsView/demo/Apollonius_graph_2/CMakeLists.txt
index 79a9c584324..0e495788267 100644
--- a/GraphicsView/demo/Apollonius_graph_2/CMakeLists.txt
+++ b/GraphicsView/demo/Apollonius_graph_2/CMakeLists.txt
@@ -1,7 +1,7 @@
# Created by the script cgal_create_cmake_script
# This is the CMake script for compiling a CGAL application.
-cmake_minimum_required(VERSION 3.12...3.29)
+cmake_minimum_required(VERSION 3.12...3.31)
project(Apollonius_graph_2_Demo)
find_package(CGAL REQUIRED OPTIONAL_COMPONENTS Qt6)
diff --git a/GraphicsView/demo/Bounding_volumes/CMakeLists.txt b/GraphicsView/demo/Bounding_volumes/CMakeLists.txt
index 7a1c55e2375..a28575fd8a7 100644
--- a/GraphicsView/demo/Bounding_volumes/CMakeLists.txt
+++ b/GraphicsView/demo/Bounding_volumes/CMakeLists.txt
@@ -1,7 +1,7 @@
# Created by the script cgal_create_cmake_script
# This is the CMake script for compiling a CGAL application.
-cmake_minimum_required(VERSION 3.12...3.29)
+cmake_minimum_required(VERSION 3.12...3.31)
project(Bounding_volumes_Demo)
find_package(CGAL REQUIRED OPTIONAL_COMPONENTS Qt6)
diff --git a/GraphicsView/demo/Circular_kernel_2/CMakeLists.txt b/GraphicsView/demo/Circular_kernel_2/CMakeLists.txt
index 3689b6a4495..7f84c3aa5e6 100644
--- a/GraphicsView/demo/Circular_kernel_2/CMakeLists.txt
+++ b/GraphicsView/demo/Circular_kernel_2/CMakeLists.txt
@@ -1,7 +1,7 @@
# Created by the script cgal_create_cmake_script
# This is the CMake script for compiling a CGAL application.
-cmake_minimum_required(VERSION 3.12...3.29)
+cmake_minimum_required(VERSION 3.12...3.31)
project(Circular_kernel_2_Demo)
find_package(CGAL REQUIRED OPTIONAL_COMPONENTS Qt6)
diff --git a/GraphicsView/demo/Generator/CMakeLists.txt b/GraphicsView/demo/Generator/CMakeLists.txt
index 75ab3c6083e..b1b3ef328c6 100644
--- a/GraphicsView/demo/Generator/CMakeLists.txt
+++ b/GraphicsView/demo/Generator/CMakeLists.txt
@@ -1,6 +1,6 @@
# This is the CMake script for compiling a CGAL application.
-cmake_minimum_required(VERSION 3.12...3.29)
+cmake_minimum_required(VERSION 3.12...3.31)
project(Generator_Demo)
find_package(CGAL REQUIRED OPTIONAL_COMPONENTS Qt6)
diff --git a/GraphicsView/demo/GraphicsView/CMakeLists.txt b/GraphicsView/demo/GraphicsView/CMakeLists.txt
index 9568fd3efae..357832f21b3 100644
--- a/GraphicsView/demo/GraphicsView/CMakeLists.txt
+++ b/GraphicsView/demo/GraphicsView/CMakeLists.txt
@@ -1,6 +1,6 @@
# This is the CMake script for compiling a CGAL application.
-cmake_minimum_required(VERSION 3.12...3.29)
+cmake_minimum_required(VERSION 3.12...3.31)
project(GraphicsView_Demo)
find_package(CGAL REQUIRED OPTIONAL_COMPONENTS Qt6)
diff --git a/GraphicsView/demo/L1_Voronoi_diagram_2/CMakeLists.txt b/GraphicsView/demo/L1_Voronoi_diagram_2/CMakeLists.txt
index 0a682e80fa8..b08284c8501 100644
--- a/GraphicsView/demo/L1_Voronoi_diagram_2/CMakeLists.txt
+++ b/GraphicsView/demo/L1_Voronoi_diagram_2/CMakeLists.txt
@@ -1,7 +1,7 @@
# Created by the script cgal_create_cmake_script
# This is the CMake script for compiling a CGAL application.
-cmake_minimum_required(VERSION 3.12...3.29)
+cmake_minimum_required(VERSION 3.12...3.31)
project(L1_Voronoi_diagram_2_Demo)
find_package(CGAL REQUIRED OPTIONAL_COMPONENTS Qt6)
diff --git a/GraphicsView/demo/Largest_empty_rect_2/CMakeLists.txt b/GraphicsView/demo/Largest_empty_rect_2/CMakeLists.txt
index 2dbae37b697..970f4eb17ba 100644
--- a/GraphicsView/demo/Largest_empty_rect_2/CMakeLists.txt
+++ b/GraphicsView/demo/Largest_empty_rect_2/CMakeLists.txt
@@ -1,7 +1,7 @@
# Created by the script cgal_create_cmake_script
# This is the CMake script for compiling a CGAL application.
-cmake_minimum_required(VERSION 3.12...3.29)
+cmake_minimum_required(VERSION 3.12...3.31)
project(Largest_empty_rect_2_Demo)
find_package(CGAL REQUIRED OPTIONAL_COMPONENTS Qt6)
diff --git a/GraphicsView/demo/Periodic_2_triangulation_2/CMakeLists.txt b/GraphicsView/demo/Periodic_2_triangulation_2/CMakeLists.txt
index f630c8c6e80..08f3756e10f 100644
--- a/GraphicsView/demo/Periodic_2_triangulation_2/CMakeLists.txt
+++ b/GraphicsView/demo/Periodic_2_triangulation_2/CMakeLists.txt
@@ -1,4 +1,4 @@
-cmake_minimum_required(VERSION 3.12...3.29)
+cmake_minimum_required(VERSION 3.12...3.31)
project(Periodic_2_triangulation_2_Demo)
find_package(CGAL REQUIRED OPTIONAL_COMPONENTS Qt6)
diff --git a/GraphicsView/demo/Polygon/CMakeLists.txt b/GraphicsView/demo/Polygon/CMakeLists.txt
index 85a964989c8..eb899f59ba3 100644
--- a/GraphicsView/demo/Polygon/CMakeLists.txt
+++ b/GraphicsView/demo/Polygon/CMakeLists.txt
@@ -1,7 +1,7 @@
# Created by the script cgal_create_cmake_script
# This is the CMake script for compiling a CGAL application.
-cmake_minimum_required(VERSION 3.12...3.29)
+cmake_minimum_required(VERSION 3.12...3.31)
project(Polygon_Demo)
find_package(CGAL REQUIRED OPTIONAL_COMPONENTS Qt6 Core)
diff --git a/GraphicsView/demo/Segment_Delaunay_graph_2/CMakeLists.txt b/GraphicsView/demo/Segment_Delaunay_graph_2/CMakeLists.txt
index 7f805e60986..2ea54637c3c 100644
--- a/GraphicsView/demo/Segment_Delaunay_graph_2/CMakeLists.txt
+++ b/GraphicsView/demo/Segment_Delaunay_graph_2/CMakeLists.txt
@@ -1,7 +1,7 @@
# Created by the script cgal_create_cmake_script
# This is the CMake script for compiling a CGAL application.
-cmake_minimum_required(VERSION 3.12...3.29)
+cmake_minimum_required(VERSION 3.12...3.31)
project(Segment_Delaunay_graph_2_Demo)
find_package(CGAL REQUIRED OPTIONAL_COMPONENTS Qt6 Core)
diff --git a/GraphicsView/demo/Segment_Delaunay_graph_Linf_2/CMakeLists.txt b/GraphicsView/demo/Segment_Delaunay_graph_Linf_2/CMakeLists.txt
index fc773d81ace..d7aafeb267e 100644
--- a/GraphicsView/demo/Segment_Delaunay_graph_Linf_2/CMakeLists.txt
+++ b/GraphicsView/demo/Segment_Delaunay_graph_Linf_2/CMakeLists.txt
@@ -1,7 +1,7 @@
# Created by the script cgal_create_cmake_script
# This is the CMake script for compiling a CGAL application.
-cmake_minimum_required(VERSION 3.12...3.29)
+cmake_minimum_required(VERSION 3.12...3.31)
project(Segment_Delaunay_graph_Linf_2_Demo)
find_package(CGAL REQUIRED OPTIONAL_COMPONENTS Qt6 Core)
diff --git a/GraphicsView/demo/Snap_rounding_2/CMakeLists.txt b/GraphicsView/demo/Snap_rounding_2/CMakeLists.txt
index 9d3c41854bf..ea60ca9c267 100644
--- a/GraphicsView/demo/Snap_rounding_2/CMakeLists.txt
+++ b/GraphicsView/demo/Snap_rounding_2/CMakeLists.txt
@@ -1,7 +1,7 @@
# Created by the script cgal_create_cmake_script
# This is the CMake script for compiling a CGAL application.
-cmake_minimum_required(VERSION 3.12...3.29)
+cmake_minimum_required(VERSION 3.12...3.31)
project(Snap_rounding_2_Demo)
find_package(CGAL REQUIRED OPTIONAL_COMPONENTS Qt6)
diff --git a/GraphicsView/demo/Spatial_searching_2/CMakeLists.txt b/GraphicsView/demo/Spatial_searching_2/CMakeLists.txt
index fd02ea6c1e9..a4a73095859 100644
--- a/GraphicsView/demo/Spatial_searching_2/CMakeLists.txt
+++ b/GraphicsView/demo/Spatial_searching_2/CMakeLists.txt
@@ -1,7 +1,7 @@
# Created by the script cgal_create_cmake_script
# This is the CMake script for compiling a CGAL application.
-cmake_minimum_required(VERSION 3.12...3.29)
+cmake_minimum_required(VERSION 3.12...3.31)
project(Spatial_searching_2_Demo)
find_package(CGAL REQUIRED OPTIONAL_COMPONENTS Qt6)
diff --git a/GraphicsView/demo/Stream_lines_2/CMakeLists.txt b/GraphicsView/demo/Stream_lines_2/CMakeLists.txt
index 3c76339638a..d07003892d3 100644
--- a/GraphicsView/demo/Stream_lines_2/CMakeLists.txt
+++ b/GraphicsView/demo/Stream_lines_2/CMakeLists.txt
@@ -1,7 +1,7 @@
# Created by the script cgal_create_cmake_script
# This is the CMake script for compiling a CGAL application.
-cmake_minimum_required(VERSION 3.12...3.29)
+cmake_minimum_required(VERSION 3.12...3.31)
project(Stream_lines_2_Demo)
find_package(CGAL REQUIRED OPTIONAL_COMPONENTS Qt6)
diff --git a/GraphicsView/demo/Triangulation_2/CMakeLists.txt b/GraphicsView/demo/Triangulation_2/CMakeLists.txt
index 141852b3ed5..613df8d2348 100644
--- a/GraphicsView/demo/Triangulation_2/CMakeLists.txt
+++ b/GraphicsView/demo/Triangulation_2/CMakeLists.txt
@@ -1,7 +1,7 @@
# Created by the script cgal_create_cmake_script
# This is the CMake script for compiling a CGAL application.
-cmake_minimum_required(VERSION 3.12...3.29)
+cmake_minimum_required(VERSION 3.12...3.31)
project(Triangulation_2_Demo)
set(CMAKE_AUTOMOC ON)
diff --git a/HalfedgeDS/examples/HalfedgeDS/CMakeLists.txt b/HalfedgeDS/examples/HalfedgeDS/CMakeLists.txt
index 49a4bd1c16f..d2669e130dc 100644
--- a/HalfedgeDS/examples/HalfedgeDS/CMakeLists.txt
+++ b/HalfedgeDS/examples/HalfedgeDS/CMakeLists.txt
@@ -1,7 +1,7 @@
# Created by the script cgal_create_cmake_script
# This is the CMake script for compiling a CGAL application.
-cmake_minimum_required(VERSION 3.12...3.29)
+cmake_minimum_required(VERSION 3.12...3.31)
project(HalfedgeDS_Examples)
find_package(CGAL REQUIRED)
diff --git a/HalfedgeDS/test/HalfedgeDS/CMakeLists.txt b/HalfedgeDS/test/HalfedgeDS/CMakeLists.txt
index bab4ef15f0a..cd29aa12692 100644
--- a/HalfedgeDS/test/HalfedgeDS/CMakeLists.txt
+++ b/HalfedgeDS/test/HalfedgeDS/CMakeLists.txt
@@ -1,7 +1,7 @@
# Created by the script cgal_create_cmake_script
# This is the CMake script for compiling a CGAL application.
-cmake_minimum_required(VERSION 3.12...3.29)
+cmake_minimum_required(VERSION 3.12...3.31)
project(HalfedgeDS_Tests)
find_package(CGAL REQUIRED)
diff --git a/Hash_map/benchmark/Hash_map/CMakeLists.txt b/Hash_map/benchmark/Hash_map/CMakeLists.txt
index 51860317694..860f31fd055 100644
--- a/Hash_map/benchmark/Hash_map/CMakeLists.txt
+++ b/Hash_map/benchmark/Hash_map/CMakeLists.txt
@@ -1,7 +1,7 @@
# Created by the script cgal_create_CMakeLists
# This is the CMake script for compiling a set of CGAL applications.
-cmake_minimum_required(VERSION 3.12...3.29)
+cmake_minimum_required(VERSION 3.12...3.31)
project(Hash_map)
# CGAL and its components
diff --git a/Hash_map/test/Hash_map/CMakeLists.txt b/Hash_map/test/Hash_map/CMakeLists.txt
index c2a6220bc7a..22e0de0f9a6 100644
--- a/Hash_map/test/Hash_map/CMakeLists.txt
+++ b/Hash_map/test/Hash_map/CMakeLists.txt
@@ -1,7 +1,7 @@
# Created by the script cgal_create_cmake_script
# This is the CMake script for compiling a CGAL application.
-cmake_minimum_required(VERSION 3.12...3.29)
+cmake_minimum_required(VERSION 3.12...3.31)
project(Hash_map_Tests)
find_package(CGAL REQUIRED)
diff --git a/Heat_method_3/examples/Heat_method_3/CMakeLists.txt b/Heat_method_3/examples/Heat_method_3/CMakeLists.txt
index 250921f012f..8bc9d360ca3 100644
--- a/Heat_method_3/examples/Heat_method_3/CMakeLists.txt
+++ b/Heat_method_3/examples/Heat_method_3/CMakeLists.txt
@@ -1,7 +1,7 @@
# Created by the script cgal_create_CMakeLists
# This is the CMake script for compiling a set of CGAL applications.
-cmake_minimum_required(VERSION 3.12...3.29)
+cmake_minimum_required(VERSION 3.12...3.31)
project(Heat_method_3_Examples)
# CGAL and its components
diff --git a/Heat_method_3/test/Heat_method_3/CMakeLists.txt b/Heat_method_3/test/Heat_method_3/CMakeLists.txt
index 056f15040a3..f8b3f13f0b1 100644
--- a/Heat_method_3/test/Heat_method_3/CMakeLists.txt
+++ b/Heat_method_3/test/Heat_method_3/CMakeLists.txt
@@ -1,7 +1,7 @@
# Created by the script cgal_create_CMakeLists
# This is the CMake script for compiling a set of CGAL applications.
-cmake_minimum_required(VERSION 3.12...3.29)
+cmake_minimum_required(VERSION 3.12...3.31)
project(Heat_method_3_Tests)
# CGAL and its components
diff --git a/Hyperbolic_triangulation_2/benchmark/Hyperbolic_triangulation_2/CMakeLists.txt b/Hyperbolic_triangulation_2/benchmark/Hyperbolic_triangulation_2/CMakeLists.txt
index 7664529ebee..55c2cce7fb5 100644
--- a/Hyperbolic_triangulation_2/benchmark/Hyperbolic_triangulation_2/CMakeLists.txt
+++ b/Hyperbolic_triangulation_2/benchmark/Hyperbolic_triangulation_2/CMakeLists.txt
@@ -1,7 +1,7 @@
# Created by the script cgal_create_cmake_script
# This is the CMake script for compiling a CGAL application.
-cmake_minimum_required(VERSION 3.12...3.29)
+cmake_minimum_required(VERSION 3.12...3.31)
project(Hyperbolic_triangulation_2_benchmark)
find_package(CGAL REQUIRED COMPONENTS Core)
diff --git a/Hyperbolic_triangulation_2/demo/Hyperbolic_triangulation_2/CMakeLists.txt b/Hyperbolic_triangulation_2/demo/Hyperbolic_triangulation_2/CMakeLists.txt
index 7c0da4ed37b..c27e6da78fa 100644
--- a/Hyperbolic_triangulation_2/demo/Hyperbolic_triangulation_2/CMakeLists.txt
+++ b/Hyperbolic_triangulation_2/demo/Hyperbolic_triangulation_2/CMakeLists.txt
@@ -1,4 +1,4 @@
-cmake_minimum_required(VERSION 3.12...3.29)
+cmake_minimum_required(VERSION 3.12...3.31)
project(Hyperbolic_triangulation_2_Demo)
# Find includes in corresponding build directories
diff --git a/Hyperbolic_triangulation_2/examples/Hyperbolic_triangulation_2/CMakeLists.txt b/Hyperbolic_triangulation_2/examples/Hyperbolic_triangulation_2/CMakeLists.txt
index 04291fd4612..48b87097c62 100644
--- a/Hyperbolic_triangulation_2/examples/Hyperbolic_triangulation_2/CMakeLists.txt
+++ b/Hyperbolic_triangulation_2/examples/Hyperbolic_triangulation_2/CMakeLists.txt
@@ -1,7 +1,7 @@
# Created by the script cgal_create_cmake_script
# This is the CMake script for compiling a CGAL application.
-cmake_minimum_required(VERSION 3.12...3.29)
+cmake_minimum_required(VERSION 3.12...3.31)
project(Hyperbolic_triangulation_2_Examples)
find_package(CGAL REQUIRED COMPONENTS Core)
diff --git a/Hyperbolic_triangulation_2/test/Hyperbolic_triangulation_2/CMakeLists.txt b/Hyperbolic_triangulation_2/test/Hyperbolic_triangulation_2/CMakeLists.txt
index 4d4c4397245..4c251645f27 100644
--- a/Hyperbolic_triangulation_2/test/Hyperbolic_triangulation_2/CMakeLists.txt
+++ b/Hyperbolic_triangulation_2/test/Hyperbolic_triangulation_2/CMakeLists.txt
@@ -1,7 +1,7 @@
# Created by the script cgal_create_cmake_script
# This is the CMake script for compiling a CGAL application.
-cmake_minimum_required(VERSION 3.12...3.29)
+cmake_minimum_required(VERSION 3.12...3.31)
project(Hyperbolic_triangulation_2_Tests)
find_package(CGAL REQUIRED COMPONENTS Core)
diff --git a/Inscribed_areas/examples/Inscribed_areas/CMakeLists.txt b/Inscribed_areas/examples/Inscribed_areas/CMakeLists.txt
index ae8130bfe5d..b9a8add8e8e 100644
--- a/Inscribed_areas/examples/Inscribed_areas/CMakeLists.txt
+++ b/Inscribed_areas/examples/Inscribed_areas/CMakeLists.txt
@@ -1,7 +1,7 @@
# Created by the script cgal_create_cmake_script
# This is the CMake script for compiling a CGAL application.
-cmake_minimum_required(VERSION 3.12...3.29)
+cmake_minimum_required(VERSION 3.12...3.31)
project(Inscribed_areas_Examples)
find_package(CGAL REQUIRED)
diff --git a/Inscribed_areas/test/Inscribed_areas/CMakeLists.txt b/Inscribed_areas/test/Inscribed_areas/CMakeLists.txt
index afd79762867..0b5ba8ac02e 100644
--- a/Inscribed_areas/test/Inscribed_areas/CMakeLists.txt
+++ b/Inscribed_areas/test/Inscribed_areas/CMakeLists.txt
@@ -1,7 +1,7 @@
# Created by the script cgal_create_cmake_script
# This is the CMake script for compiling a CGAL application.
-cmake_minimum_required(VERSION 3.12...3.29)
+cmake_minimum_required(VERSION 3.12...3.31)
project(Inscribed_areas_Tests)
find_package(CGAL REQUIRED)
diff --git a/Installation/CHANGES.md b/Installation/CHANGES.md
index 1a59d0c3b39..e5d5ee5be91 100644
--- a/Installation/CHANGES.md
+++ b/Installation/CHANGES.md
@@ -13,6 +13,14 @@
### [2D Arrangements](https://doc.cgal.org/6.1/Manual/packages.html#PkgArrangementOnSurface2)
- Introduces two traits decorators, namely `Arr_tracing_traits_2` and `Arr_counting_traits_2`, which can be used to extract debugging and informative metadata about the traits in use while a program is being executed.
+- Fixed the Landmark point-location strategy so that it can be applied to arrangements on a sphere.
+
+### [3D Mesh Generation](https://doc.cgal.org/6.1/Manual/packages.html#PkgMesh3)
+
+- Added two new meshing parameters that enable mesh initialization customization :
+ - `initial_points_generator` : enables the user to specify a functor that generates initial points,
+ - `initial_points` : enables the user to specify a `Range` of initial points.
+
### [2D Triangulations](https://doc.cgal.org/6.1/Manual/packages.html#PkgTriangulation2)
diff --git a/Installation/CMakeLists.txt b/Installation/CMakeLists.txt
index f0b7a66b321..0cdd9edf184 100644
--- a/Installation/CMakeLists.txt
+++ b/Installation/CMakeLists.txt
@@ -4,7 +4,7 @@
# ${CGAL_SOURCE_DIR} and to the root binary directory of the project as
# ${CGAL_BINARY_DIR} or ${CGAL_BINARY_DIR}.
if(NOT PROJECT_NAME)
- cmake_minimum_required(VERSION 3.12...3.29)
+ cmake_minimum_required(VERSION 3.12...3.31)
project(CGAL CXX C)
endif()
diff --git a/Installation/cmake/modules/CGAL_Boost_iostreams_support.cmake b/Installation/cmake/modules/CGAL_Boost_iostreams_support.cmake
index 0b0a2b80b1b..464d2bdd911 100644
--- a/Installation/cmake/modules/CGAL_Boost_iostreams_support.cmake
+++ b/Installation/cmake/modules/CGAL_Boost_iostreams_support.cmake
@@ -1,4 +1,4 @@
-cmake_minimum_required(VERSION 3.12...3.29)
+cmake_minimum_required(VERSION 3.12...3.31)
if(Boost_IOSTREAMS_FOUND AND NOT TARGET CGAL::Boost_iostreams_support)
if( WIN32 )
diff --git a/Installation/cmake/modules/CGAL_SetupCGALDependencies.cmake b/Installation/cmake/modules/CGAL_SetupCGALDependencies.cmake
index e3dadc7b4e4..a73e12026d1 100644
--- a/Installation/cmake/modules/CGAL_SetupCGALDependencies.cmake
+++ b/Installation/cmake/modules/CGAL_SetupCGALDependencies.cmake
@@ -23,7 +23,7 @@
# If set, the `LEDA` library will be searched and used to provide
# the exact number types used by CGAL kernels.
#
-cmake_minimum_required(VERSION 3.12...3.29)
+cmake_minimum_required(VERSION 3.12...3.31)
if(CGAL_SetupCGALDependencies_included)
return()
endif()
diff --git a/Installation/cmake/modules/CGAL_SetupLEDA.cmake b/Installation/cmake/modules/CGAL_SetupLEDA.cmake
index 171f6f39e9d..4037c21f5b1 100644
--- a/Installation/cmake/modules/CGAL_SetupLEDA.cmake
+++ b/Installation/cmake/modules/CGAL_SetupLEDA.cmake
@@ -9,7 +9,7 @@
# find_package(LEDA)
#
# and defines the function :command:`use_CGAL_LEDA_support`.
-cmake_minimum_required(VERSION 3.12...3.29)
+cmake_minimum_required(VERSION 3.12...3.31)
if(CGAL_SetupLEDA_included)
return()
endif()
diff --git a/Installation/cmake/modules/CGAL_enable_end_of_configuration_hook.cmake b/Installation/cmake/modules/CGAL_enable_end_of_configuration_hook.cmake
index 4559bf506d1..43d17a055f8 100644
--- a/Installation/cmake/modules/CGAL_enable_end_of_configuration_hook.cmake
+++ b/Installation/cmake/modules/CGAL_enable_end_of_configuration_hook.cmake
@@ -6,7 +6,7 @@
# the configuration.
#
# See https://stackoverflow.com/a/43300621/1728537 for the starting point.
-cmake_minimum_required(VERSION 3.12...3.29)
+cmake_minimum_required(VERSION 3.12...3.31)
if(CGAL_SKIP_CMAKE_HOOKS)
return()
diff --git a/Installation/demo/CMakeLists.txt b/Installation/demo/CMakeLists.txt
index 4e3e8765c8e..92606a5b9d2 100644
--- a/Installation/demo/CMakeLists.txt
+++ b/Installation/demo/CMakeLists.txt
@@ -1,4 +1,4 @@
-cmake_minimum_required(VERSION 3.12...3.29)
+cmake_minimum_required(VERSION 3.12...3.31)
if(NOT CGAL_MODULES_DIR)
find_package(CGAL REQUIRED)
diff --git a/Installation/examples/CMakeLists.txt b/Installation/examples/CMakeLists.txt
index e5a3ff4be1e..e0034b4727f 100644
--- a/Installation/examples/CMakeLists.txt
+++ b/Installation/examples/CMakeLists.txt
@@ -1,4 +1,4 @@
-cmake_minimum_required(VERSION 3.12...3.29)
+cmake_minimum_required(VERSION 3.12...3.31)
if(NOT CGAL_MODULES_DIR)
find_package(CGAL REQUIRED)
endif()
diff --git a/Installation/test/CMakeLists.txt b/Installation/test/CMakeLists.txt
index 67d1367d520..64d616edd57 100644
--- a/Installation/test/CMakeLists.txt
+++ b/Installation/test/CMakeLists.txt
@@ -1,4 +1,4 @@
-cmake_minimum_required(VERSION 3.12...3.29)
+cmake_minimum_required(VERSION 3.12...3.31)
if(NOT CGAL_MODULES_DIR)
diff --git a/Installation/test/Installation/CMakeLists.txt b/Installation/test/Installation/CMakeLists.txt
index 5fb67b8eae2..183337517e3 100644
--- a/Installation/test/Installation/CMakeLists.txt
+++ b/Installation/test/Installation/CMakeLists.txt
@@ -1,7 +1,7 @@
# Created by the script cgal_create_cmake_script
# This is the CMake script for compiling a CGAL application.
-cmake_minimum_required(VERSION 3.12...3.29)
+cmake_minimum_required(VERSION 3.12...3.31)
project( Installation_Tests )
diff --git a/Installation/test/Installation/cgal_test_with_cmake b/Installation/test/Installation/cgal_test_with_cmake
deleted file mode 100755
index afafb02d7d7..00000000000
--- a/Installation/test/Installation/cgal_test_with_cmake
+++ /dev/null
@@ -1,53 +0,0 @@
-#! /bin/sh
-
-# This is a script for the CGAL test suite. Such a script must obey
-# the following rules:
-#
-# - the name of the script is cgal_test_with_cmake
-# - for every target two one line messages are written to the file 'error.txt'
-# the first one indicates if the compilation was successful
-# the second one indicates if the execution was successful
-# if one of the two was not successful, the line should start with 'ERROR:'
-# - running the script should not require any user interaction
-# - the script should clean up object files and executables
-
- ERRORFILE=error.txt
-
-#---------------------------------------------------------------------#
-# remove the previous error file
-#---------------------------------------------------------------------#
-
-rm -f ../$ERRORFILE
-touch ../$ERRORFILE
-
-#---------------------------------------------------------------------#
-# compile_and_run
-#---------------------------------------------------------------------#
-echo "Configuring... "
-mkdir build_dir
-cd build_dir
-if eval 'cmake --no-warn-unused-cli ${INIT_FILE:+"-C${INIT_FILE}"} -DRUNNING_CGAL_AUTO_TEST=TRUE \
- -DCGAL_DIR="$CGAL_RELEASE_DIR" -DCGAL_ENABLE_TESTING=ON -DWITH_tests=ON \
- ..' ; then
-
- echo " successful configuration" >> ../$ERRORFILE
-else
- echo " ERROR: configuration" >> ../$ERRORFILE
-fi
-cd ..
-
-#---------------------------------------------------------------------#
-# configure, compile and run the tests
-#---------------------------------------------------------------------#
-
-cd build_dir
-ctest -L Installation_Tests -VV |tee res.txt
-SUCCES="y"
-FAILED=$(cat res.txt|grep "\*\*\*Failed")
-if [ -z "$FAILED" ]; then
- echo " successful run of Installation tests" >> ../$ERRORFILE
-else
- echo " ERROR: run of Installation tests" >> ../$ERRORFILE
- SUCCES=""
-fi
-cat ../$ERRORFILE
diff --git a/Installation/test/Installation/test_configuration.cmake.in b/Installation/test/Installation/test_configuration.cmake.in
index fa820a795a5..e300407f0c8 100644
--- a/Installation/test/Installation/test_configuration.cmake.in
+++ b/Installation/test/Installation/test_configuration.cmake.in
@@ -1,4 +1,4 @@
-cmake_minimum_required(VERSION 3.12...3.29)
+cmake_minimum_required(VERSION 3.12...3.31)
project(test_configuration)
find_package(CGAL)
add_definitions(-DQT_NO_KEYWORDS)
diff --git a/Installation/test/Installation/test_configuration_qt.cmake.in b/Installation/test/Installation/test_configuration_qt.cmake.in
index 5dda5a91bc2..3e2e50894f4 100644
--- a/Installation/test/Installation/test_configuration_qt.cmake.in
+++ b/Installation/test/Installation/test_configuration_qt.cmake.in
@@ -1,4 +1,4 @@
-cmake_minimum_required(VERSION 3.12...3.29)
+cmake_minimum_required(VERSION 3.12...3.31)
project(test_configuration)
find_package(CGAL COMPONENTS Qt6)
add_definitions(-DCGAL_USE_BASIC_VIEWER -DQT_NO_KEYWORDS)
diff --git a/Installation/test/Installation/test_find_package.cmake.in b/Installation/test/Installation/test_find_package.cmake.in
index cf759c73b85..eab8e03ed2e 100644
--- a/Installation/test/Installation/test_find_package.cmake.in
+++ b/Installation/test/Installation/test_find_package.cmake.in
@@ -1,4 +1,4 @@
-cmake_minimum_required(VERSION 3.12...3.29)
+cmake_minimum_required(VERSION 3.12...3.31)
project( test_find_package_${mode} )
find_package(CGAL ${VERSION} ${EXACT}REQUIRED
PATHS ${CGAL_DIR}
diff --git a/Interpolation/examples/Interpolation/CMakeLists.txt b/Interpolation/examples/Interpolation/CMakeLists.txt
index 0277e9aaf30..7d49ebcd9ae 100644
--- a/Interpolation/examples/Interpolation/CMakeLists.txt
+++ b/Interpolation/examples/Interpolation/CMakeLists.txt
@@ -1,7 +1,7 @@
# Created by the script cgal_create_cmake_script
# This is the CMake script for compiling a CGAL application.
-cmake_minimum_required(VERSION 3.12...3.29)
+cmake_minimum_required(VERSION 3.12...3.31)
project(Interpolation_Examples)
find_package(CGAL REQUIRED)
diff --git a/Interpolation/test/Interpolation/CMakeLists.txt b/Interpolation/test/Interpolation/CMakeLists.txt
index cbfc358658e..f0b23d66367 100644
--- a/Interpolation/test/Interpolation/CMakeLists.txt
+++ b/Interpolation/test/Interpolation/CMakeLists.txt
@@ -1,7 +1,7 @@
# Created by the script cgal_create_cmake_script
# This is the CMake script for compiling a CGAL application.
-cmake_minimum_required(VERSION 3.12...3.29)
+cmake_minimum_required(VERSION 3.12...3.31)
project(Interpolation_Tests)
find_package(CGAL REQUIRED)
diff --git a/Intersections_2/test/Intersections_2/CMakeLists.txt b/Intersections_2/test/Intersections_2/CMakeLists.txt
index 5fc9f53991f..773045a2af5 100644
--- a/Intersections_2/test/Intersections_2/CMakeLists.txt
+++ b/Intersections_2/test/Intersections_2/CMakeLists.txt
@@ -1,7 +1,7 @@
# Created by the script cgal_create_cmake_script
# This is the CMake script for compiling a CGAL application.
-cmake_minimum_required(VERSION 3.12...3.29)
+cmake_minimum_required(VERSION 3.12...3.31)
project(Intersections_2_Tests)
find_package(CGAL REQUIRED)
diff --git a/Intersections_3/test/Intersections_3/CMakeLists.txt b/Intersections_3/test/Intersections_3/CMakeLists.txt
index 9b9ae08edee..8d34a143d23 100644
--- a/Intersections_3/test/Intersections_3/CMakeLists.txt
+++ b/Intersections_3/test/Intersections_3/CMakeLists.txt
@@ -1,7 +1,7 @@
# Created by the script cgal_create_cmake_script
# This is the CMake script for compiling a CGAL application.
-cmake_minimum_required(VERSION 3.12...3.29)
+cmake_minimum_required(VERSION 3.12...3.31)
project(Intersections_3_Tests)
find_package(CGAL REQUIRED)
diff --git a/Interval_skip_list/examples/Interval_skip_list/CMakeLists.txt b/Interval_skip_list/examples/Interval_skip_list/CMakeLists.txt
index 458b71b043f..e0750e6dada 100644
--- a/Interval_skip_list/examples/Interval_skip_list/CMakeLists.txt
+++ b/Interval_skip_list/examples/Interval_skip_list/CMakeLists.txt
@@ -1,7 +1,7 @@
# Created by the script cgal_create_cmake_script
# This is the CMake script for compiling a CGAL application.
-cmake_minimum_required(VERSION 3.12...3.29)
+cmake_minimum_required(VERSION 3.12...3.31)
project(Interval_skip_list_Examples)
find_package(CGAL REQUIRED)
diff --git a/Interval_skip_list/test/Interval_skip_list/CMakeLists.txt b/Interval_skip_list/test/Interval_skip_list/CMakeLists.txt
index 690a918f787..12315e15177 100644
--- a/Interval_skip_list/test/Interval_skip_list/CMakeLists.txt
+++ b/Interval_skip_list/test/Interval_skip_list/CMakeLists.txt
@@ -1,7 +1,7 @@
# Created by the script cgal_create_cmake_script
# This is the CMake script for compiling a CGAL application.
-cmake_minimum_required(VERSION 3.12...3.29)
+cmake_minimum_required(VERSION 3.12...3.31)
project(Interval_skip_list_Tests)
find_package(CGAL REQUIRED)
diff --git a/Interval_support/test/Interval_support/CMakeLists.txt b/Interval_support/test/Interval_support/CMakeLists.txt
index fd3788e50e9..d586b8c075f 100644
--- a/Interval_support/test/Interval_support/CMakeLists.txt
+++ b/Interval_support/test/Interval_support/CMakeLists.txt
@@ -1,7 +1,7 @@
# Created by the script cgal_create_cmake_script
# This is the CMake script for compiling a CGAL application.
-cmake_minimum_required(VERSION 3.12...3.29)
+cmake_minimum_required(VERSION 3.12...3.31)
project(Interval_support_Tests)
find_package(CGAL REQUIRED COMPONENTS Core)
diff --git a/Jet_fitting_3/examples/Jet_fitting_3/CMakeLists.txt b/Jet_fitting_3/examples/Jet_fitting_3/CMakeLists.txt
index a8bcc29b90c..abb85906be2 100644
--- a/Jet_fitting_3/examples/Jet_fitting_3/CMakeLists.txt
+++ b/Jet_fitting_3/examples/Jet_fitting_3/CMakeLists.txt
@@ -1,7 +1,7 @@
# Created by the script cgal_create_cmake_script
# This is the CMake script for compiling a CGAL application.
-cmake_minimum_required(VERSION 3.12...3.29)
+cmake_minimum_required(VERSION 3.12...3.31)
project(Jet_fitting_3_Examples)
find_package(CGAL REQUIRED)
diff --git a/Jet_fitting_3/test/Jet_fitting_3/CMakeLists.txt b/Jet_fitting_3/test/Jet_fitting_3/CMakeLists.txt
index 114067d5247..62b395e1d4b 100644
--- a/Jet_fitting_3/test/Jet_fitting_3/CMakeLists.txt
+++ b/Jet_fitting_3/test/Jet_fitting_3/CMakeLists.txt
@@ -1,7 +1,7 @@
# Created by the script cgal_create_cmake_script
# This is the CMake script for compiling a CGAL application.
-cmake_minimum_required(VERSION 3.12...3.29)
+cmake_minimum_required(VERSION 3.12...3.31)
project(Jet_fitting_3_Tests)
find_package(CGAL REQUIRED)
diff --git a/Kernel_23/benchmark/Kernel_23/CMakeLists.txt b/Kernel_23/benchmark/Kernel_23/CMakeLists.txt
index 3d2109157eb..2a5152a9e61 100644
--- a/Kernel_23/benchmark/Kernel_23/CMakeLists.txt
+++ b/Kernel_23/benchmark/Kernel_23/CMakeLists.txt
@@ -1,7 +1,7 @@
# Created by the script cgal_create_cmake_script
# This is the CMake script for compiling a CGAL application.
-cmake_minimum_required(VERSION 3.12...3.29)
+cmake_minimum_required(VERSION 3.12...3.31)
project(Kernel_23_benchmark)
find_package(CGAL QUIET OPTIONAL_COMPONENTS Core)
diff --git a/Kernel_23/examples/Kernel_23/CMakeLists.txt b/Kernel_23/examples/Kernel_23/CMakeLists.txt
index f1a8ba7716f..a9f8d9090b5 100644
--- a/Kernel_23/examples/Kernel_23/CMakeLists.txt
+++ b/Kernel_23/examples/Kernel_23/CMakeLists.txt
@@ -1,7 +1,7 @@
# Created by the script cgal_create_cmake_script
# This is the CMake script for compiling a CGAL application.
-cmake_minimum_required(VERSION 3.12...3.29)
+cmake_minimum_required(VERSION 3.12...3.31)
project(Kernel_23_Examples)
find_package(CGAL REQUIRED)
diff --git a/Kernel_23/test/Kernel_23/CMakeLists.txt b/Kernel_23/test/Kernel_23/CMakeLists.txt
index 106eced3810..ce9af1c75bc 100644
--- a/Kernel_23/test/Kernel_23/CMakeLists.txt
+++ b/Kernel_23/test/Kernel_23/CMakeLists.txt
@@ -1,4 +1,4 @@
-cmake_minimum_required(VERSION 3.12...3.29)
+cmake_minimum_required(VERSION 3.12...3.31)
project(Kernel_23_Tests)
find_package(CGAL REQUIRED COMPONENTS Core)
diff --git a/Kernel_d/test/Kernel_d/CMakeLists.txt b/Kernel_d/test/Kernel_d/CMakeLists.txt
index 6798d13a087..221d83e5d9c 100644
--- a/Kernel_d/test/Kernel_d/CMakeLists.txt
+++ b/Kernel_d/test/Kernel_d/CMakeLists.txt
@@ -1,7 +1,7 @@
# Created by the script cgal_create_cmake_script
# This is the CMake script for compiling a CGAL application.
-cmake_minimum_required(VERSION 3.12...3.29)
+cmake_minimum_required(VERSION 3.12...3.31)
project(Kernel_d_Tests)
find_package(CGAL REQUIRED)
diff --git a/Kinetic_space_partition/examples/Kinetic_space_partition/CMakeLists.txt b/Kinetic_space_partition/examples/Kinetic_space_partition/CMakeLists.txt
index 0ae368020c1..5541e7b43ee 100644
--- a/Kinetic_space_partition/examples/Kinetic_space_partition/CMakeLists.txt
+++ b/Kinetic_space_partition/examples/Kinetic_space_partition/CMakeLists.txt
@@ -1,7 +1,7 @@
# Created by the script cgal_create_CMakeLists.
# This is the CMake script for compiling a set of CGAL applications.
-cmake_minimum_required(VERSION 3.12...3.29)
+cmake_minimum_required(VERSION 3.12...3.31)
project(Kinetic_space_partition_Examples)
diff --git a/Kinetic_space_partition/test/Kinetic_space_partition/CMakeLists.txt b/Kinetic_space_partition/test/Kinetic_space_partition/CMakeLists.txt
index 3df57e9e4d0..81789f3965f 100644
--- a/Kinetic_space_partition/test/Kinetic_space_partition/CMakeLists.txt
+++ b/Kinetic_space_partition/test/Kinetic_space_partition/CMakeLists.txt
@@ -1,7 +1,7 @@
# Created by the script cgal_create_CMakeLists.
# This is the CMake script for compiling a set of CGAL applications.
-cmake_minimum_required(VERSION 3.12...3.29)
+cmake_minimum_required(VERSION 3.12...3.31)
project(Kinetic_space_partition_Tests)
diff --git a/Kinetic_surface_reconstruction/examples/Kinetic_surface_reconstruction/CMakeLists.txt b/Kinetic_surface_reconstruction/examples/Kinetic_surface_reconstruction/CMakeLists.txt
index 5445891abb0..9ec2ba71fb9 100644
--- a/Kinetic_surface_reconstruction/examples/Kinetic_surface_reconstruction/CMakeLists.txt
+++ b/Kinetic_surface_reconstruction/examples/Kinetic_surface_reconstruction/CMakeLists.txt
@@ -1,7 +1,7 @@
# Created by the script cgal_create_CMakeLists.
# This is the CMake script for compiling a set of CGAL applications.
-cmake_minimum_required(VERSION 3.12...3.29)
+cmake_minimum_required(VERSION 3.12...3.31)
project(Kinetic_surface_reconstruction_Examples)
diff --git a/Kinetic_surface_reconstruction/test/Kinetic_surface_reconstruction/CMakeLists.txt b/Kinetic_surface_reconstruction/test/Kinetic_surface_reconstruction/CMakeLists.txt
index bf6b5fc9d13..b4a355e2b65 100644
--- a/Kinetic_surface_reconstruction/test/Kinetic_surface_reconstruction/CMakeLists.txt
+++ b/Kinetic_surface_reconstruction/test/Kinetic_surface_reconstruction/CMakeLists.txt
@@ -1,7 +1,7 @@
# Created by the script cgal_create_CMakeLists.
# This is the CMake script for compiling a set of CGAL applications.
-cmake_minimum_required(VERSION 3.12...3.29)
+cmake_minimum_required(VERSION 3.12...3.31)
project(Kinetic_surface_reconstruction_Tests)
diff --git a/Lab/demo/Lab/CMakeLists.txt b/Lab/demo/Lab/CMakeLists.txt
index 885cd774ce1..13e6104e252 100644
--- a/Lab/demo/Lab/CMakeLists.txt
+++ b/Lab/demo/Lab/CMakeLists.txt
@@ -1,4 +1,4 @@
-cmake_minimum_required(VERSION 3.12...3.29)
+cmake_minimum_required(VERSION 3.12...3.31)
project(Lab_Demo)
include(FeatureSummary)
diff --git a/Lab/demo/Lab/Plugins/Mesh_3/Mesh_3_plugin.cpp b/Lab/demo/Lab/Plugins/Mesh_3/Mesh_3_plugin.cpp
index 2aadc761957..f2c255a10fc 100644
--- a/Lab/demo/Lab/Plugins/Mesh_3/Mesh_3_plugin.cpp
+++ b/Lab/demo/Lab/Plugins/Mesh_3/Mesh_3_plugin.cpp
@@ -592,7 +592,7 @@ void Mesh_3_plugin::mesh_3(const Mesh_type mesh_type,
ui.protect->setChecked(features_protection_available);
ui.facegraphCheckBox->setVisible(mesh_type == Mesh_type::SURFACE_ONLY);
- ui.initializationGroup->setVisible(input_is_labeled_img);
+ ui.initializationGroup->setVisible(input_is_labeled_img || input_is_gray_img);
ui.grayImgGroup->setVisible(input_is_gray_img);
if(input_is_gray_img)
diff --git a/Lab/demo/Lab/Plugins/Mesh_3/Mesh_3_plugin_cgal_code.cpp b/Lab/demo/Lab/Plugins/Mesh_3/Mesh_3_plugin_cgal_code.cpp
index e46ecd6c4de..d1e560c5aa7 100644
--- a/Lab/demo/Lab/Plugins/Mesh_3/Mesh_3_plugin_cgal_code.cpp
+++ b/Lab/demo/Lab/Plugins/Mesh_3/Mesh_3_plugin_cgal_code.cpp
@@ -20,19 +20,6 @@ using namespace CGAL::Three;
typedef Tr::Bare_point Bare_point;
-struct Compare_to_isovalue {
- double iso_value;
- bool less;
- typedef bool result_type;
-
- Compare_to_isovalue(double iso_value, bool less)
- : iso_value(iso_value), less(less) {}
-
- bool operator()(double x) const {
- return (x < iso_value) == less;
- }
-};
-
Meshing_thread* cgal_code_mesh_3(QList pMeshes,
const Polylines_container& polylines,
const SMesh* pBoundingMesh,
@@ -355,6 +342,8 @@ Meshing_thread* cgal_code_mesh_3(const Image* pImage,
param.protect_features
= protect_features || protect_borders || !polylines.empty();
param.detect_connected_components = detect_connected_components;
+ param.iso_value = iso_value;
+ param.inside_is_less = inside_is_less;
param.facet_angle = facet_angle;
param.facet_sizing = facet_sizing;
param.facet_min_sizing = facet_min_sizing;
diff --git a/Lab/demo/Lab/Plugins/Mesh_3/Mesh_function.h b/Lab/demo/Lab/Plugins/Mesh_3/Mesh_function.h
index 37d59c7e0a5..433d6cfc549 100644
--- a/Lab/demo/Lab/Plugins/Mesh_3/Mesh_function.h
+++ b/Lab/demo/Lab/Plugins/Mesh_3/Mesh_function.h
@@ -27,7 +27,8 @@
#include
#include
#include
-#include
+#include
+#include
#include "C3t3_type.h"
#include "Meshing_thread.h"
@@ -40,6 +41,19 @@ namespace CGAL {
class Image_3;
}
+struct Compare_to_isovalue {
+ double iso_value;
+ bool less;
+ typedef bool result_type;
+
+ Compare_to_isovalue(double iso_value, bool less)
+ : iso_value(iso_value), less(less) {}
+
+ bool operator()(double x) const {
+ return (x < iso_value) == less;
+ }
+};
+
struct Mesh_parameters
{
double facet_angle;
@@ -55,6 +69,8 @@ struct Mesh_parameters
double edge_distance;
bool protect_features;
bool detect_connected_components;
+ float iso_value;
+ bool inside_is_less;
int manifold;
const CGAL::Image_3* image_3_ptr;
const CGAL::Image_3* weights_ptr;
@@ -111,6 +127,7 @@ private:
void initialize(const Mesh_criteria& criteria, Mesh_fnt::Domain_tag);
void initialize(const Mesh_criteria& criteria, Mesh_fnt::Labeled_image_domain_tag);
+ void initialize(const Mesh_criteria& criteria, Mesh_fnt::Gray_image_domain_tag);
Edge_criteria edge_criteria(double b, double minb, double d, Mesh_fnt::Domain_tag);
Edge_criteria edge_criteria(double b, double minb, double d, Mesh_fnt::Polyhedral_domain_tag);
@@ -231,16 +248,61 @@ Mesh_function::
initialize(const Mesh_criteria& criteria, Mesh_fnt::Labeled_image_domain_tag)
// for a labeled image
{
- if(p_.detect_connected_components) {
- CGAL_IMAGE_IO_CASE(p_.image_3_ptr->image(),
- initialize_triangulation_from_labeled_image(c3t3_
- , *domain_
- , *p_.image_3_ptr
- , criteria
- , Word()
- , p_.protect_features);
- );
- } else {
+ namespace p = CGAL::parameters;
+ // Initialization of the labeled image, either with the protection of sharp
+ // features, or with the initial points (or both).
+ if (p_.detect_connected_components)
+ {
+ CGAL::Mesh_3::internal::C3t3_initializer<
+ C3t3,
+ Domain,
+ Mesh_criteria,
+ CGAL::internal::has_Has_features::value >()
+ (c3t3_,
+ *domain_,
+ criteria,
+ p_.protect_features,
+ p::mesh_3_options(p::pointer_to_stop_atomic_boolean = &stop_,
+ p::nonlinear_growth_of_balls = true).v,
+ CGAL::Construct_initial_points_labeled_image(*p_.image_3_ptr, *domain_));
+ }
+ else
+ {
+ initialize(criteria, Mesh_fnt::Domain_tag());
+ }
+}
+
+template < typename D_, typename Tag >
+void
+Mesh_function::
+initialize(const Mesh_criteria& criteria, Mesh_fnt::Gray_image_domain_tag)
+// for a gray image
+{
+ namespace p = CGAL::parameters;
+ // Initialization of the gray image, either with the protection of sharp
+ // features, or with the initial points (or both).
+ if (p_.detect_connected_components)
+ {
+ CGAL::Construct_initial_points_gray_image generator
+ (*p_.image_3_ptr,
+ *domain_,
+ p_.iso_value,
+ Compare_to_isovalue(p_.iso_value, p_.inside_is_less));
+ CGAL::Mesh_3::internal::C3t3_initializer<
+ C3t3,
+ Domain,
+ Mesh_criteria,
+ CGAL::internal::has_Has_features::value >()
+ (c3t3_,
+ *domain_,
+ criteria,
+ p_.protect_features,
+ p::mesh_3_options(p::pointer_to_stop_atomic_boolean = &stop_,
+ p::nonlinear_growth_of_balls = true).v,
+ generator);
+ }
+ else
+ {
initialize(criteria, Mesh_fnt::Domain_tag());
}
}
@@ -254,8 +316,7 @@ initialize(const Mesh_criteria& criteria, Mesh_fnt::Domain_tag)
namespace p = CGAL::parameters;
// Initialization of the mesh, either with the protection of sharp
// features, or with the initial points (or both).
- // If `detect_connected_components==true`, the initialization is
- // already done.
+
CGAL::Mesh_3::internal::C3t3_initializer<
C3t3,
Domain,
diff --git a/Lab/demo/Lab/Plugins/Three_examples/CMakeLists.txt b/Lab/demo/Lab/Plugins/Three_examples/CMakeLists.txt
index 71dab011d58..ffa00e9b08d 100644
--- a/Lab/demo/Lab/Plugins/Three_examples/CMakeLists.txt
+++ b/Lab/demo/Lab/Plugins/Three_examples/CMakeLists.txt
@@ -1,4 +1,4 @@
-cmake_minimum_required(VERSION 3.12...3.29)
+cmake_minimum_required(VERSION 3.12...3.31)
project(Three_examples)
if(NOT POLICY CMP0070 AND POLICY CMP0053)
diff --git a/Lab/demo/Lab/cgal_test_with_cmake b/Lab/demo/Lab/cgal_test_with_cmake
deleted file mode 100755
index c7774ce26ee..00000000000
--- a/Lab/demo/Lab/cgal_test_with_cmake
+++ /dev/null
@@ -1,236 +0,0 @@
-#! /bin/sh
-
-# This is a script for the CGAL test suite. Such a script must obey
-# the following rules:
-#
-# - the name of the script is cgal_test_with_cmake
-# - for every target two one line messages are written to the file 'error.txt'
-# the first one indicates if the compilation was successful
-# the second one indicates if the execution was successful
-# if one of the two was not successful, the line should start with 'ERROR:'
-# - running the script should not require any user interaction
-# - the script should clean up object files and executables
-
- ERRORFILE=error.txt
- DO_RUN=
- if [ -z "${MAKE_CMD}" ]; then
- MAKE_CMD=make
- fi
- NEED_CLEAN=
-
-#---------------------------------------------------------------------#
-# configure
-#---------------------------------------------------------------------#
-
-configure()
-{
- echo "Configuring... "
-
- if eval 'cmake --no-warn-unused-cli ${INIT_FILE:+"-C${INIT_FILE}"} -DRUNNING_CGAL_AUTO_TEST=TRUE \
- -DCGAL_DIR="$CGAL_DIR" \
- .' ; then
-
- echo " successful configuration" >> $ERRORFILE
- else
- echo " ERROR: configuration" >> $ERRORFILE
- fi
-}
-
-#---------------------------------------------------------------------#
-# compile_and_run
-#---------------------------------------------------------------------#
-
-compile_and_run()
-{
- echo "Compiling $1 ... "
- SUCCES="y"
-
- if eval '${MAKE_CMD} VERBOSE=ON -fMakefile $1' ; then
- echo " successful compilation of $1" >> $ERRORFILE
- else
- echo " ERROR: compilation of $1" >> $ERRORFILE
- SUCCES=""
- fi
-
- if [ -n "$DO_RUN" ] ; then
- if [ -n "${SUCCES}" ] ; then
- OUTPUTFILE=ProgramOutput.$1.$PLATFORM
- rm -f $OUTPUTFILE
- COMMAND="./$1"
- if [ -f $1.cmd ] ; then
- COMMAND="$COMMAND `cat $1.cmd`"
- fi
- if [ -f $1.cin ] ; then
- COMMAND="cat $1.cin | $COMMAND"
- fi
- echo "Executing $1 ... "
- echo
- ulimit -t 3600 2> /dev/null
- if eval $COMMAND > $OUTPUTFILE 2>&1 ; then
- echo " successful execution of $1" >> $ERRORFILE
- else
- echo " ERROR: execution of $1" >> $ERRORFILE
- fi
- else
- echo " ERROR: not executed $1" >> $ERRORFILE
- fi
- fi
-}
-
-#---------------------------------------------------------------------#
-# remove the previous error file
-#---------------------------------------------------------------------#
-
-rm -f $ERRORFILE
-touch $ERRORFILE
-
-#---------------------------------------------------------------------#
-# configure, compile and run the tests
-#---------------------------------------------------------------------#
-
-configure
-
-if [ $# -ne 0 ] ; then
- for file in $* ; do
- compile_and_run $file
- done
-else
- echo "Run all tests."
-
- for target in \
-demo_framework \
-gl_splat \
-point_dialog \
-CGALlab \
-cgal_lab \
-scene_basic_objects \
-scene_color_ramp \
-scene_c2t3_item \
-scene_c3t3_item \
-scene_combinatorial_map_item \
-scene_edit_polyhedron_item \
-scene_image_item \
-scene_implicit_function_item \
-scene_nef_polyhedron_item \
-scene_points_with_normal_item \
-scene_polygon_soup_item \
-scene_polyhedron_item \
-scene_polyhedron_item_decorator \
-scene_polyhedron_and_sm_item_k_ring_selection \
-scene_poly_item_k_ring_selection \
-scene_sm_item_k_ring_selection \
-scene_polyhedron_selection_item \
-scene_polyhedron_shortest_path_item \
-scene_polyhedron_transform_item \
-scene_polylines_item \
-scene_surface_mesh_item \
-scene_textured_polyhedron_item \
-basic_generator_plugin \
-c3t3_io_plugin \
-camera_positions_plugin \
-classification_plugin \
-clip_cgal_lab_plugin \
-convex_hull_plugin \
-corefinement_plugin \
-create_bbox_mesh_plugin \
-cut_plugin \
-detect_sharp_edges_plugin \
-detect_sharp_edges_sm_plugin \
-distance_plugin \
-distance_sm_plugin \
-edit_cgal_lab_plugin \
-edit_sm_plugin \
-extrude_poly_plugin \
-extrude_sm_plugin \
-fairing_plugin \
-features_detection_plugin \
-gocad_plugin \
-hole_filling_plugin \
-hole_filling_sm_plugin \
-hole_filling_polyline_plugin \
-inside_out_plugin \
-interpolated_corrected_principal_curvatures_plugin\
-surface_intersection_plugin \
-surface_intersection_sm_plugin \
-io_image_plugin \
-io_implicit_function_plugin \
-isotropic_remeshing_plugin \
-jet_fitting_plugin \
-join_and_split_polyhedra_plugin \
-kernel_plugin \
-mean_curvature_flow_skeleton_plugin \
-mean_curvature_flow_skeleton_sm_plugin \
-merge_point_sets_plugin \
-mesh_2_plugin \
-mesh_3_optimization_plugin \
-mesh_3_plugin \
-mesh_segmentation_plugin \
-mesh_segmentation_sm_plugin \
-mesh_simplification_plugin \
-nef_io_plugin \
-nef_plugin \
-off_plugin \
-off_to_nef_plugin \
-offset_meshing_plugin \
-alpha_wrap_3_plugin \
-orient_soup_plugin \
-parameterization_plugin \
-pca_plugin \
-p_klein_function_plugin \
-ply_to_xyz_plugin \
-point_inside_cgal_lab_plugin \
-point_set_average_spacing_plugin \
-point_set_bilateral_smoothing_plugin \
-point_set_from_vertices_plugin \
-point_set_interference_plugin \
-point_set_normal_estimation_plugin \
-point_set_outliers_removal_plugin \
-point_set_selection_plugin \
-point_set_shape_detection_plugin \
-point_set_simplification_plugin \
-point_set_smoothing_plugin \
-point_set_upsampling_plugin \
-point_set_wlop_plugin \
-polyhedron_slicer_plugin \
-polyhedron_stitching_plugin \
-polylines_io_plugin \
-p_sphere_function_plugin \
-p_tanglecube_function_plugin \
-random_perturbation_plugin \
-repair_cgal_lab_plugin \
-selection_io_plugin \
-selection_sm_io_plugin \
-selection_plugin \
-selection_sm_plugin \
-self_intersection_plugin \
-shortest_path_plugin \
-surface_mesh_approximation_plugin \
-stl_plugin \
-subdivision_methods_plugin \
-surface_mesh_io_plugin \
-surface_reconstruction_plugin \
-surf_to_sm_io_plugin \
-transform_cgal_lab_plugin \
-triangulate_facets_plugin \
-trivial_plugin \
-vtk_plugin \
-xyz_plugin \
-smoothing_plugin \
- all
- do
- if ${MAKE_CMD} -f Makefile help | grep "$target" > /dev/null; then
- compile_and_run "$target"
- NEED_CLEAN=y
- fi
- done
-fi
-
-#
-# The clean target generated by CMake under cygwin
-# always fails for some reason
-#
-if [ -n "${NEED_CLEAN}" ]; then
- if ! ( uname | grep -q "CYGWIN" ) ; then
- ${MAKE_CMD} -fMakefile clean || true
- fi
-fi
diff --git a/Lab/demo/Lab/implicit_functions/CMakeLists.txt b/Lab/demo/Lab/implicit_functions/CMakeLists.txt
index 5b42135b28f..8a3b34484c5 100644
--- a/Lab/demo/Lab/implicit_functions/CMakeLists.txt
+++ b/Lab/demo/Lab/implicit_functions/CMakeLists.txt
@@ -1,6 +1,6 @@
# This is the CMake script for compiling the CGAL Mesh_3 demo implicit functions.
-cmake_minimum_required(VERSION 3.12...3.29)
+cmake_minimum_required(VERSION 3.12...3.31)
include(CGALlab_macros)
diff --git a/Linear_cell_complex/benchmark/Linear_cell_complex_2/CMakeLists.txt b/Linear_cell_complex/benchmark/Linear_cell_complex_2/CMakeLists.txt
index 195d30d3ba0..78c8cb770db 100644
--- a/Linear_cell_complex/benchmark/Linear_cell_complex_2/CMakeLists.txt
+++ b/Linear_cell_complex/benchmark/Linear_cell_complex_2/CMakeLists.txt
@@ -1,4 +1,4 @@
-cmake_minimum_required(VERSION 3.12...3.29)
+cmake_minimum_required(VERSION 3.12...3.31)
project(LCC_performance_2)
set(CMAKE_MODULE_PATH ${CMAKE_CURRENT_SOURCE_DIR}/cmake/)
diff --git a/Linear_cell_complex/benchmark/Linear_cell_complex_3/CMakeLists.txt b/Linear_cell_complex/benchmark/Linear_cell_complex_3/CMakeLists.txt
index 0a74b036673..1a65d867deb 100644
--- a/Linear_cell_complex/benchmark/Linear_cell_complex_3/CMakeLists.txt
+++ b/Linear_cell_complex/benchmark/Linear_cell_complex_3/CMakeLists.txt
@@ -1,4 +1,4 @@
-cmake_minimum_required(VERSION 3.12...3.29)
+cmake_minimum_required(VERSION 3.12...3.31)
project(LCC_performance_3)
return()
diff --git a/Linear_cell_complex/demo/Linear_cell_complex/CMakeLists.txt b/Linear_cell_complex/demo/Linear_cell_complex/CMakeLists.txt
index 16b346a7564..b71bfe57fe0 100644
--- a/Linear_cell_complex/demo/Linear_cell_complex/CMakeLists.txt
+++ b/Linear_cell_complex/demo/Linear_cell_complex/CMakeLists.txt
@@ -2,7 +2,7 @@
# This is the CMake script for compiling a CGAL application.
# cmake ../ -DCMAKE_BUILD_TYPE=Debug
-cmake_minimum_required(VERSION 3.12...3.29)
+cmake_minimum_required(VERSION 3.12...3.31)
project(Linear_cell_complex_Demo)
# Find includes in corresponding build directories
diff --git a/Linear_cell_complex/examples/Linear_cell_complex/CMakeLists.txt b/Linear_cell_complex/examples/Linear_cell_complex/CMakeLists.txt
index 22760ad87b6..e9604793e4b 100644
--- a/Linear_cell_complex/examples/Linear_cell_complex/CMakeLists.txt
+++ b/Linear_cell_complex/examples/Linear_cell_complex/CMakeLists.txt
@@ -1,7 +1,7 @@
# Created by the script cgal_create_cmake_script
# This is the CMake script for compiling a CGAL application.
-cmake_minimum_required(VERSION 3.12...3.29)
+cmake_minimum_required(VERSION 3.12...3.31)
project(Linear_cell_complex_Examples)
find_package(CGAL REQUIRED OPTIONAL_COMPONENTS Qt6)
diff --git a/Linear_cell_complex/test/Linear_cell_complex/CMakeLists.txt b/Linear_cell_complex/test/Linear_cell_complex/CMakeLists.txt
index 3f12de77cee..d19fc827d59 100644
--- a/Linear_cell_complex/test/Linear_cell_complex/CMakeLists.txt
+++ b/Linear_cell_complex/test/Linear_cell_complex/CMakeLists.txt
@@ -1,7 +1,7 @@
# Created by the script cgal_create_cmake_script
# This is the CMake script for compiling a CGAL application.
-cmake_minimum_required(VERSION 3.12...3.29)
+cmake_minimum_required(VERSION 3.12...3.31)
project(Linear_cell_complex_Tests)
find_package(CGAL REQUIRED)
diff --git a/Matrix_search/examples/Matrix_search/CMakeLists.txt b/Matrix_search/examples/Matrix_search/CMakeLists.txt
index 489663a3b18..9fb3b898c53 100644
--- a/Matrix_search/examples/Matrix_search/CMakeLists.txt
+++ b/Matrix_search/examples/Matrix_search/CMakeLists.txt
@@ -1,7 +1,7 @@
# Created by the script cgal_create_cmake_script
# This is the CMake script for compiling a CGAL application.
-cmake_minimum_required(VERSION 3.12...3.29)
+cmake_minimum_required(VERSION 3.12...3.31)
project(Matrix_search_Examples)
find_package(CGAL REQUIRED)
diff --git a/Matrix_search/test/Matrix_search/CMakeLists.txt b/Matrix_search/test/Matrix_search/CMakeLists.txt
index d4f61200d6f..9e9f6d6d7a2 100644
--- a/Matrix_search/test/Matrix_search/CMakeLists.txt
+++ b/Matrix_search/test/Matrix_search/CMakeLists.txt
@@ -1,7 +1,7 @@
# Created by the script cgal_create_cmake_script
# This is the CMake script for compiling a CGAL application.
-cmake_minimum_required(VERSION 3.12...3.29)
+cmake_minimum_required(VERSION 3.12...3.31)
project(Matrix_search_Tests)
find_package(CGAL REQUIRED)
diff --git a/Mesh_2/demo/Mesh_2/CMakeLists.txt b/Mesh_2/demo/Mesh_2/CMakeLists.txt
index 4c827ece080..c66e7cf908d 100644
--- a/Mesh_2/demo/Mesh_2/CMakeLists.txt
+++ b/Mesh_2/demo/Mesh_2/CMakeLists.txt
@@ -1,7 +1,7 @@
# Created by the script cgal_create_cmake_script (and then adapted manually).
# This is the CMake script for compiling a CGAL application.
-cmake_minimum_required(VERSION 3.12...3.29)
+cmake_minimum_required(VERSION 3.12...3.31)
project(Mesh_2_Demo)
find_package(CGAL REQUIRED)
diff --git a/Mesh_2/examples/Mesh_2/CMakeLists.txt b/Mesh_2/examples/Mesh_2/CMakeLists.txt
index 474a477a39a..c94cec90f83 100644
--- a/Mesh_2/examples/Mesh_2/CMakeLists.txt
+++ b/Mesh_2/examples/Mesh_2/CMakeLists.txt
@@ -1,4 +1,4 @@
-cmake_minimum_required(VERSION 3.12...3.29)
+cmake_minimum_required(VERSION 3.12...3.31)
project(Mesh_2_Examples)
find_package(CGAL REQUIRED OPTIONAL_COMPONENTS Qt6)
diff --git a/Mesh_2/test/Mesh_2/CMakeLists.txt b/Mesh_2/test/Mesh_2/CMakeLists.txt
index 1553aae3ce4..7b2093bebf5 100644
--- a/Mesh_2/test/Mesh_2/CMakeLists.txt
+++ b/Mesh_2/test/Mesh_2/CMakeLists.txt
@@ -1,7 +1,7 @@
# Created by the script cgal_create_cmake_script
# This is the CMake script for compiling a CGAL application.
-cmake_minimum_required(VERSION 3.12...3.29)
+cmake_minimum_required(VERSION 3.12...3.31)
project(Mesh_2_Tests)
find_package(CGAL REQUIRED COMPONENTS Core)
diff --git a/Mesh_3/benchmark/Mesh_3/CMakeLists.txt b/Mesh_3/benchmark/Mesh_3/CMakeLists.txt
index 7e195ce1ff1..3d405fe7a39 100644
--- a/Mesh_3/benchmark/Mesh_3/CMakeLists.txt
+++ b/Mesh_3/benchmark/Mesh_3/CMakeLists.txt
@@ -1,7 +1,7 @@
# Created by the script cgal_create_cmake_script
# This is the CMake script for compiling a CGAL application.
-cmake_minimum_required(VERSION 3.12...3.29)
+cmake_minimum_required(VERSION 3.12...3.31)
project(Mesh_3_benchmark)
find_package(CGAL REQUIRED COMPONENTS ImageIO)
diff --git a/Mesh_3/doc/Mesh_3/CGAL/Mesh_3/parameters.h b/Mesh_3/doc/Mesh_3/CGAL/Mesh_3/parameters.h
index acfb0b6efd8..018449f3585 100644
--- a/Mesh_3/doc/Mesh_3/CGAL/Mesh_3/parameters.h
+++ b/Mesh_3/doc/Mesh_3/CGAL/Mesh_3/parameters.h
@@ -451,6 +451,90 @@ unspecified_type odt(const Named_function_parameters& np = parameters::default_v
template
unspecified_type perturb(const Named_function_parameters& np = parameters::default_values());
+/*!
+ * \ingroup PkgMesh3Parameters
+ *
+ * The function `parameters::initial_points_generator()` enables the user to specify a functor that follows
+ * the `InitialPointsGenerator_3` concept to the mesh generation function `make_mesh_3()`. This functor is called
+ * for the initialization of the meshing process, by inserting well-distributed surface vertices.
+ * If this parameter is not specified, the default behavior
+ * is executed, which calls the domain's `construct_initial_points_object()` for the initialization of the meshing process.
+ *
+ * Initialization is considered to be complete if the triangulation is a 3D triangulation
+ * with at least one facet in the restricted Delaunay triangulation (i.e., its dual intersects the
+ * input surface).
+ *
+ * If one dimensional features are requested, their initialization is performed first.
+ * If provided, the points of `parameters::initial_points()` are inserted next.
+ * Then, `parameters::initial_points_generator()` is used to generate more initial points
+ * and complete the initialization.
+ * If the generator does not generate enough points for the initialization to be complete,
+ * the domain's `construct_initial_points_object()` will be called to generate enough input points.
+ *
+ * \tparam InitialPointsGenerator a model of the `InitialPointsGenerator_3` concept
+ *
+ * @param generator an instance of `InitialPointsGenerator`
+ *
+ * \cgalHeading{Example}
+ *
+ * \snippet mesh_3D_image_with_image_initialization.cpp Meshing
+ *
+ * \sa `CGAL::make_mesh_3()`
+ * \sa `CGAL::parameters::initial_points()`
+ * \sa `MeshDomain_3::Construct_initial_points`
+ *
+ */
+template
+unspecified_type initial_points_generator(const InitialPointsGenerator& generator);
+
+/*!
+ * \ingroup PkgMesh3Parameters
+ *
+ * The function `parameters::initial_points()` enables the user to specify a container, model of `Range`, that contains
+ * initial points constructed on surfaces,
+ * to be used in the `make_mesh_3()` function for mesh generation. Items in the container are
+ * tuple-like objects containing a `Weighted_point_3`, an `int`, and a `MeshDomain::Index`,
+ * where `Weighted_point_3` represents the position and the weight of the point,
+ * `int` the dimension of the minimal subcomplex on which the point lies,
+ * and `MeshDomain::Index` the corresponding subcomplex index.
+ * These initial points are inserted after one dimensional features initialization.
+ *
+ * Initialization is considered to be complete if the triangulation is a 3D triangulation
+ * with at least one facet in the restricted Delaunay triangulation (i.e., its dual intersects the
+ * input surface).
+ *
+ * If the parameter `parameters::initial_points_generator()` is set,
+ * the points from this parameter will be inserted before calling the initial points generator.
+ *
+ * If after the insertion of initial points (possibly together with the input generator),
+ * the initialization is not complete,
+ * the domain's `construct_initial_points_object()` will be called.
+ *
+ * \tparam MeshDomain a model of `MeshDomain_3`
+ * \tparam C3t3 a model of `MeshComplex_3InTriangulation_3`
+ * \tparam InitialPointsRange a model of `Range` containing tuple-like objects of
+ * `C3t3::Triangulation::Geom_traits::Weighted_point_3, int, MeshDomain::Index`.
+ *
+ * @param initial_points an instance of `InitialPointsRange`
+ *
+ * \cgalHeading{Example}
+ *
+ * \code{.cpp}
+ * // Create the initial_points vector
+ * std::vector> initial_points;
+ * // Perform mesh generation from a labeled image with initial points
+ * C3t3 c3t3 = make_mesh_3(domain,
+ * criteria,
+ * parameters::initial_points(std::cref(initial_points))); // Use std::cref to avoid a copy
+ * \endcode
+ *
+ * \sa `CGAL::make_mesh_3()`
+ * \sa `CGAL::parameters::initial_points_generator()`
+ * \sa `MeshDomain_3::Construct_initial_points`
+ *
+ */
+template
+unspecified_type initial_points(const InitialPointsRange& initial_points);
} /* namespace parameters */
} /* namespace CGAL */
diff --git a/Mesh_3/doc/Mesh_3/Concepts/InitialPointsGenerator_3.h b/Mesh_3/doc/Mesh_3/Concepts/InitialPointsGenerator_3.h
new file mode 100644
index 00000000000..351ac34126f
--- /dev/null
+++ b/Mesh_3/doc/Mesh_3/Concepts/InitialPointsGenerator_3.h
@@ -0,0 +1,64 @@
+/*!
+\ingroup PkgMesh3SecondaryConcepts
+\cgalConcept
+
+The function object concept `InitialPointsGenerator_3` is designed to construct
+a set of initial points on the surface of the domain.
+
+\cgalHasModelsBegin
+\cgalHasModels{CGAL::Construct_initial_points_labeled_image}
+\cgalHasModels{CGAL::Construct_initial_points_gray_image}
+\cgalHasModelsEnd
+
+*/
+
+class InitialPointsGenerator_3 {
+public:
+
+/// \name Types (exposition only)
+/// @{
+/// These types are used in the concept's description but are not part of the concept itself.
+
+/*!
+* Mesh domain type to be meshed, model of `MeshDomain_3`
+*/
+typedef unspecified_type MeshDomain;
+
+/*!
+ * Type of the output mesh complex, model of `MeshComplex_3InTriangulation_3`
+ */
+typedef unspecified_type C3t3;
+/// @}
+
+/// \name Operations
+/// @{
+/// Initial points generators are designed to output, via their operators `operator(OutputIterator)`,
+/// a set of surface points for mesh initialization to an output iterator.
+
+/*!
+outputs a set of surface points for mesh initialization.
+
+If, after insertion of these points, the triangulation is still not 3D,
+or does not have any facets
+in the restricted Delaunay triangulation, then more points will be added automatically
+by the mesh generator.
+
+@tparam OutputIterator model of `OutputIterator` whose value type is a tuple-like object made of 3 elements:
+ - a `C3t3::Triangulation::Point` : the point `p`,
+ - an `int` : the minimal dimension of the subcomplexes on which `p` lies,
+ - a `MeshDomain_3::Index` : the index of the corresponding subcomplex.
+
+@param pts an output iterator for the points
+@param n a lower bound on the number of points to construct for initialization.
+ When `n` is set to its default value `0`, the functor must provide enough
+ points to initialize the mesh generation process, i.e., to have a 3D triangulation
+ with at least one facet in the restricted Delaunay triangulation.
+ If these conditions are not satisfied, then more points will be added automatically
+ by the mesh generator.
+*/
+template
+OutputIterator operator()(OutputIterator pts, const int n = 0);
+
+/// @}
+
+}; /* end InitialPointsGenerator_3 */
diff --git a/Mesh_3/doc/Mesh_3/Doxyfile.in b/Mesh_3/doc/Mesh_3/Doxyfile.in
index 18c58c248e6..5355f1a2635 100644
--- a/Mesh_3/doc/Mesh_3/Doxyfile.in
+++ b/Mesh_3/doc/Mesh_3/Doxyfile.in
@@ -39,7 +39,9 @@ INPUT += \
${CGAL_PACKAGE_INCLUDE_DIR}/CGAL/Compact_mesh_cell_base_3.h \
${CGAL_PACKAGE_INCLUDE_DIR}/CGAL/Mesh_3/Detect_features_in_image.h \
${CGAL_PACKAGE_INCLUDE_DIR}/CGAL/Mesh_3/Detect_features_on_image_bbox.h \
- ${CGAL_PACKAGE_INCLUDE_DIR}/CGAL/Mesh_edge_criteria_3.h
+ ${CGAL_PACKAGE_INCLUDE_DIR}/CGAL/Mesh_edge_criteria_3.h \
+ ${CGAL_PACKAGE_INCLUDE_DIR}/CGAL/Mesh_3/Construct_initial_points_labeled_image.h \
+ ${CGAL_PACKAGE_INCLUDE_DIR}/CGAL/Mesh_3/Construct_initial_points_gray_image.h
PROJECT_NAME = "CGAL ${CGAL_DOC_VERSION} - 3D Mesh Generation"
HTML_EXTRA_FILES = ${CGAL_PACKAGE_DOC_DIR}/fig/implicit_domain_3.jpg \
diff --git a/Mesh_3/doc/Mesh_3/Mesh_3.txt b/Mesh_3/doc/Mesh_3/Mesh_3.txt
index 47a0485d01a..7de626783d4 100644
--- a/Mesh_3/doc/Mesh_3/Mesh_3.txt
+++ b/Mesh_3/doc/Mesh_3/Mesh_3.txt
@@ -737,54 +737,29 @@ without the weights (left, 25563 vertices) and with the weights (right, 19936 ve
\subsubsection Mesh_3DomainsFrom3DImagesWithCustomInitialization Domains From 3D Images, with a Custom Initialization
-The example \ref Mesh_3/mesh_3D_image_with_custom_initialization.cpp is a modification
+The example \ref Mesh_3/mesh_3D_image_with_image_initialization.cpp is a modification
of \ref Mesh_3/mesh_3D_image.cpp. The goal of that example is to show how
the default initialization of the triangulation, using random rays, can be
replaced by a new implementation. In this case, the initialization detects
all connected components in the 3D segmented image, and inserts points in
the triangulation for each connected component.
-For the meshing, in the previous example (\ref Mesh_3/mesh_3D_image.cpp), we called `make_mesh_3()` as follows.
+\snippet Mesh_3/mesh_3D_image_with_image_initialization.cpp Meshing
-\snippet Mesh_3/mesh_3D_image.cpp Meshing
+The parameter `CGAL::parameters::initial_points_generator` is used.
+It expects a functor that returns a set of points for the mesh
+initialization (following the concept `InitialPointsGenerator_3`). The functor
+`Construct_initial_points_labeled_image` is used in this example.
+It constructs points using the API of the mesh domain, as follows.
+First, the functor `construct_intersection` is created:
-In the example \ref Mesh_3/mesh_3D_image_with_custom_initialization.cpp,
-that call is replaced by:
- -# the creation of an empty `%c3t3` object,
- -# a call to a non-documented function
- `initialize_triangulation_from_labeled_image()` that inserts points in
- the triangulation,
- -# then the call to `refine_mesh_3()`.
-
-\snippet Mesh_3/mesh_3D_image_with_custom_initialization.cpp Meshing
-
-The code of the function `initialize_triangulation_from_labeled_image()` is
-in the non-documented header \ref
-CGAL/Mesh_3/initialize_triangulation_from_labeled_image.h. As it is
-undocumented and may be removed or modified at any time, if you wish to
-use it then you should copy-paste it to your user code. The code of that
-function is rather complicated. The following lines show how to insert new
-points in the `%c3t3` object, with the calls to
-`MeshVertexBase_3::set_dimension()` and
-`MeshVertexBase_3::set_index()`.
-
-\snippet CGAL/Mesh_3/initialize_triangulation_from_labeled_image.h insert initial points
-
-The value of `index` must be consistent with the possible values of
-`Mesh_domain::Index`. In \ref
-CGAL/Mesh_3/initialize_triangulation_from_labeled_image.h, it is
-constructed using the API of the mesh domain, as follows. First the functor
-`construct_intersect` is created
-
-\dontinclude CGAL/Mesh_3/initialize_triangulation_from_labeled_image.h
-\skip Construct_intersection construct_intersection =
-\until construct_intersection_object
+\snippet CGAL/Mesh_3/Construct_initial_points_labeled_image.h construct intersection
then the `%Mesh_domain::Intersection` object (a `%tuple` with three
elements) is constructed using a call to the functor `construct_intersection`
-\skip Intersection intersect =
-\until construct_intersection
-and eventually `%index` is the element \#1 of `%intersect`.
-\skipline get<1>(intersect)
+\snippet CGAL/Mesh_3/Construct_initial_points_labeled_image.h use construct intersection
+and eventually `%intersect_index` is the element \#1 of `%intersect`.
+\snippet CGAL/Mesh_3/Construct_initial_points_labeled_image.h get construct intersection
+The dimension of the underlying simplex is stored as the element \#2 of `%intersect``.
The result of the custom initialization can be seen in
\cgalFigureRef{mesh3custominitimage3D}. The generated 3D image contains a
@@ -810,34 +785,25 @@ the center is meshed
Right: the mesh generated after the initialization of all connected components
\cgalFigureCaptionEnd
-
Note that the example \ref
-Mesh_3/mesh_3D_image_with_custom_initialization.cpp also shows how to
+Mesh_3/mesh_3D_image_with_image_initialization.cpp also shows how to
create a 3D image using the undocumented API of CGAL_ImageIO.
-\snippet Mesh_3/mesh_3D_image_with_custom_initialization.cpp Create the image
+\snippet Mesh_3/mesh_3D_image_with_image_initialization.cpp Create_the_image
The code of the function `%random_labeled_image()` is in the header file \ref
Mesh_3/random_labeled_image.h.
-The example \ref Mesh_3/mesh_3D_gray_image_with_custom_initialization.cpp is another
-custom initialization example, for meshing of 3D gray-level images. Similarly to
-the segmented image example above, the code consists in:
- -# the creation of an empty `%c3t3` object,
- -# a call to a non-documented function
- `initialize_triangulation_from_gray_image()` that inserts points in
- the triangulation,
- -# then the call to `refine_mesh_3()`.
+The example \ref Mesh_3/mesh_3D_image_with_custom_initialization.cpp features
+a custom functor that initializes the triangulation.
-\snippet Mesh_3/mesh_3D_gray_image_with_custom_initialization.cpp Meshing
-
-The code of the function `initialize_triangulation_from_gray_image()` is
-in the non-documented header \ref
-CGAL/Mesh_3/initialize_triangulation_from_gray_image.h. As it is
-undocumented and may be removed or modified at any time, if you wish to
-use it then you should copy-paste it to your user code.
+A struct `Custom_Initial_points_generator` that places 1D-feature points
+alongside a line is created.
+Finally, the example \ref Mesh_3/mesh_3D_image_with_initial_points.cpp features
+a point container that initializes the triangulation using the meshing parameter
+`parameters::initial_points()`.
\subsection Mesh_3UsingVariableSizingField Using Variable Sizing Field
diff --git a/Mesh_3/doc/Mesh_3/PackageDescription.txt b/Mesh_3/doc/Mesh_3/PackageDescription.txt
index 79706cd0523..926491fc627 100644
--- a/Mesh_3/doc/Mesh_3/PackageDescription.txt
+++ b/Mesh_3/doc/Mesh_3/PackageDescription.txt
@@ -29,6 +29,9 @@
/// The two main functions to generate a mesh are `make_mesh_3()` and `refine_mesh_3()`.
/// The other functions enable to optimize an existing mesh.
+/// \defgroup PkgMesh3Initializers Mesh Initialization Functors
+/// \ingroup PkgMesh3Ref
+/// The functors in this group perform mesh initialization by providing initial points.
/// \defgroup PkgMesh3Parameters Parameter Functions
/// \ingroup PkgMesh3Ref
@@ -77,6 +80,7 @@ related to the template parameters of some models of the main concepts:
- `BisectionGeometricTraits_3`
- `IntersectionGeometricTraits_3`
+- `InitialPointsGenerator_3`
- `MeshCellBase_3`
- `MeshVertexBase_3`
- `MeshDomainField_3`
@@ -110,6 +114,11 @@ The following functors are available for feature detection:
- `CGAL::Mesh_3::Detect_features_in_image`
- `CGAL::Mesh_3::Detect_features_on_image_bbox`
+The following functors are available for mesh initialization:
+
+- `CGAL::Construct_initial_points_labeled_image`
+- `CGAL::Construct_initial_points_gray_image`
+
\cgalCRPSection{Function Templates}
- `CGAL::make_mesh_3()`
@@ -120,10 +129,12 @@ The following functors are available for feature detection:
- `CGAL::odt_optimize_mesh_3()`
- `CGAL::Mesh_3::generate_label_weights()`
-\cgalCRPSection{CGAL::parameters Functions}
+\cgalCRPSection{%CGAL::parameters Functions}
- `CGAL::parameters::features()`
- `CGAL::parameters::no_features()`
+- `CGAL::parameters::initial_points()`
+- `CGAL::parameters::initial_points_generator()`
- `CGAL::parameters::exude()`
- `CGAL::parameters::no_exude()`
- `CGAL::parameters::perturb()`
diff --git a/Mesh_3/doc/Mesh_3/examples.txt b/Mesh_3/doc/Mesh_3/examples.txt
index 4b853a9847b..f045ee58b03 100644
--- a/Mesh_3/doc/Mesh_3/examples.txt
+++ b/Mesh_3/doc/Mesh_3/examples.txt
@@ -1,16 +1,15 @@
/*!
\example Mesh_3/implicit_functions.cpp
\example Mesh_3/mesh_3D_image.cpp
-\example Mesh_3/mesh_3D_gray_image_with_custom_initialization.cpp
\example Mesh_3/mesh_3D_image_with_features.cpp
\example Mesh_3/mesh_3D_image_with_custom_initialization.cpp
+\example Mesh_3/mesh_3D_image_with_initial_points.cpp
+\example Mesh_3/mesh_3D_image_with_image_initialization.cpp
\example Mesh_3/mesh_3D_image_with_detection_of_features.cpp
\example Mesh_3/mesh_3D_image_with_input_features.cpp
\example Mesh_3/mesh_3D_weighted_image.cpp
\example Mesh_3/mesh_3D_weighted_image_with_detection_of_features.cpp
\example Mesh_3/random_labeled_image.h
-\example CGAL/Mesh_3/initialize_triangulation_from_gray_image.h
-\example CGAL/Mesh_3/initialize_triangulation_from_labeled_image.h
\example Mesh_3/mesh_3D_image_variable_size.cpp
\example Mesh_3/mesh_hybrid_mesh_domain.cpp
\example Mesh_3/mesh_implicit_domains.cpp
diff --git a/Mesh_3/examples/Mesh_3/CMakeLists.txt b/Mesh_3/examples/Mesh_3/CMakeLists.txt
index 18924a5dfeb..a1e2e345e97 100644
--- a/Mesh_3/examples/Mesh_3/CMakeLists.txt
+++ b/Mesh_3/examples/Mesh_3/CMakeLists.txt
@@ -1,4 +1,4 @@
-cmake_minimum_required(VERSION 3.12...3.29)
+cmake_minimum_required(VERSION 3.12...3.31)
project(Mesh_3_Examples)
add_compile_definitions(CGAL_MESH_3_NO_DEPRECATED_SURFACE_INDEX
@@ -157,10 +157,15 @@ if(TARGET CGAL::CGAL_ImageIO)
PRIVATE CGAL::Eigen3_support)
create_single_source_cgal_program(
- "mesh_3D_gray_image_with_custom_initialization.cpp")
- target_link_libraries(mesh_3D_gray_image_with_custom_initialization
+ "mesh_3D_image_with_image_initialization.cpp")
+ target_link_libraries(mesh_3D_image_with_image_initialization
PRIVATE CGAL::Eigen3_support)
+ create_single_source_cgal_program(
+ "mesh_3D_image_with_initial_points.cpp")
+ target_link_libraries(mesh_3D_image_with_initial_points
+ PUBLIC CGAL::Eigen3_support)
+
create_single_source_cgal_program("mesh_3D_image_variable_size.cpp")
target_link_libraries(mesh_3D_image_variable_size
PRIVATE CGAL::Eigen3_support)
@@ -199,7 +204,8 @@ if(CGAL_ACTIVATE_CONCURRENT_MESH_3 AND TARGET CGAL::TBB_support)
mesh_3D_weighted_image_with_detection_of_features
mesh_3D_image_variable_size
mesh_3D_image_with_custom_initialization
- mesh_3D_gray_image_with_custom_initialization
+ mesh_3D_image_with_initial_points
+ mesh_3D_image_with_image_initialization
mesh_3D_image_with_features
mesh_3D_image_with_detection_of_features
mesh_3D_image_with_input_features
diff --git a/Mesh_3/examples/Mesh_3/mesh_3D_gray_image_with_custom_initialization.cpp b/Mesh_3/examples/Mesh_3/mesh_3D_gray_image_with_custom_initialization.cpp
deleted file mode 100644
index afed1a34b52..00000000000
--- a/Mesh_3/examples/Mesh_3/mesh_3D_gray_image_with_custom_initialization.cpp
+++ /dev/null
@@ -1,70 +0,0 @@
-
-#include
-
-#include
-#include
-#include
-
-#include
-
-#include
-#include
-#include
-#include
-
-typedef float Image_word_type;
-
-// Domain
-typedef CGAL::Exact_predicates_inexact_constructions_kernel K;
-typedef CGAL::Labeled_mesh_domain_3 Mesh_domain;
-
-// Parallel tag
-#ifdef CGAL_CONCURRENT_MESH_3
-typedef CGAL::Parallel_tag Concurrency_tag;
-#else
-typedef CGAL::Sequential_tag Concurrency_tag;
-#endif
-
-// Triangulation
-typedef CGAL::Mesh_triangulation_3::type Tr;
-typedef CGAL::Mesh_complex_3_in_triangulation_3