From 7c862f759e9ce05aadf26f7c2568db507fe17e47 Mon Sep 17 00:00:00 2001 From: Maxime Gimeno Date: Wed, 13 Mar 2019 09:26:55 +0100 Subject: [PATCH 01/65] Fix ctest call and clean autotest_cgal_with_ctest --- Scripts/developer_scripts/autotest_cgal_with_ctest | 3 --- Scripts/developer_scripts/run_testsuite_with_cmake | 5 ++--- 2 files changed, 2 insertions(+), 6 deletions(-) diff --git a/Scripts/developer_scripts/autotest_cgal_with_ctest b/Scripts/developer_scripts/autotest_cgal_with_ctest index 81163bac119..c4ff24438a3 100644 --- a/Scripts/developer_scripts/autotest_cgal_with_ctest +++ b/Scripts/developer_scripts/autotest_cgal_with_ctest @@ -225,9 +225,6 @@ fi CGAL_DIR=`readlink "${CGAL_ROOT}/CGAL-I"` CGAL_RELEASE_ID=$(cat last_release_id) -PLATFORMS=`value_of COMPILERS_${HOST}` -#setup dir -setup_dirs for HOST in ${BUILD_HOSTS}; do if [ "$HOST" != "localhost" ]; then #launch docker container diff --git a/Scripts/developer_scripts/run_testsuite_with_cmake b/Scripts/developer_scripts/run_testsuite_with_cmake index eefea70e264..234347b24e2 100644 --- a/Scripts/developer_scripts/run_testsuite_with_cmake +++ b/Scripts/developer_scripts/run_testsuite_with_cmake @@ -255,7 +255,6 @@ run_test_on_platform() if [ -f ${LIST_TEST_FILE} ]; then LIST_TEST_PACKAGES=$(source ${LIST_TEST_FILE}) fi - TO_TEST="" INIT="" for pkg in $LIST_TEST_PACKAGES; do if [ -z "$INIT" ]; then @@ -268,9 +267,9 @@ run_test_on_platform() CTEST_OPTS="-T Start -T Test -j${NUMBER_OF_PROCESSORS} ${DO_NOT_TEST:+-E execution___of__} --timeout 1200" if [ -z "${SHOW_PROGRESS}" ]; then - ctest ${CTEST_OPTS} ${TO_TEST:+-L ${TO_TEST} } ${KEEP_TESTS:+-FC .}> tmp.txt + ctest ${CTEST_OPTS} ${TO_TEST:+"-L ${TO_TEST}" } ${KEEP_TESTS:+-FC .}> tmp.txt else - ctest ${CTEST_OPTS} ${TO_TEST:+-L ${TO_TEST}} ${KEEP_TESTS:+-FC .}|tee tmp.txt + ctest ${CTEST_OPTS} ${TO_TEST:+"-L ${TO_TEST}" } ${KEEP_TESTS:+-FC .}|tee tmp.txt fi ##################### ## GET RESULTS ## From 53a60823a3cd6313b25e8add9844a192305b28ac Mon Sep 17 00:00:00 2001 From: Maxime Gimeno Date: Wed, 13 Mar 2019 12:44:24 +0100 Subject: [PATCH 02/65] Remove remaining debugging code --- Scripts/developer_scripts/autotest_cgal_with_ctest | 1 - 1 file changed, 1 deletion(-) diff --git a/Scripts/developer_scripts/autotest_cgal_with_ctest b/Scripts/developer_scripts/autotest_cgal_with_ctest index c4ff24438a3..470d12fc751 100644 --- a/Scripts/developer_scripts/autotest_cgal_with_ctest +++ b/Scripts/developer_scripts/autotest_cgal_with_ctest @@ -133,7 +133,6 @@ unzip_cgal() fi log "${ACTUAL_LOGFILE}" "untarring CGAL" - ${DECOMPRESSOR} -c "${CGAL_ZIPFILE}" > /dev/null ${DECOMPRESSOR} -c "${CGAL_ZIPFILE}" | ${TAR} xf - >> "${ACTUAL_LOGFILE}" 2>&1 if [ ${?} != 0 ]; then error "Could not untar CGAL" From 988b0a78cdf418755bf08d03ec0c1913bdb1a9ec Mon Sep 17 00:00:00 2001 From: Maxime Gimeno Date: Wed, 13 Mar 2019 13:05:52 +0100 Subject: [PATCH 03/65] Add -DRUNNING_CGAL_AUTO_TEST=TRUE to the cmake calls --- Scripts/developer_scripts/run_testsuite_with_cmake | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Scripts/developer_scripts/run_testsuite_with_cmake b/Scripts/developer_scripts/run_testsuite_with_cmake index 234347b24e2..7b6b9d896e9 100644 --- a/Scripts/developer_scripts/run_testsuite_with_cmake +++ b/Scripts/developer_scripts/run_testsuite_with_cmake @@ -247,9 +247,9 @@ run_test_on_platform() cmake ${INIT_FILE:+"-C${INIT_FILE}"} '${CMAKE_GENERATOR}' -DBUILD_TESTING=OFF -DWITH_tests=OFF -DWITH_CGAL_Qt5=OFF -DCGAL_HEADER_ONLY=ON $CGAL_DIR > installation.log 2>&1 rm CMakeCache.txt if [ -z "${SHOW_PROGRESS}" ]; then - cmake ${INIT_FILE:+"-C${INIT_FILE}"} '${CMAKE_GENERATOR}' VERBOSE=1 $CGAL_DIR >/dev/null 2>&1 + cmake ${INIT_FILE:+"-C${INIT_FILE}"} '${CMAKE_GENERATOR}' -DRUNNING_CGAL_AUTO_TEST=TRUE VERBOSE=1 $CGAL_DIR >/dev/null 2>&1 else - cmake ${INIT_FILE:+"-C${INIT_FILE}"} '${CMAKE_GENERATOR}' VERBOSE=1 $CGAL_DIR + cmake ${INIT_FILE:+"-C${INIT_FILE}"} '${CMAKE_GENERATOR}' -DRUNNING_CGAL_AUTO_TEST=TRUE VERBOSE=1 $CGAL_DIR fi LIST_TEST_FILE="${CGAL_ROOT}/list_test_packages" if [ -f ${LIST_TEST_FILE} ]; then From f070e4345de66602d41da7a71407edb74ffaacac Mon Sep 17 00:00:00 2001 From: Maxime Gimeno Date: Wed, 13 Mar 2019 16:20:14 +0100 Subject: [PATCH 04/65] WIP from git branch --- .../autotest_cgal_with_ctest | 24 ++++++++++++++++--- .../run_testsuite_with_cmake | 5 ++-- 2 files changed, 23 insertions(+), 6 deletions(-) diff --git a/Scripts/developer_scripts/autotest_cgal_with_ctest b/Scripts/developer_scripts/autotest_cgal_with_ctest index 470d12fc751..4d5cb79ab1d 100644 --- a/Scripts/developer_scripts/autotest_cgal_with_ctest +++ b/Scripts/developer_scripts/autotest_cgal_with_ctest @@ -32,6 +32,8 @@ export LOCK_FILE="" export LIST_TEST_PACKAGES="" export ACTUAL_LOGFILE="" export CGAL_DIR="" +export INSTALLATION_DIR="" +export TESTSUITE_DIR="" USE_LATEST_UNZIPPED="" # ---------------------------------------------------------------------------------------- @@ -182,6 +184,10 @@ do echo "Compiled test/ directory will be kept." KEEP_TESTS="y" ;; + "-g") + echo "Run testsuite from GIT branch" + INSTALLATION_DIR="Installation/" + TESTSUITE_DIR="Testsuite/" *) CGAL_LOCATION=$arg esac @@ -247,15 +253,27 @@ for HOST in ${BUILD_HOSTS}; do echo "export USE_TARGZ=$USE_TARGZ">> env.sh echo "export USE_TARBZ=$USE_TARBZ">> env.sh echo "export CGAL_RELEASE=$CGAL_RELEASE">> env.sh - echo "export CGAL_DIR=/cgal_root/\${CGAL_LAST}">>env.sh echo "export LIST_TEST_PACKAGES=/cgal_root/list_test_packages">> env.sh echo "export LOGS_DIR=/cgal_root/AUTOTEST_LOGS">> env.sh echo "export LOCK_FILE=/cgal_root/autotest_cgal_with_cmake.lock">> env.sh echo "export ACTUAL_LOGFILE=/cgal_root/\`basename \${0}\`.log">> env.sh echo "export REFERENCE_PLATFORMS_DIR=$REFERENCE_PLATFORMS_DIR">>env.sh - + echo "export INSTALLATION_DIR=$INSTALLATION_DIR">>env.sh + echo "export TESTSUITE_DIR=$TESTSUITE_DIR">>env.sh + docker pull cgal/testsuite-docker:debian-stable-cross-compilation-for-arm - docker run --rm -t -e CGAL_LAST="${CGAL_RELEASE_ID}" -e HOST="${HOST}" -v ${CGAL_ROOT}/ssh:/tmp_ssh -v ${DEPS_DIR}:/deps -v ${CGAL_ROOT}:/cgal_root cgal/testsuite-docker:debian-stable-cross-compilation-for-arm + if [ -z "${CGAL_RELEASE_ID}" ]; then #if not frmom branch + echo "export CGAL_DIR=/cgal_root/\${CGAL_LAST}">>env.sh + docker run --rm -t -e CGAL_LAST="${CGAL_RELEASE_ID}" -e HOST="${HOST}" -v ${CGAL_ROOT}/ssh:/tmp_ssh -v ${DEPS_DIR}:/deps -v ${CGAL_ROOT}:/cgal_root cgal/testsuite-docker:debian-stable-cross-compilation-for-arm + else + #read number from file and increase + if [ ! -r last_dev_id \; then + echo "0" > last_dev_id + fi + DEV_ID=$(cat last_dev_id) + echo "export CGAL_DIR=/cgal_root/CGAL-0.${DEV_ID}-dev">>env.sh + docker run --rm -t -e HOST="${HOST}" -v ${CGAL_ROOT}/ssh:/tmp_ssh -v ${DEPS_DIR}:/deps -v ${CGAL_ROOT}:/cgal_root -v${CGAL_DIR}:/cgal_root/CGAL-0.${DEV_ID}-dev cgal/testsuite-docker:debian-stable-cross-compilation-for-arm + fi else HOST=$HOST bash ${CGAL_DIR}/developer_scripts/run_testsuite_with_cmake fi diff --git a/Scripts/developer_scripts/run_testsuite_with_cmake b/Scripts/developer_scripts/run_testsuite_with_cmake index 7b6b9d896e9..e8528e385e1 100644 --- a/Scripts/developer_scripts/run_testsuite_with_cmake +++ b/Scripts/developer_scripts/run_testsuite_with_cmake @@ -277,11 +277,10 @@ run_test_on_platform() TAG_DIR=$(awk '/^Create new tag: /{print $4F}' tmp.txt) rm tmp.txt cd Testing/${TAG_DIR} - #python $CGAL_DIR/test/parse-ctest-dashboard-xml.py $CGAL_TESTER $PLATFORM RESULT_FILE=./"results_${CGAL_TESTER}_${PLATFORM}.txt" rm -f "$RESULT_FILE" touch "$RESULT_FILE" - sed -n '/CGAL_VERSION /s/#define //p' < "$CGAL_DIR/include/CGAL/version.h" >> "$RESULT_FILE" + sed -n '/CGAL_VERSION /s/#define //p' < "$CGAL_DIR/${INSTALLATION_DIR}include/CGAL/version.h" >> "$RESULT_FILE" echo "TESTER ${CGAL_TESTER}" >> "$RESULT_FILE" echo "TESTER_NAME ${CGAL_TESTER_NAME}" >> "$RESULT_FILE" echo "TESTER_ADDRESS ${TESTER_ADDRESS}" >> "$RESULT_FILE" @@ -290,7 +289,7 @@ run_test_on_platform() #echo "Host-specific installation log file: ../installation.log" >> "$RESULT_FILE" grep -e "^-- USING " "${CGAL_BINARY_DIR}/installation.log" >> $RESULT_FILE echo "------------" >> "$RESULT_FILE" - python3 ${CGAL_DIR}/test/parse-ctest-dashboard-xml.py $CGAL_TESTER $PLATFORM + python3 ${CGAL_DIR}/${TESTSUITE_DIR}test/parse-ctest-dashboard-xml.py $CGAL_TESTER $PLATFORM for file in $(ls|grep _Tests); do mv $file "$(echo "$file" | sed 's/_Tests//g')" From 1a6ef3301063e05da22714dcb9e4740c7c0c6eb4 Mon Sep 17 00:00:00 2001 From: Maxime Gimeno Date: Thu, 14 Mar 2019 16:36:11 +0100 Subject: [PATCH 05/65] WIP from git and upload to private page --- .../modules/CGAL_SetupCGALDependencies.cmake | 2 +- .../autotest_cgal_with_ctest | 50 ++++++++++------ .../run_testsuite_with_cmake | 59 ++++++++++++------- 3 files changed, 69 insertions(+), 42 deletions(-) diff --git a/Installation/cmake/modules/CGAL_SetupCGALDependencies.cmake b/Installation/cmake/modules/CGAL_SetupCGALDependencies.cmake index 776e34aac53..ddfd3299009 100644 --- a/Installation/cmake/modules/CGAL_SetupCGALDependencies.cmake +++ b/Installation/cmake/modules/CGAL_SetupCGALDependencies.cmake @@ -99,7 +99,7 @@ function(CGAL_setup_CGAL_dependencies target) if (CGAL_HEADER_ONLY) target_compile_definitions(${target} ${keyword} CGAL_HEADER_ONLY=1) endif() - if (RUNNING_CGAL_AUTO_TEST) + if (RUNNING_CGAL_AUTO_TEST OR CGAL_TEST_SUITE) target_compile_definitions(${target} ${keyword} CGAL_TEST_SUITE=1) endif() diff --git a/Scripts/developer_scripts/autotest_cgal_with_ctest b/Scripts/developer_scripts/autotest_cgal_with_ctest index 4d5cb79ab1d..c957fb7c959 100644 --- a/Scripts/developer_scripts/autotest_cgal_with_ctest +++ b/Scripts/developer_scripts/autotest_cgal_with_ctest @@ -29,7 +29,6 @@ export USE_TARBZ="n" export CGAL_RELEASE="" export LOGS_DIR="" export LOCK_FILE="" -export LIST_TEST_PACKAGES="" export ACTUAL_LOGFILE="" export CGAL_DIR="" export INSTALLATION_DIR="" @@ -90,7 +89,7 @@ get_cgal() fi CGAL_RELEASE_ID=`echo $CGAL_ZIPFILE | sed "s/.tar.gz//"` - echo ${CGAL_RELEASE_ID} > last_release_id + echo ${CGAL_RELEASE_ID} |tee last_release_id if [ ! "${CGAL_RELEASE_ID}" = "${CGAL_ZIPFILE}" ]; then USE_TARGZ="y" else @@ -186,8 +185,11 @@ do ;; "-g") echo "Run testsuite from GIT branch" - INSTALLATION_DIR="Installation/" - TESTSUITE_DIR="Testsuite/" + export INSTALLATION_DIR="Installation/" + export TESTSUITE_DIR="Testsuite/" + export SCRIPTS_DIR="Scripts/" + UPLOAD_RESULT_DESTINATION="mgimeno@cgal.geometryfactory.com:incoming" + ;; *) CGAL_LOCATION=$arg esac @@ -202,11 +204,15 @@ else fi -CGAL_DIR=`readlink "${CGAL_ROOT}/CGAL-I"` -source "${CGAL_DIR}/developer_scripts/log.sh" +if [ -n "${SCRIPTS_DIR}" ]; then + CGAL_DIR=`readlink "${CGAL_ROOT}/CGAL-git"` +else + CGAL_DIR=`readlink "${CGAL_ROOT}/CGAL-I"` +fi + +source "${CGAL_DIR}/${SCRIPTS_DIR}developer_scripts/log.sh" LOGS_DIR="${CGAL_ROOT}/AUTOTEST_LOGS" LOCK_FILE="${CGAL_ROOT}/autotest_cgal_with_cmake.lock" -LIST_TEST_PACKAGES="${CGAL_ROOT}/list_test_packages" # Setup logfile ACTUAL_LOGFILE="${CGAL_ROOT}/`basename ${0}`.log" @@ -218,7 +224,7 @@ cd "$CGAL_ROOT" # Starts the process -if [ -z "${USE_LATEST_UNZIPPED}" ]; then +if [ -z "${USE_LATEST_UNZIPPED}" -a -z "${SCRIPTS_DIR}" ]; then if [ -z "$CGAL_LOCATION" ]; then download_latest abort_if_latest_already_tested @@ -227,9 +233,13 @@ if [ -z "${USE_LATEST_UNZIPPED}" ]; then unzip_cgal fi #reset CGAL-DIR with the updated CGAL-I -CGAL_DIR=`readlink "${CGAL_ROOT}/CGAL-I"` -CGAL_RELEASE_ID=$(cat last_release_id) +if [ -n "${SCRIPTS_DIR}" ]; then + CGAL_DIR=`readlink "${CGAL_ROOT}/CGAL-git"` +else + CGAL_DIR=`readlink "${CGAL_ROOT}/CGAL-I"` +fi +CGAL_RELEASE_ID=$(cat last_release_id) for HOST in ${BUILD_HOSTS}; do if [ "$HOST" != "localhost" ]; then #launch docker container @@ -253,29 +263,31 @@ for HOST in ${BUILD_HOSTS}; do echo "export USE_TARGZ=$USE_TARGZ">> env.sh echo "export USE_TARBZ=$USE_TARBZ">> env.sh echo "export CGAL_RELEASE=$CGAL_RELEASE">> env.sh - echo "export LIST_TEST_PACKAGES=/cgal_root/list_test_packages">> env.sh echo "export LOGS_DIR=/cgal_root/AUTOTEST_LOGS">> env.sh echo "export LOCK_FILE=/cgal_root/autotest_cgal_with_cmake.lock">> env.sh echo "export ACTUAL_LOGFILE=/cgal_root/\`basename \${0}\`.log">> env.sh echo "export REFERENCE_PLATFORMS_DIR=$REFERENCE_PLATFORMS_DIR">>env.sh echo "export INSTALLATION_DIR=$INSTALLATION_DIR">>env.sh echo "export TESTSUITE_DIR=$TESTSUITE_DIR">>env.sh + echo "export SCRIPTS_DIR=$SCRIPTS_DIR">>env.sh docker pull cgal/testsuite-docker:debian-stable-cross-compilation-for-arm - if [ -z "${CGAL_RELEASE_ID}" ]; then #if not frmom branch + if [ -z "${SCRIPTS_DIR}" ]; then #if not from branch echo "export CGAL_DIR=/cgal_root/\${CGAL_LAST}">>env.sh docker run --rm -t -e CGAL_LAST="${CGAL_RELEASE_ID}" -e HOST="${HOST}" -v ${CGAL_ROOT}/ssh:/tmp_ssh -v ${DEPS_DIR}:/deps -v ${CGAL_ROOT}:/cgal_root cgal/testsuite-docker:debian-stable-cross-compilation-for-arm else #read number from file and increase - if [ ! -r last_dev_id \; then - echo "0" > last_dev_id - fi - DEV_ID=$(cat last_dev_id) - echo "export CGAL_DIR=/cgal_root/CGAL-0.${DEV_ID}-dev">>env.sh - docker run --rm -t -e HOST="${HOST}" -v ${CGAL_ROOT}/ssh:/tmp_ssh -v ${DEPS_DIR}:/deps -v ${CGAL_ROOT}:/cgal_root -v${CGAL_DIR}:/cgal_root/CGAL-0.${DEV_ID}-dev cgal/testsuite-docker:debian-stable-cross-compilation-for-arm + #if [ ! -r last_dev_id ]; then + # echo "0" > last_dev_id + #fi + #DEV_ID=$(cat last_dev_id) + #echo "$((${DEV_ID}+1))" > last_dev_id + #echo "export CGAL_DIR=/cgal_root/CGAL-0.${DEV_ID}-dev">>env.sh + echo "export CGAL_DIR=/cgal_root/CGAL-git">>env.sh + docker run --rm -t -e HOST="${HOST}" -v ${CGAL_ROOT}/ssh:/tmp_ssh -v ${DEPS_DIR}:/deps -v ${CGAL_ROOT}:/cgal_root -v${CGAL_DIR}:/cgal_root/CGAL-git cgal/testsuite-docker:debian-stable-cross-compilation-for-arm fi else - HOST=$HOST bash ${CGAL_DIR}/developer_scripts/run_testsuite_with_cmake + HOST=$HOST bash ${CGAL_DIR}/${SCRIPTS_DIR}developer_scripts/run_testsuite_with_cmake fi done diff --git a/Scripts/developer_scripts/run_testsuite_with_cmake b/Scripts/developer_scripts/run_testsuite_with_cmake index e8528e385e1..b1f1f304198 100644 --- a/Scripts/developer_scripts/run_testsuite_with_cmake +++ b/Scripts/developer_scripts/run_testsuite_with_cmake @@ -5,7 +5,7 @@ #### LAUNCH CTEST #### ########################## -source "${CGAL_DIR}/developer_scripts/log.sh" +source "${CGAL_DIR}/${SCRIPTS_DIR}developer_scripts/log.sh" # Load settings if [ -f "$CGAL_ROOT/.autocgalrc" ]; then . "$CGAL_ROOT/.autocgalrc" @@ -121,7 +121,9 @@ build_platforms_list() setup_dirs() { # dir for the actual release - + if [ ! -d ${CGAL_DIR}/test ]; then + mkdir ${CGAL_DIR}/test + fi CGAL_TEST_DIR=${CGAL_DIR}/test if [ ! -d "${CGAL_DIR}/cmake" ]; then @@ -135,8 +137,13 @@ setup_dirs() fi CGAL_RELEASE_DIR="${CGAL_DIR}" - - CGAL_RELEASE_ID=`basename "${CGAL_RELEASE_DIR}"` + if [ -z "$SCRIPTS_DIR" ]; then + CGAL_RELEASE_ID=`basename "${CGAL_RELEASE_DIR}"` + else + CGAL_GIT_VERSION=$(sed -n '/CGAL_VERSION /s/#define CGAL_VERSION //p'<"$CGAL_DIR/${INSTALLATION_DIR}include/CGAL/version.h" | sed -n 's/-\w*//p') + CGAL_GIT_VERSION="${CGAL_GIT_VERSION}-Ic-20190314" + CGAL_RELEASE_ID="CGAL-${CGAL_GIT_VERSION}" + fi #todo : too complicated for nothing. Take a simpler outsource build dir CGAL_BINARY_DIR_BASE=${CGAL_RELEASE_DIR}/cmake/platforms @@ -211,8 +218,10 @@ publish_results() ${TAR} cf "test_results-${HOST}_${PLATFORM}.tar" "results_${CGAL_TESTER}_${PLATFORM}.tar.gz" "results_${CGAL_TESTER}_${PLATFORM}.txt" ${COMPRESSOR} -9f "test_results-${HOST}_${PLATFORM}.tar" - COMPILER=`printf "%s" "$2" | tr -c '[A-Za-z0-9]./[=-=]*_\'\''\":?() ' 'x'` + COMPILER=`printf "%s" "$1" | tr -c '[A-Za-z0-9]./[=-=]*_\'\''\":?() ' 'x'` + FILENAME="${CGAL_RELEASE_ID}_${CGAL_TESTER}-test`datestr`-${COMPILER}-cmake.tar.gz" + LOGFILENAME="${CGAL_RELEASE_ID}-log`datestr`-${HOST}.gz" ${COMPRESSOR} -9f "${ACTUAL_LOGFILE}.test.${PLATFORM}" mv "${ACTUAL_LOGFILE}.test.${PLATFORM}.gz" "${LOGS_DIR}/${LOGFILENAME}" @@ -243,13 +252,16 @@ run_test_on_platform() if [ ! -f "${INIT_FILE}" ]; then echo "error NEED A INIT FILE !" fi - - cmake ${INIT_FILE:+"-C${INIT_FILE}"} '${CMAKE_GENERATOR}' -DBUILD_TESTING=OFF -DWITH_tests=OFF -DWITH_CGAL_Qt5=OFF -DCGAL_HEADER_ONLY=ON $CGAL_DIR > installation.log 2>&1 + cmake ${INIT_FILE:+"-C${INIT_FILE}"} '${CMAKE_GENERATOR}' -DBUILD_TESTING=OFF -DWITH_tests=OFF -DWITH_CGAL_Qt5=OFF -DCGAL_HEADER_ONLY=ON $CGAL_DIR>installation.log 2>&1 rm CMakeCache.txt + if [ -n "${SCRIPTS_DIR}" ]; then + CMAKE_OPTS="${CMAKE_OPTS} -DWITH_examples=ON -DWITH_demos=ON -DCGAL_TEST_SUITE=ON" + fi if [ -z "${SHOW_PROGRESS}" ]; then - cmake ${INIT_FILE:+"-C${INIT_FILE}"} '${CMAKE_GENERATOR}' -DRUNNING_CGAL_AUTO_TEST=TRUE VERBOSE=1 $CGAL_DIR >/dev/null 2>&1 + cmake ${INIT_FILE:+"-C${INIT_FILE}"} '${CMAKE_GENERATOR}' ${CMAKE_OPTS} $CGAL_DIR >package_installation.log 2>&1 else - cmake ${INIT_FILE:+"-C${INIT_FILE}"} '${CMAKE_GENERATOR}' -DRUNNING_CGAL_AUTO_TEST=TRUE VERBOSE=1 $CGAL_DIR + CMAKE_EXEC_CMD=$(echo "cmake ${INIT_FILE:+"-C${INIT_FILE}"} '${CMAKE_GENERATOR}' ${CMAKE_OPTS} $CGAL_DIR") + cmake ${INIT_FILE:+"-C${INIT_FILE}"} '${CMAKE_GENERATOR}' ${CMAKE_OPTS} $CGAL_DIR 2>&1 |tee package_installation.log fi LIST_TEST_FILE="${CGAL_ROOT}/list_test_packages" if [ -f ${LIST_TEST_FILE} ]; then @@ -257,19 +269,18 @@ run_test_on_platform() fi INIT="" for pkg in $LIST_TEST_PACKAGES; do - if [ -z "$INIT" ]; then - TO_TEST=$pkg - INIT="y" - else - TO_TEST="${TO_TEST}|$pkg" - fi + if [ -z "$INIT" ]; then + TO_TEST=$pkg + INIT="y" + else + TO_TEST="${TO_TEST}|$pkg" + fi done - - CTEST_OPTS="-T Start -T Test -j${NUMBER_OF_PROCESSORS} ${DO_NOT_TEST:+-E execution___of__} --timeout 1200" + CTEST_OPTS="-T Start -T Test -j${NUMBER_OF_PROCESSORS} ${DO_NOT_TEST:+-E execution___of__} --timeout 1200" if [ -z "${SHOW_PROGRESS}" ]; then - ctest ${CTEST_OPTS} ${TO_TEST:+"-L ${TO_TEST}" } ${KEEP_TESTS:+-FC .}> tmp.txt + ctest ${TO_TEST:+-L ${TO_TEST} } ${CTEST_OPTS} ${KEEP_TESTS:+-FC .}> tmp.txt else - ctest ${CTEST_OPTS} ${TO_TEST:+"-L ${TO_TEST}" } ${KEEP_TESTS:+-FC .}|tee tmp.txt + ctest ${TO_TEST:+-L ${TO_TEST} } ${CTEST_OPTS} ${KEEP_TESTS:+-FC .}|tee tmp.txt fi ##################### ## GET RESULTS ## @@ -280,13 +291,15 @@ run_test_on_platform() RESULT_FILE=./"results_${CGAL_TESTER}_${PLATFORM}.txt" rm -f "$RESULT_FILE" touch "$RESULT_FILE" - sed -n '/CGAL_VERSION /s/#define //p' < "$CGAL_DIR/${INSTALLATION_DIR}include/CGAL/version.h" >> "$RESULT_FILE" + if [ -z "${SCRIPTS_DIR}" ]; then + sed -n '/CGAL_VERSION /s/#define //p' < "$CGAL_DIR/${INSTALLATION_DIR}include/CGAL/version.h" >> "$RESULT_FILE" + else + echo "CGAL_VERSION ${CGAL_GIT_VERSION}">> "$RESULT_FILE" + fi echo "TESTER ${CGAL_TESTER}" >> "$RESULT_FILE" echo "TESTER_NAME ${CGAL_TESTER_NAME}" >> "$RESULT_FILE" echo "TESTER_ADDRESS ${TESTER_ADDRESS}" >> "$RESULT_FILE" echo "CGAL_TEST_PLATFORM ${PLATFORM}" >> "$RESULT_FILE" - #echo "General installation log file: ${GENERAL_BUILD_LOGFILE}" >> "$RESULT_FILE" - #echo "Host-specific installation log file: ../installation.log" >> "$RESULT_FILE" grep -e "^-- USING " "${CGAL_BINARY_DIR}/installation.log" >> $RESULT_FILE echo "------------" >> "$RESULT_FILE" python3 ${CGAL_DIR}/${TESTSUITE_DIR}test/parse-ctest-dashboard-xml.py $CGAL_TESTER $PLATFORM @@ -296,6 +309,8 @@ run_test_on_platform() done OUTPUT_FILE=results_${CGAL_TESTER}_${PLATFORM}.tar TEST_REPORT="TestReport_${CGAL_TESTER}_${PLATFORM}" + mkdir -p Installation + cp "${CGAL_BINARY_DIR}/package_installation.log" "Installation/${TEST_REPORT}" rm -f $OUTPUT_FILE $OUTPUT_FILE.gz tar cf $OUTPUT_FILE results_${CGAL_TESTER}_${PLATFORM}.txt */"$TEST_REPORT" From 2b00f0dba09138ac887b314e01070a5b53c38c21 Mon Sep 17 00:00:00 2001 From: Maxime Gimeno Date: Fri, 15 Mar 2019 13:05:36 +0100 Subject: [PATCH 06/65] FINISH autotest_cgal_with_ctest : from git, to another branch, full ctest testsuite. --- .../autotest_cgal_with_ctest | 9 -------- .../run_testsuite_with_cmake | 23 ++++++++++++++----- 2 files changed, 17 insertions(+), 15 deletions(-) mode change 100644 => 100755 Scripts/developer_scripts/autotest_cgal_with_ctest diff --git a/Scripts/developer_scripts/autotest_cgal_with_ctest b/Scripts/developer_scripts/autotest_cgal_with_ctest old mode 100644 new mode 100755 index c957fb7c959..c089047069a --- a/Scripts/developer_scripts/autotest_cgal_with_ctest +++ b/Scripts/developer_scripts/autotest_cgal_with_ctest @@ -194,7 +194,6 @@ do CGAL_LOCATION=$arg esac done - # Load settings if [ -f "$CGAL_ROOT/.autocgalrc" ]; then . "$CGAL_ROOT/.autocgalrc" @@ -203,7 +202,6 @@ else exit 1 fi - if [ -n "${SCRIPTS_DIR}" ]; then CGAL_DIR=`readlink "${CGAL_ROOT}/CGAL-git"` else @@ -276,13 +274,6 @@ for HOST in ${BUILD_HOSTS}; do echo "export CGAL_DIR=/cgal_root/\${CGAL_LAST}">>env.sh docker run --rm -t -e CGAL_LAST="${CGAL_RELEASE_ID}" -e HOST="${HOST}" -v ${CGAL_ROOT}/ssh:/tmp_ssh -v ${DEPS_DIR}:/deps -v ${CGAL_ROOT}:/cgal_root cgal/testsuite-docker:debian-stable-cross-compilation-for-arm else - #read number from file and increase - #if [ ! -r last_dev_id ]; then - # echo "0" > last_dev_id - #fi - #DEV_ID=$(cat last_dev_id) - #echo "$((${DEV_ID}+1))" > last_dev_id - #echo "export CGAL_DIR=/cgal_root/CGAL-0.${DEV_ID}-dev">>env.sh echo "export CGAL_DIR=/cgal_root/CGAL-git">>env.sh docker run --rm -t -e HOST="${HOST}" -v ${CGAL_ROOT}/ssh:/tmp_ssh -v ${DEPS_DIR}:/deps -v ${CGAL_ROOT}:/cgal_root -v${CGAL_DIR}:/cgal_root/CGAL-git cgal/testsuite-docker:debian-stable-cross-compilation-for-arm fi diff --git a/Scripts/developer_scripts/run_testsuite_with_cmake b/Scripts/developer_scripts/run_testsuite_with_cmake index b1f1f304198..81232aab11d 100644 --- a/Scripts/developer_scripts/run_testsuite_with_cmake +++ b/Scripts/developer_scripts/run_testsuite_with_cmake @@ -123,16 +123,20 @@ setup_dirs() # dir for the actual release if [ ! -d ${CGAL_DIR}/test ]; then mkdir ${CGAL_DIR}/test + #give all rights so that, if it is first created by docker, it is still editable without root access by the local user. + chmod 777 ${CGAL_DIR}/test fi CGAL_TEST_DIR=${CGAL_DIR}/test if [ ! -d "${CGAL_DIR}/cmake" ]; then mkdir "${CGAL_DIR}/cmake" + chmod 777 "${CGAL_DIR}/cmake" log "${ACTUAL_LOGFILE}" "Creating ${CGAL_DIR}/cmake" fi if [ ! -d "${CGAL_DIR}/cmake/platforms" ]; then mkdir "${CGAL_DIR}/cmake/platforms" + chmod 777 "${CGAL_DIR}/cmake/platforms" log "${ACTUAL_LOGFILE}" "Creating ${CGAL_DIR}/cmake/platforms" fi @@ -141,7 +145,8 @@ setup_dirs() CGAL_RELEASE_ID=`basename "${CGAL_RELEASE_DIR}"` else CGAL_GIT_VERSION=$(sed -n '/CGAL_VERSION /s/#define CGAL_VERSION //p'<"$CGAL_DIR/${INSTALLATION_DIR}include/CGAL/version.h" | sed -n 's/-\w*//p') - CGAL_GIT_VERSION="${CGAL_GIT_VERSION}-Ic-20190314" + MINIMALIST_DATE=$(date +%y%m%d) + CGAL_GIT_VERSION="${CGAL_GIT_VERSION}-Ic-${MINIMALIST_DATE}" CGAL_RELEASE_ID="CGAL-${CGAL_GIT_VERSION}" fi @@ -153,6 +158,7 @@ setup_dirs() if [ ! -r "${LOGS_DIR}" ]; then mkdir "$LOGS_DIR" + chmod 777 "$LOGS_DIR" fi # @@ -178,6 +184,7 @@ setup_dirs() if [ ! -d "${CGAL_BINARY_DIR}" ]; then log "${ACTUAL_LOGFILE}" "Creating platform directory ${CGAL_BINARY_DIR}" mkdir "${CGAL_BINARY_DIR}" + chmod 777 "${CGAL_BINARY_DIR}" fi done @@ -258,10 +265,9 @@ run_test_on_platform() CMAKE_OPTS="${CMAKE_OPTS} -DWITH_examples=ON -DWITH_demos=ON -DCGAL_TEST_SUITE=ON" fi if [ -z "${SHOW_PROGRESS}" ]; then - cmake ${INIT_FILE:+"-C${INIT_FILE}"} '${CMAKE_GENERATOR}' ${CMAKE_OPTS} $CGAL_DIR >package_installation.log 2>&1 + cmake ${INIT_FILE:+"-C${INIT_FILE}"} '${CMAKE_GENERATOR}' ${CMAKE_OPTS} $CGAL_DIR 2>&1 >package_installation.log else - CMAKE_EXEC_CMD=$(echo "cmake ${INIT_FILE:+"-C${INIT_FILE}"} '${CMAKE_GENERATOR}' ${CMAKE_OPTS} $CGAL_DIR") - cmake ${INIT_FILE:+"-C${INIT_FILE}"} '${CMAKE_GENERATOR}' ${CMAKE_OPTS} $CGAL_DIR 2>&1 |tee package_installation.log + cmake ${INIT_FILE:+"-C${INIT_FILE}"} '${CMAKE_GENERATOR}' ${CMAKE_OPTS} $CGAL_DIR 2>&1 |tee package_installation.log fi LIST_TEST_FILE="${CGAL_ROOT}/list_test_packages" if [ -f ${LIST_TEST_FILE} ]; then @@ -280,7 +286,8 @@ run_test_on_platform() if [ -z "${SHOW_PROGRESS}" ]; then ctest ${TO_TEST:+-L ${TO_TEST} } ${CTEST_OPTS} ${KEEP_TESTS:+-FC .}> tmp.txt else - ctest ${TO_TEST:+-L ${TO_TEST} } ${CTEST_OPTS} ${KEEP_TESTS:+-FC .}|tee tmp.txt + echo "ctest ${CTEST_OPTS} ${TO_TEST:+-L ${TO_TEST}} ${KEEP_TESTS:+-FC .}|tee tmp.txt" + ctest ${CTEST_OPTS} ${TO_TEST:+-L ${TO_TEST}} ${KEEP_TESTS:+-FC .}|tee tmp.txt fi ##################### ## GET RESULTS ## @@ -310,6 +317,7 @@ run_test_on_platform() OUTPUT_FILE=results_${CGAL_TESTER}_${PLATFORM}.tar TEST_REPORT="TestReport_${CGAL_TESTER}_${PLATFORM}" mkdir -p Installation + chmod 777 Installation cp "${CGAL_BINARY_DIR}/package_installation.log" "Installation/${TEST_REPORT}" rm -f $OUTPUT_FILE $OUTPUT_FILE.gz @@ -328,9 +336,12 @@ run_test_on_host() collect_all_current_platforms "${CGAL_BINARY_DIR_BASE}" fi - for PLATFORM in ${PLATFORMS}; do + for PLATFORM in ${PLATFORMS}; do run_test_on_platform "${PLATFORM}" publish_results "${PLATFORM}" + if [ -z "${KEEP_TESTS}" ]; then + rm -rf $CGAL_DIR/cmake/platforms/${PLATFORM} + fi done } From 7c985da973753eccc1129a3bc580dcec09a1d0bc Mon Sep 17 00:00:00 2001 From: Maxime Gimeno Date: Tue, 19 Mar 2019 10:22:53 +0100 Subject: [PATCH 07/65] set -DCGAL_TEST_SUITE even if not usng git branch --- Scripts/developer_scripts/run_testsuite_with_cmake | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/Scripts/developer_scripts/run_testsuite_with_cmake b/Scripts/developer_scripts/run_testsuite_with_cmake index 81232aab11d..705682d3538 100644 --- a/Scripts/developer_scripts/run_testsuite_with_cmake +++ b/Scripts/developer_scripts/run_testsuite_with_cmake @@ -261,8 +261,9 @@ run_test_on_platform() fi cmake ${INIT_FILE:+"-C${INIT_FILE}"} '${CMAKE_GENERATOR}' -DBUILD_TESTING=OFF -DWITH_tests=OFF -DWITH_CGAL_Qt5=OFF -DCGAL_HEADER_ONLY=ON $CGAL_DIR>installation.log 2>&1 rm CMakeCache.txt + CMAKE_OPTS="-DCGAL_TEST_SUITE=ON" if [ -n "${SCRIPTS_DIR}" ]; then - CMAKE_OPTS="${CMAKE_OPTS} -DWITH_examples=ON -DWITH_demos=ON -DCGAL_TEST_SUITE=ON" + CMAKE_OPTS="${CMAKE_OPTS} -DWITH_examples=ON -DWITH_demos=ON" fi if [ -z "${SHOW_PROGRESS}" ]; then cmake ${INIT_FILE:+"-C${INIT_FILE}"} '${CMAKE_GENERATOR}' ${CMAKE_OPTS} $CGAL_DIR 2>&1 >package_installation.log @@ -304,7 +305,7 @@ run_test_on_platform() echo "CGAL_VERSION ${CGAL_GIT_VERSION}">> "$RESULT_FILE" fi echo "TESTER ${CGAL_TESTER}" >> "$RESULT_FILE" - echo "TESTER_NAME ${CGAL_TESTER_NAME}" >> "$RESULT_FILE" + echo "TESTER_NAME ${CGAL_TESTER}" >> "$RESULT_FILE" echo "TESTER_ADDRESS ${TESTER_ADDRESS}" >> "$RESULT_FILE" echo "CGAL_TEST_PLATFORM ${PLATFORM}" >> "$RESULT_FILE" grep -e "^-- USING " "${CGAL_BINARY_DIR}/installation.log" >> $RESULT_FILE From e254a770df4ade04e088f2df2ac62c6dd3b5f5a5 Mon Sep 17 00:00:00 2001 From: Andreas Fabri Date: Tue, 19 Mar 2019 19:20:40 +0100 Subject: [PATCH 08/65] Some Fixes for #3457 --- .../Barycentric_coordinates_2.txt | 16 ++++++++-------- .../Chapter_memory_management.txt | 2 +- Documentation/doc/Documentation/Installation.txt | 16 ++++++++-------- Mesh_3/doc/Mesh_3/Mesh_3.txt | 4 ++-- .../doc/Minkowski_sum_2/Minkowski_sum_2.txt | 4 ++-- QP_solver/doc/QP_solver/Concepts/MPSFormat.h | 2 +- .../Surface_mesh_simplification.txt | 4 ++-- 7 files changed, 24 insertions(+), 24 deletions(-) diff --git a/Barycentric_coordinates_2/doc/Barycentric_coordinates_2/Barycentric_coordinates_2.txt b/Barycentric_coordinates_2/doc/Barycentric_coordinates_2/Barycentric_coordinates_2.txt index 5c9edab1683..9ec647a34eb 100644 --- a/Barycentric_coordinates_2/doc/Barycentric_coordinates_2/Barycentric_coordinates_2.txt +++ b/Barycentric_coordinates_2/doc/Barycentric_coordinates_2/Barycentric_coordinates_2.txt @@ -43,7 +43,7 @@ Example's point pattern. \cgalExample{Barycentric_coordinates_2/Segment_coordinates_example.cpp} \subsection tri_example Triangle Coordinates -In this example we show how to use the class `CGAL::Barycentric_coordinates::Triangle_coordinates_2` with the `Simple_cartesian` kernel for double type. We compute coordinates for three sets of points: interior (green), boundary (red), and exterior (blue). Note that some of the coordinate values for the exterior points are negative. We use a standard container of the type `std::vector` and `std::insert_iterator` to access and store the resulting coordinate values. +In this example we show how to use the class `CGAL::Barycentric_coordinates::Triangle_coordinates_2` with the `Simple_cartesian` kernel for double type. We compute coordinates for three sets of points: interior (green), boundary (red), and exterior (blue). Note that some of the coordinate values for the exterior points are negative. We use a standard container of the type `std::vector` and `std::insert_iterator` to access and store the resulting coordinate values. \anchor tri_coord_example \cgalFigureBegin{tri__example,triangle_coordinates_example.png} @@ -53,12 +53,12 @@ Example's point pattern. \cgalExample{Barycentric_coordinates_2/Triangle_coordinates_example.cpp} \subsection wp_example Wachspress Coordinates -In the following example we create 1000 random points, then we take the convex hull of this set of points as our polygon, and compute Wachspress coordinates at all the defined points. We use the `Simple_cartesian` kernel with double type as a traits class and store obtained coordinate values in a container of the type `std::vector`. The output iterator is `std::back_insert_iterator`. +In the following example we create 1000 random points, then we take the convex hull of this set of points as our polygon, and compute Wachspress coordinates at all the defined points. We use the `Simple_cartesian` kernel with double type as a traits class and store obtained coordinate values in a container of the type `std::vector`. The output iterator is `std::back_insert_iterator`. \cgalExample{Barycentric_coordinates_2/Wachspress_coordinates_example.cpp} \subsection dh_example Discrete Harmonic Coordinates -In this example we compute discrete harmonic coordinates for a set of green (interior), red (boundary), and blue (exterior) points with respect to a unit square. We also show how to specify the location of a query point using additional function parameters. The used kernel is exact, and we use an output container of the type `std::vector`. Since all the points are symmetric, it is easy to debug the correctness of the obtained coordinate values. The output iterator is `std::back_insert_iterator`. +In this example we compute discrete harmonic coordinates for a set of green (interior), red (boundary), and blue (exterior) points with respect to a unit square. We also show how to specify the location of a query point using additional function parameters. The used kernel is exact, and we use an output container of the type `std::vector`. Since all the points are symmetric, it is easy to debug the correctness of the obtained coordinate values. The output iterator is `std::back_insert_iterator`. \anchor dh_coord_example \cgalFigureBegin{dh__example,discrete_harmonic_coordinates_example.png} @@ -68,7 +68,7 @@ Example's point pattern. \cgalExample{Barycentric_coordinates_2/Discrete_harmonic_coordinates_example.cpp} \subsection mv_example Mean Value Coordinates -This is an example that shows how to compute mean value coordinates for a set of green points in a star-shaped polygon. We note that this type of coordinates is well-defined for such a concave polygon while Wachspress and discrete harmonic coordinates are not. However, it may give negative coordinate values for points outside the polygon's kernel (shown in red). We use an inexact data type, an output container of the type `std::vector`, and an output iterator of the type std::back_insert_iterator to compute, access, and store the resulting coordinate values. We also show how to choose different algorithms to compute generalized barycentric coordinates (one is more precise while the other is faster). +This is an example that shows how to compute mean value coordinates for a set of green points in a star-shaped polygon. We note that this type of coordinates is well-defined for such a concave polygon while Wachspress and discrete harmonic coordinates are not. However, it may give negative coordinate values for points outside the polygon's kernel (shown in red). We use an inexact data type, an output container of the type `std::vector`, and an output iterator of the type std::back_insert_iterator to compute, access, and store the resulting coordinate values. We also show how to choose different algorithms to compute generalized barycentric coordinates (one is more precise while the other is faster). \anchor mv_coord_example \cgalFigureBegin{mv__example,mean_value_coordinates_example.png} @@ -193,7 +193,7 @@ After the normalization of these weights as before
\f$b_i = \frac{w_i}{W^{mv}}\qquad\f$ with \f$\qquad W^{mv} = \sum_{j=1}^n w_j\f$
-we obtain the precise \f$O(n^2)\f$ algorithm. The fast O(n) algorithm computes the weights \f$w_i\f$ using the pseudocode from here. These weights +we obtain the precise \f$O(n^2)\f$ algorithm. The fast O(n) algorithm computes the weights \f$w_i\f$ using the pseudocode from here. These weights
\f$w_i = \frac{t_{i-1} + t_i}{r_i}\qquad\f$ with \f$\qquad t_i = \frac{\text{det}(d_i, d_{i+1})}{r_ir_{i+1} + d_id_{i+1}}\f$
@@ -231,7 +231,7 @@ The package is implemented in a way that later, if needed, other two-dimensional \section gbc_theory Theory of 2D Generalized Barycentric Coordinates -In 1827, the German mathematician and theoretical astronomer August Ferdinand Möbius (1790--1868) proposed a method \cite cgal:bc:m-dbc-27 to find coordinates of a point in the plane with respect to the vertices of a triangle. These coordinates are called triangle barycentric coordinates (sometimes area coordinates), and they are widely used in a variety of applications. Some of these applications are linear interpolation over a triangle and a triangle inclusion test. The first one is used for so-called shading, and the second one arises in the rasterization step when an image in vector graphics format needs to be converted into a raster image. +In 1827, the German mathematician and theoretical astronomer August Ferdinand Möbius (1790--1868) proposed a method \cite cgal:bc:m-dbc-27 to find coordinates of a point in the plane with respect to the vertices of a triangle. These coordinates are called triangle barycentric coordinates (sometimes area coordinates), and they are widely used in a variety of applications. Some of these applications are linear interpolation over a triangle and a triangle inclusion test. The first one is used for so-called shading, and the second one arises in the rasterization step when an image in vector graphics format needs to be converted into a raster image. Triangle barycentric coordinates have many important properties, including \em constant and linear precision, the Lagrange property, and positivity inside a triangle. These properties make these coordinates a unique tool in many scientific fields. If we restrict triangle coordinates to one of the edges of a triangle and its supporting line, we get barycentric coordinates with respect to a segment and call them \ref compute_seg_coord "segment coordinates". @@ -265,7 +265,7 @@ To plot discrete harmonic coordinates we take \ref wp_plot "the same polygon" as The discrete harmonic coordinate function with respect to the indicated vertex with values from zero to one as the colour bar indicates. \cgalFigureEnd -The last type of generalized barycentric coordinates that we discuss are mean value coordinates \cite cgal:f-mvc-03 proposed by M. Floater in 2003. Based on the mean value theorem, \ref gbc_deg_mean_value_coordinates "these coordinates", unlike Wachspress and discrete harmonic coordinates, are well-defined for arbitrary simple polygons, inherit all the properties of triangle coordinates for any convex polygon, and lack only the positivity property for general concave polygons. Hormann and Floater prove in \cite cgal:bc:hf-mvcapp-06 that these coordinates are positive inside the kernel of a star-shaped polygon. They are also positive in the closure of any quadrilateral. Like discrete harmonic weights, mean value weights are often used in the context of \ref PkgSurfaceMeshParameterization "triangle mesh parameterization." +The last type of generalized barycentric coordinates that we discuss are mean value coordinates \cite cgal:f-mvc-03 proposed by M. Floater in 2003. Based on the mean value theorem, \ref gbc_deg_mean_value_coordinates "these coordinates", unlike Wachspress and discrete harmonic coordinates, are well-defined for arbitrary simple polygons, inherit all the properties of triangle coordinates for any convex polygon, and lack only the positivity property for general concave polygons. Hormann and Floater prove in \cite cgal:bc:hf-mvcapp-06 that these coordinates are positive inside the kernel of a star-shaped polygon. They are also positive in the closure of any quadrilateral. Like discrete harmonic weights, mean value weights are often used in the context of \ref PkgSurfaceMeshParameterization "triangle mesh parameterization." In order to show the particular behaviour of mean value coordinates with an application to concave polygons, we take \ref fig__mv__example "a star-shaped polygon" with ten vertices \f$[v_0, \dots, v_9]\f$, sample its interior and boundary, and plot the coordinate function with respect to the fourth vertex \f$v_3\f$. As the colour bar indicates, the obtained function grows from a slightly negative value to one at the chosen vertex. It is also smooth inside the polygon and linear along all edges. @@ -276,7 +276,7 @@ Mean value coordinates with respect to \f$v_3\f$. The colour bar indicates the r Interesting fact: all the coordinates discussed in this section and implemented in the package come from one and the same family of generalized barycentric coordinates named 3-point family of coordinates \cite cgal:bc:fhk-gcbcocp-06. \section gbc_acknowledgments Acknowledgments -The authors wish to thank Teseo Schneider and Randolf Schaerfig for helpful comments and discussions. We also appreciate the great effort invested in this package by our reviewers Andreas Fabri and Sébastien Loriot. Finally, to create pictures for this manual, we used two programs: Geogebra and Matlab. +The authors wish to thank Teseo Schneider and Randolf Schaerfig for helpful comments and discussions. We also appreciate the great effort invested in this package by our reviewers Andreas Fabri and Sébastien Loriot. Finally, to create pictures for this manual, we used two programs: Geogebra and Matlab. */ diff --git a/Documentation/doc/Documentation/Developer_manual/Chapter_memory_management.txt b/Documentation/doc/Documentation/Developer_manual/Chapter_memory_management.txt index b8ae562d361..a71f9e53725 100644 --- a/Documentation/doc/Documentation/Developer_manual/Chapter_memory_management.txt +++ b/Documentation/doc/Documentation/Developer_manual/Chapter_memory_management.txt @@ -20,7 +20,7 @@ We adopted the definition of the Standard \cpp allocator \cgalCite{cgal:ansi-is14882-98}. The `std::allocator` is the only predefined and required allocator imposed by [\cpp] on all \cpp compiler implementations. The exact specification can also be found at -http://en.wikipedia.org/wiki/Allocator_(C++). +https://en.wikipedia.org/wiki/Allocator_(C++). Objects of type `std::allocator` can be used to obtain small, typed chunks of memory to be used, for example, as static members of a class. diff --git a/Documentation/doc/Documentation/Installation.txt b/Documentation/doc/Documentation/Installation.txt index 067f5a4c10f..2f67abb0a78 100644 --- a/Documentation/doc/Documentation/Installation.txt +++ b/Documentation/doc/Documentation/Installation.txt @@ -136,7 +136,7 @@ contains the following subdirectories: The directories `include/CGAL/CORE` and `src/CGALCore` contain a -distribution of the \sc{Core} library\cgalFootnote{`http://www.cs.nyu.edu/exact/`} version 1.7 for +distribution of the \sc{Core} library\cgalFootnote{`https://www.cs.nyu.edu/exact/`} version 1.7 for dealing with algebraic numbers. \sc{Core} is not part of \cgal and has its own license. @@ -170,11 +170,11 @@ It may work for older versions of the above listed compilers. In order to configure, build, and install the \cgal libraries, examples and demos, you need CMake, a cross-platform "makefile generator". -If CMake is not installed already you can obtain it from `http://www.cmake.org/`. +If CMake is not installed already you can obtain it from `https://www.cmake.org/`. CMake version 3.1 or higher is required. This manual explains only those features of CMake which are needed in order to build \cgal. Please refer to the -CMake documentation at `http://www.cmake.org/` for further details. +CMake documentation at `https://www.cmake.org/` for further details. Before building \cgal you have to choose the compiler/linker, set compiler and linker flags, specify which @@ -405,8 +405,8 @@ not depend on the DLL's of those two libraries. In \cgal some demos and examples depend on `Boost.Program_options`. In case the \sc{Boost} libraries are not installed on your system already, you -can obtain them from `http://www.boost.org/`. For Visual C++ you can download precompiled libraries -from `http://sourceforge.net/projects/boost/files/boost-binaries/`. +can obtain them from `https://www.boost.org/`. For Visual C++ you can download precompiled libraries +from `https://sourceforge.net/projects/boost/files/boost-binaries/`. For Visual C++ versions prior to 2015 `Boost.Thread` is required, so make sure to either install the precompiled libraries for your compiler or build `libboost-thread` and `libboost-system`. @@ -428,7 +428,7 @@ solution, and we recommend to use them. Having \sc{Gmp} version 4.2 or higher and \sc{Mpfr} version 2.2.1 or higher installed is recommended. These libraries can be obtained from -`http://gmplib.org/` and `http://www.mpfr.org/`, respectively. +`https://gmplib.org/` and `https://www.mpfr.org/`, respectively. As Visual \cpp is not properly supported by the \sc{Gmp} and \sc{Mpfr} projects, we provide precompiled versions @@ -461,7 +461,7 @@ Qt is a cross-platform application and UI framework. The component libCGAL_Qt5 requires \sc{Qt}5 installed on your system. In case \sc{Qt} is not yet installed on your system, you can download -it from `http://qt-project.org/`. +it from `http://www.qt-project.org/`. The exhaustive list of \sc{Qt}5 components used in demos is: @@ -591,7 +591,7 @@ vision, computer graphics and machine learning. In \cgal, \sc{OpenCV} is used by the \ref PkgClassificationRef package. -The \sc{OpenCV} web site is `http://opencv.org/`. +The \sc{OpenCV} web site is `https://opencv.org/`. \subsection thirdpartyTensorFlow TensorFlow diff --git a/Mesh_3/doc/Mesh_3/Mesh_3.txt b/Mesh_3/doc/Mesh_3/Mesh_3.txt index ddc57960ea2..a6026076aed 100644 --- a/Mesh_3/doc/Mesh_3/Mesh_3.txt +++ b/Mesh_3/doc/Mesh_3/Mesh_3.txt @@ -542,9 +542,9 @@ cell base classes, the `MeshVertexBase_3` and `MeshCellBase_3` concepts impose additional requirements. Parallel algorithms require the executable to be linked against the -Intel TBB library. +Intel TBB library. To control the number of threads used, the user may use the tbb::task_scheduler_init class. -See the TBB documentation +See the TBB documentation for more details. \section Mesh_3_section_examples Examples diff --git a/Minkowski_sum_2/doc/Minkowski_sum_2/Minkowski_sum_2.txt b/Minkowski_sum_2/doc/Minkowski_sum_2/Minkowski_sum_2.txt index 2962c11c312..6aa716ec4ec 100644 --- a/Minkowski_sum_2/doc/Minkowski_sum_2/Minkowski_sum_2.txt +++ b/Minkowski_sum_2/doc/Minkowski_sum_2/Minkowski_sum_2.txt @@ -52,8 +52,8 @@ two input polygons are convex, their edges are already sorted by the angle they form with the \f$ x\f$-axis; see the figure above. The Minkowski sum can therefore be computed using an operation similar to the merge step of the merge-sort algorithm\cgalFootnote{See, for example, - -http://en.wikipedia.org/wiki/Merge_sort.} in \f$ O(m + n)\f$ time, + +https://en.wikipedia.org/wiki/Merge_sort.} in \f$ O(m + n)\f$ time, starting from the two bottommost vertices in \f$ P\f$ and in \f$ Q\f$ and merging the ordered list of edges. diff --git a/QP_solver/doc/QP_solver/Concepts/MPSFormat.h b/QP_solver/doc/QP_solver/Concepts/MPSFormat.h index 5bbf412a183..cc6515197bf 100644 --- a/QP_solver/doc/QP_solver/Concepts/MPSFormat.h +++ b/QP_solver/doc/QP_solver/Concepts/MPSFormat.h @@ -8,7 +8,7 @@ programs according to the concepts `QuadraticProgram`, `LinearProgram`, `NonnegativeQuadraticProgram`, and `NonnegativeLinearProgram`, see also -http://en.wikipedia.org/wiki/MPS_(format). +https://en.wikipedia.org/wiki/MPS_(format). \cgal supports a large subset of this format, but there are MPS files around that we cannot read (for diff --git a/Surface_mesh_simplification/doc/Surface_mesh_simplification/Surface_mesh_simplification.txt b/Surface_mesh_simplification/doc/Surface_mesh_simplification/Surface_mesh_simplification.txt index 98d94903647..4402035f5fd 100644 --- a/Surface_mesh_simplification/doc/Surface_mesh_simplification/Surface_mesh_simplification.txt +++ b/Surface_mesh_simplification/doc/Surface_mesh_simplification/Surface_mesh_simplification.txt @@ -31,8 +31,8 @@ is met, such as reaching the desired number of edges. The algorithm implemented here is generic in the sense that it does not require the surface mesh to be of a particular type but to be a model of the `MutableFaceGraph` and `HalfedgeListGraph` concepts. -The design is policy-based -(http://en.wikipedia.org/wiki/Policy-based_design), +The design is policy-based +(https://en.wikipedia.org/wiki/Policy-based_design), meaning that you can customize some aspects of the process by passing a set of policy objects. Each policy object specifies a particular aspect of the algorithm, such as how edges are selected and where the replacement vertex is placed. All policies have From 7c2674abc898308b866f3b0ebc6ccf2a3810d0ac Mon Sep 17 00:00:00 2001 From: Andreas Fabri Date: Wed, 20 Mar 2019 08:38:40 +0100 Subject: [PATCH 09/65] More links fixed --- .../doc/CGAL_ipelets/CGAL_ipelets.txt | 2 +- .../doc/Classification/Classification.txt | 4 +-- .../OpenCV/Random_forest_classifier.h | 2 +- .../doc/Documentation/Installation.txt | 6 ++--- .../doc/GraphicsView/GraphicsView.txt | 26 +++++++++---------- .../doc/GraphicsView/PackageDescription.txt | 4 +-- Mesh_3/doc/Mesh_3/Mesh_3.txt | 2 +- .../doc/STL_Extension/STL_Extension.txt | 2 +- .../doc/Solver_interface/Solver_interface.txt | 2 +- .../doc/Triangulation/Triangulation.txt | 2 +- .../doc/Triangulation_3/Triangulation_3.txt | 4 +-- 11 files changed, 28 insertions(+), 28 deletions(-) diff --git a/CGAL_ipelets/doc/CGAL_ipelets/CGAL_ipelets.txt b/CGAL_ipelets/doc/CGAL_ipelets/CGAL_ipelets.txt index 6d01a2c201e..60598a5bb48 100644 --- a/CGAL_ipelets/doc/CGAL_ipelets/CGAL_ipelets.txt +++ b/CGAL_ipelets/doc/CGAL_ipelets/CGAL_ipelets.txt @@ -9,7 +9,7 @@ namespace CGAL { \section CGAL_ipeletsIntroduction Introduction -The Ipe extensible drawing editor (http://tclab.kaist.ac.kr/ipe/) \cgalCite{schwarzkopf1995ede}, \cgalCite{ipe:man-09} +The Ipe extensible drawing editor (http://ipe.otfried.org) \cgalCite{schwarzkopf1995ede}, \cgalCite{ipe:man-09} is a tool used by computational geometry researchers to produce 2D figures for inclusion in articles or presentations. The extensible adjective sheds a light on an important feature: the possibility for users to write small extensions (called ipelets) diff --git a/Classification/doc/Classification/Classification.txt b/Classification/doc/Classification/Classification.txt index 2138985acd5..6e7ed342f7d 100644 --- a/Classification/doc/Classification/Classification.txt +++ b/Classification/doc/Classification/Classification.txt @@ -235,7 +235,7 @@ to README provided in the [ETH Zurich's code archive](https://www.ethz.ch/conten The second classifier is [OpenCV::Random_forest_classifier](@ref CGAL::Classification::OpenCV::Random_forest_classifier). It uses the \ref thirdpartyOpenCV library, more specifically the -[Random Trees](http://docs.opencv.org/2.4/modules/ml/doc/random_trees.html) +[Random Trees](https://docs.opencv.org/2.4/modules/ml/doc/random_trees.html) package. Note that this classifier usually produces results with a lower @@ -246,7 +246,7 @@ Forest instead. An [example](\ref Classification_example_opencv_random_forest) shows how to use this classifier. For more details about the algorithm, please refer -to [the official documentation](http://docs.opencv.org/2.4/modules/ml/doc/random_trees.html) +to [the official documentation](https://docs.opencv.org/2.4/modules/ml/doc/random_trees.html) of OpenCV. \subsection Classification_TensorFlow_neural_network TensorFlow Neural Network diff --git a/Classification/include/CGAL/Classification/OpenCV/Random_forest_classifier.h b/Classification/include/CGAL/Classification/OpenCV/Random_forest_classifier.h index 8b04c5d0b8d..b68173e1b14 100644 --- a/Classification/include/CGAL/Classification/OpenCV/Random_forest_classifier.h +++ b/Classification/include/CGAL/Classification/OpenCV/Random_forest_classifier.h @@ -72,7 +72,7 @@ public: /*! \brief Instantiates the classifier using the sets of `labels` and `features`. - Parameters documentation is copy-pasted from [the official documentation of OpenCV](http://docs.opencv.org/2.4/modules/ml/doc/random_trees.html). For more details on this method, please refer to it. + Parameters documentation is copy-pasted from [the official documentation of OpenCV](https://docs.opencv.org/2.4/modules/ml/doc/random_trees.html). For more details on this method, please refer to it. \param labels label set used. \param features feature set used. diff --git a/Documentation/doc/Documentation/Installation.txt b/Documentation/doc/Documentation/Installation.txt index 2f67abb0a78..ee55aa8dfd5 100644 --- a/Documentation/doc/Documentation/Installation.txt +++ b/Documentation/doc/Documentation/Installation.txt @@ -73,7 +73,7 @@ or if Qt5 are desired sudo port install cgal +qt5 +universal +demos -The setup is similar for homebrew . +The setup is similar for homebrew . \subsection sseccgaldebian CGAL on Linux @@ -159,7 +159,7 @@ In order to build the \cgal libraries, you need a \cpp compiler. | :------- | :--------------- | |\sc{Gnu} `g++` 4.1 or later\cgalFootnote{`http://gcc.gnu.org/`} | Linux / MacOS X | | | \sc{MS} Windows | -|\sc{MS} Visual `C++` 12.0, 14.0, 15.9 (\sc{Visual Studio} 2013, 2015, and 2017)\cgalFootnote{`http://msdn.microsoft.com/en-us/vstudio/`} | \sc{MS} Windows | +|\sc{MS} Visual `C++` 12.0, 14.0, 15.9 (\sc{Visual Studio} 2013, 2015, and 2017)\cgalFootnote{`https://visualstudio.microsoft.com/`} | \sc{MS} Windows | | `Clang` \cgalFootnote{`http://clang.llvm.org/`} compiler version 7.0.1 | Linux | | Apple `Clang` compiler version 7.0.2 | MacOS X | @@ -502,7 +502,7 @@ algorithms. Like \sc{Core}, \leda offers a real number data type. In \cgal this library is optional, and its number types can be used as an alternative to \sc{Gmp}, \sc{Mpfr}, and \sc{Core}. -Free and commercial editions of \leda are available from `http://www.algorithmic-solutions.com/leda/index.html`. +Free and commercial editions of \leda are available from `https://www.algorithmic-solutions.com/leda/index.html`. \subsection thirdpartyMPFI MPFI diff --git a/GraphicsView/doc/GraphicsView/GraphicsView.txt b/GraphicsView/doc/GraphicsView/GraphicsView.txt index 000358aea14..1a407b892ed 100644 --- a/GraphicsView/doc/GraphicsView/GraphicsView.txt +++ b/GraphicsView/doc/GraphicsView/GraphicsView.txt @@ -8,17 +8,17 @@ namespace CGAL { \cgalAutoToc \authors Andreas Fabri and Laurent Rineau -Qt is a Gui toolkit for +Qt is a Gui toolkit for cross-platform application development. \section GraphicsViewIntroduction Introduction This chapter describes classes that help to visualize two dimensional \cgal objects -with the Qt Graphics View Framework. +with the Qt Graphics View Framework. -This framework uses the model view paradigm. `QGraphicsItem`s are stored in a -`QGraphicsScene` -and are displayed in a `QGraphicsView`. The items +This framework uses the model view paradigm. `QGraphicsItem`s are stored in a +`QGraphicsScene` +and are displayed in a `QGraphicsView`. The items have a paint method which is called when an item is in the visible area of a view. The framework is also responsible for dispatching events from the view via the scene to the items. The framework is extensible in the sense @@ -50,14 +50,14 @@ classes that have to override member functions adhering to this naming scheme. \section GraphicsViewOverall Overall Design In \cgalFigureRef{graphicsviewuml} you see four classes depicted in grey, -that come from the %Qt Graphics View Framework. The `QGraphicsScene` -contains `QGraphicsItem`s, which get displayed in any number -of `QGraphicsView`s. The views are widgets, that is they take screen space +that come from the %Qt Graphics View Framework. The `QGraphicsScene` +contains `QGraphicsItem`s, which get displayed in any number +of `QGraphicsView`s. The views are widgets, that is they take screen space in an application. -The fourth class is the `QObject`. It plays an important role in %Qt for -event handling and memory management. First, it allows to add signals and -slots, and to connect them. Second, it allows to install event filters. +The fourth class is the `QObject`. It plays an important role in %Qt for +event handling and memory management. First, it allows to add signals and +slots, and to connect them. Second, it allows to install event filters. \cgalFigureBegin{graphicsviewuml,uml-design.png} UML Class Diagram with the %Qt classes (blue), \cgal classes for using the framework (yellow), \cgal data structures (red), and application classes (green). @@ -68,8 +68,8 @@ UML Class Diagram with the %Qt classes (blue), \cgal classes for using the frame In order to visualize for example a `CGAL::Delaunay_triangulation_2`, we provide the graphics item class `CGAL::Qt::TriangulationGraphicsItem`. It provides a `paint` method that draws the edges and vertices of a triangulation -using the drawing primitives of the `QPainter`. The color of vertices and edges, -can be chosen by setting a user defined `QPen`. +using the drawing primitives of the `QPainter`. The color of vertices and edges, +can be chosen by setting a user defined `QPen`. As this graphics item only stores a pointer to a triangulation, it must be notified about changes like the insertion of points coming from diff --git a/GraphicsView/doc/GraphicsView/PackageDescription.txt b/GraphicsView/doc/GraphicsView/PackageDescription.txt index ecd34c19264..fa86adc65a4 100644 --- a/GraphicsView/doc/GraphicsView/PackageDescription.txt +++ b/GraphicsView/doc/GraphicsView/PackageDescription.txt @@ -13,7 +13,7 @@ \cgalPkgPicture{detail.png} \cgalPkgSummaryBegin \cgalPkgAuthors{Andreas Fabri and Laurent Rineau} -\cgalPkgDesc{This package provides classes for displaying \cgal objects and data structures in the Qt 5 Graphics View Framework.} +\cgalPkgDesc{This package provides classes for displaying \cgal objects and data structures in the Qt 5 Graphics View Framework.} \cgalPkgManuals{Chapter_CGAL_and_the_Qt_Graphics_View_Framework,PkgGraphicsViewRef} \cgalPkgSummaryEnd \cgalPkgShortInfoBegin @@ -26,7 +26,7 @@ This package provides some classes which allow to use \cgal classes in Qt applications which make use of the Qt Graphics +HREF="https://qt-project.org/doc/qt-5/graphicsview.html">Qt Graphics View Framework. \cgalClassifedRefPages diff --git a/Mesh_3/doc/Mesh_3/Mesh_3.txt b/Mesh_3/doc/Mesh_3/Mesh_3.txt index a6026076aed..269b5d18e28 100644 --- a/Mesh_3/doc/Mesh_3/Mesh_3.txt +++ b/Mesh_3/doc/Mesh_3/Mesh_3.txt @@ -1200,7 +1200,7 @@ vertices/second View of 3d image mesh generation result (size = 4). \cgalFigureEnd -We mesh image number 2 from the 3D-IRCADb-01 (available at http://www.ircad.fr/softwares/3Dircadb/3Dircadb1/index.php) public database. +We mesh image number 2 from the 3D-IRCADb-01 (available at https://www.ircad.fr/softwares/3Dircadb/3Dircadb1/index.php) public database. The size of this image is 512x512x172 voxels (about 45M voxels). The size of the voxels is 0.78mm x 0.78mm x 1.6mm. \cgalFigureRef{figuremesh_3_benchmark_3d_image} shows the mesh obtained for size set to 4. diff --git a/STL_Extension/doc/STL_Extension/STL_Extension.txt b/STL_Extension/doc/STL_Extension/STL_Extension.txt index ba2ddbd1e8d..55e68f926cd 100644 --- a/STL_Extension/doc/STL_Extension/STL_Extension.txt +++ b/STL_Extension/doc/STL_Extension/STL_Extension.txt @@ -98,7 +98,7 @@ The class `Concurrent_compact_container` provides the same features, but enables concurrency-safe `insert` and `erase` operations. Other operations are not concurrency-safe. It requires the program to be linked against -the Intel TBB library. +the Intel TBB library. \section stl_multi Multiset with Extended Functionality diff --git a/Solver_interface/doc/Solver_interface/Solver_interface.txt b/Solver_interface/doc/Solver_interface/Solver_interface.txt index d833f601a1b..7d2587af02a 100644 --- a/Solver_interface/doc/Solver_interface/Solver_interface.txt +++ b/Solver_interface/doc/Solver_interface/Solver_interface.txt @@ -17,7 +17,7 @@ library. Wrappers for the Eigen classes `Eigen_matrix` and It is straightforward to develop equivalent models for other solvers, for example those found in the Intel Math Kernel +href="https://software.intel.com/en-us/mkl">Intel Math Kernel Library (MKL). diff --git a/Triangulation/doc/Triangulation/Triangulation.txt b/Triangulation/doc/Triangulation/Triangulation.txt index f315bc65a13..cf539a32244 100644 --- a/Triangulation/doc/Triangulation/Triangulation.txt +++ b/Triangulation/doc/Triangulation/Triangulation.txt @@ -581,7 +581,7 @@ work by Samuel Hornus, Olivier Devillers and Clément Jamin. In 2017, Clément Jamin added the regular triangulations. Clément Jamin's work was supported by the -Advanced Grant of the European Research Council GUDHI +Advanced Grant of the European Research Council GUDHI (Geometric Understanding in Higher Dimensions). diff --git a/Triangulation_3/doc/Triangulation_3/Triangulation_3.txt b/Triangulation_3/doc/Triangulation_3/Triangulation_3.txt index 8a71624c432..d3c7825fbcb 100644 --- a/Triangulation_3/doc/Triangulation_3/Triangulation_3.txt +++ b/Triangulation_3/doc/Triangulation_3/Triangulation_3.txt @@ -411,9 +411,9 @@ range of points will be performed in parallel, and the individual insert/remove operations will be optionally thread-safe. Parallel algorithms require the program to be linked against -the Intel TBB library. +the Intel TBB library. To control the number of threads used, the user may use the tbb::task_scheduler_init class. -See the TBB documentation +See the TBB documentation for more details. \section Triangulation3secexamples Examples From ab0544514c3ac129e4dd153d32ed4b774901336a Mon Sep 17 00:00:00 2001 From: Andreas Fabri Date: Wed, 20 Mar 2019 08:43:07 +0100 Subject: [PATCH 10/65] Change ruu.nl to uu.nl although the links are often outdated --- Documentation/doc/biblio/cgal_manual.bib | 2 +- Documentation/doc/biblio/geom.bib | 22 +++++++++++----------- 2 files changed, 12 insertions(+), 12 deletions(-) diff --git a/Documentation/doc/biblio/cgal_manual.bib b/Documentation/doc/biblio/cgal_manual.bib index b5b872ffd46..2875322d843 100644 --- a/Documentation/doc/biblio/cgal_manual.bib +++ b/Documentation/doc/biblio/cgal_manual.bib @@ -953,7 +953,7 @@ Teillaud" Wieger Wesselink} ,title = {Getting Started with {CGAL}} ,year = 1998 - ,note = {{CGAL} {R}1.0. \url{http://www.cs.ruu.nl/CGAL}.} + ,note = {{CGAL} {R}1.0. \url{http://www.cs.uu.nl/CGAL}.} ,update = "98.01 schoenherr" } diff --git a/Documentation/doc/biblio/geom.bib b/Documentation/doc/biblio/geom.bib index b6602668758..5f43699b487 100644 --- a/Documentation/doc/biblio/geom.bib +++ b/Documentation/doc/biblio/geom.bib @@ -2306,7 +2306,7 @@ cell neighborhood in $O(m)$ time." , booktitle = "Proc. 10th Annu. ACM Sympos. Comput. Geom." , year = 1994 , pages = "76--84" -, url = "ftp://ftp.cs.ruu.nl/pub/RUU/CS/techreps/CS-1994/1994-39.ps.gz" +, url = "ftp://ftp.cs.uu.nl/pub/RUU/CS/techreps/CS-1994/1994-39.ps.gz" , precedes = "ams-cmfal-98" , cites = "a-pal2a-90, aegs-nemfl-92, bds-lric-94, c-talp-69, cegghss-rspug-91, cegss-cfals-93, cf-dvrsi-90, c-csfas-90, cegsw-ccbac-90, cs-arscg-89, e-acg-87, egs-ccmfa-90, ew-mnemf-86, gs-caa-93, hs-parss-93, hw-ensrq-87, m-mdscg-84, m-fppa-90, m-fppa2-91, st-epdg-83, ZZZ" , update = "98.07 mitchell, 98.03 bibrelex, 96.09 agarwal, 96.05 agarwal, 95.09 agarwal, 94.09 jones, 94.01 jones" @@ -2443,7 +2443,7 @@ cell neighborhood in $O(m)$ time." , booktitle = "Proc. 11th Annu. ACM Sympos. Comput. Geom." , year = 1995 , pages = "182--189" -, url = "ftp://ftp.cs.ruu.nl/pub/RUU/CS/techreps/CS-1994/1994-40.ps.gz" +, url = "ftp://ftp.cs.uu.nl/pub/RUU/CS/techreps/CS-1994/1994-40.ps.gz" , keywords = "curved surfaces" , cites = "as-erasg-95, ass-sulbl-89, a-sdcgp-85, bd-olrcu-93, cgppsw-ctct-94, cegs-sessr-89, cs-arscg-89, bds-lric-94, e-acg-87, egs-ueplf-89, es-mnwsn-90, gpw-gtt-93, gpw-bngpi-94, hs-nblet-94, hs-atubs-95, hs-ndssg-86, hrr-araga-91, s-atubl-94, sa-dsstg-95, ZZZ" , update = "98.03 bibrelex, 96.05 agarwal, 95.09 mitchell+schwarzkopf, 95.05 agarwal" @@ -6581,7 +6581,7 @@ cell neighborhood in $O(m)$ time." , booktitle = "Proc. 11th Annu. ACM Sympos. Comput. Geom." , year = 1995 , pages = "89--97" -, url = "http://www.cs.ruu.nl/~otfried/ps/as-vdco-95.ps.gz" +, url = "http://www.cs.uu.nl/~otfried/ps/as-vdco-95.ps.gz" , keywords = "randomized incremental algorithm" , cites = "a-vdsfg-91, bdsty-arsol-92, c-bvdcp-86, cs-arscg-89, k-avdta-88, k-cavd-89, kmm-ricav-93a, kw-vdbgm-88, ls-pptmc-87, mp-fitcp-78, m-fppa1-88, oy-rmpmd-85, obs-stcav-92, ps-cgi-85, s-barga-93, s-dg-69, y-oavds-87, ya-mpce-89, ZZZ" , update = "98.03 bibrelex, 95.09 mitchell+schwarzkopf" @@ -18626,7 +18626,7 @@ If, we are interested in computing a single face in the intersection of two simp , address = "Utrecht, Netherlands" , month = mar , year = 1994 -, url = "ftp://ftp.cs.ruu.nl/pub/RUU/CS/techreps/CS-1994/1994-12.ps.gz" +, url = "ftp://ftp.cs.uu.nl/pub/RUU/CS/techreps/CS-1994/1994-12.ps.gz" , keywords = "vertical decomposition, trapezoidal map, point location" , comments = "Full version of bds-lric-94" , update = "95.01 schwarzkopf+smid, 94.05 schwarzkopf" @@ -18759,7 +18759,7 @@ If, we are interested in computing a single face in the intersection of two simp , publisher = "Springer-Verlag" , year = 1993 , pages = "1--10" -, url = "ftp://ftp.cs.ruu.nl/pub/RUU/CS/techreps/CS-1994/1994-09.ps.gz" +, url = "ftp://ftp.cs.uu.nl/pub/RUU/CS/techreps/CS-1994/1994-09.ps.gz" , precedes = "bghosst-rgdu-95" , update = "98.07 bibrelex, 95.09 devillers, 94.05 devillers+schwarzkopf+sharir+smid, 93.09 milone+mitchell" } @@ -18771,7 +18771,7 @@ If, we are interested in computing a single face in the intersection of two simp , volume = 140 , year = 1995 , pages = "301--317" -, url = "ftp://ftp.cs.ruu.nl/pub/RUU/CS/techreps/CS-1994/1994-09.ps.gz" +, url = "ftp://ftp.cs.uu.nl/pub/RUU/CS/techreps/CS-1994/1994-09.ps.gz" , succeeds = "bghosst-rgdu-93" , update = "97.11 bibrelex, 95.09 devillers+schwarzkopf" } @@ -18904,7 +18904,7 @@ If, we are interested in computing a single face in the intersection of two simp , publisher = "Springer-Verlag" , year = 1993 , pages = "121--132" -, url = "ftp://ftp.cs.ruu.nl/pub/RUU/CS/techreps/CS-1994/1994-02.ps.gz" +, url = "ftp://ftp.cs.uu.nl/pub/RUU/CS/techreps/CS-1994/1994-02.ps.gz" , update = "94.05 schwarzkopf, 94.01 smid, 93.09 milone+mitchell" } @@ -19126,7 +19126,7 @@ $O(n^2)$ in the plane." , booktitle = "Proc. 25th Annu. ACM Sympos. Theory Comput." , year = 1993 , pages = "505--514" -, url = "ftp://ftp.cs.ruu.nl/pub/RUU/CS/techreps/CS-1993/1993-20.ps.gz" +, url = "ftp://ftp.cs.uu.nl/pub/RUU/CS/techreps/CS-1993/1993-20.ps.gz" , keywords = "configuration space, motion planning, convex, robotics" , precedes = "bms-plpco-95" , update = "96.09 agarwal, 95.09 aronov, 94.05 devillers+schwarzkopf, 93.09 milone+mitchell, 93.05 schwarzkopf" @@ -56436,7 +56436,7 @@ between all the vertices of the polygons." , publisher = "Springer-Verlag" , year = 1996 , pages = "191--202" -, url = "http://www.cs.ruu.nl/CGAL/Papers/wacg.ps.gz" +, url = "http://www.cs.uu.nl/CGAL/Papers/wacg.ps.gz" , update = "98.11 bibrelex, 97.03 tamassia" } @@ -114380,7 +114380,7 @@ small) triangulation of a convex polyhedron is NP-complete. Their 3SAT-reduction , month = may , year = 1996 , pages = "53--58" -, url = "http://www.cs.ruu.nl/CGAL/Papers/panel.ps.gz" +, url = "http://www.cs.uu.nl/CGAL/Papers/panel.ps.gz" , update = "00.03 vismara, 99.11 bibrelex, 98.11 bibrelex, 97.11 held" } @@ -120199,7 +120199,7 @@ Contains C code." , institution = "Utrecht university" , address = "Utrecht, Netherlands" , year = 1994 -, url = "ftp://ftp.cs.ruu.nl/pub/RUU/CS/techreps/CS-1994/1994-49.ps.gz" +, url = "ftp://ftp.cs.uu.nl/pub/RUU/CS/techreps/CS-1994/1994-49.ps.gz" , update = "98.03 bibrelex" } From a472c24185370928a13e1499b2d5a7cc33998825 Mon Sep 17 00:00:00 2001 From: Andreas Fabri Date: Wed, 20 Mar 2019 08:59:22 +0100 Subject: [PATCH 11/65] http:/www.boost.org -> https://www.bost.org --- .../CGAL/Arr_circular_line_arc_traits_2.h | 2 +- BGL/doc/BGL/graph_traits.txt | 4 ++-- BGL/include/CGAL/boost/graph/dijkstra_shortest_paths.hpp | 2 +- BGL/include/CGAL/boost/graph/named_function_params.h | 2 +- BGL/include/CGAL/boost/graph/named_params_helper.h | 2 +- CGAL_ipelets/doc/CGAL_ipelets/CGAL/CGAL_Ipelet_base.h | 4 ++-- Circulator/doc/Circulator/Concepts/ConstRange.h | 2 +- Circulator/doc/Circulator/Concepts/Range.h | 2 +- Classification/doc/Classification/Classification.txt | 4 ++-- Classification/doc/Classification/PackageDescription.txt | 4 ++-- Cone_spanners_2/include/CGAL/Construct_theta_graph_2.h | 2 +- Cone_spanners_2/include/CGAL/Construct_yao_graph_2.h | 2 +- .../doc/Documentation/Developer_manual/Chapter_checks.txt | 2 +- .../Documentation/Developer_manual/Chapter_code_format.txt | 2 +- Documentation/doc/Documentation/Installation.txt | 2 +- Installation/include/CGAL/auto_link/auto_link.h | 4 ++-- Kernel_23/doc/Kernel_23/CGAL/intersections.h | 6 +++--- Kernel_d/doc/Kernel_d/CGAL/intersections_d.h | 4 ++-- Mesh_2/include/CGAL/internal/container_fwd_fixed.hpp | 2 +- .../include/CGAL/edge_aware_upsample_point_set.h | 2 +- Point_set_processing_3/include/CGAL/structure_point_set.h | 2 +- Property_map/doc/Property_map/Property_map.txt | 2 +- STL_Extension/doc/STL_Extension/CGAL/result_of.h | 2 +- STL_Extension/doc/STL_Extension/Concepts/Hashable.h | 4 ++-- .../include/CGAL/internal/boost/array_binary_tree.hpp | 2 +- .../include/CGAL/internal/boost/function_property_map.hpp | 2 +- STL_Extension/include/CGAL/internal/boost/mutable_heap.hpp | 2 +- STL_Extension/include/CGAL/internal/boost/mutable_queue.hpp | 2 +- STL_Extension/include/CGAL/is_streamable.h | 2 +- STL_Extension/include/CGAL/result_of.h | 2 +- STL_Extension/include/CGAL/tags.h | 2 +- .../doc/Spatial_searching/Spatial_searching.txt | 2 +- Spatial_sorting/doc/Spatial_sorting/Spatial_sorting.txt | 2 +- .../doc/Surface_mesh_approximation/NamedParameters.txt | 2 +- .../Surface_mesh_simplification.txt | 2 +- Triangulation_2/doc/Triangulation_2/Triangulation_2.txt | 4 ++-- Triangulation_2/include/CGAL/Trivial_iterator.h | 2 +- Triangulation_3/doc/Triangulation_3/Triangulation_3.txt | 4 ++-- 38 files changed, 49 insertions(+), 49 deletions(-) diff --git a/Arrangement_on_surface_2/doc/Arrangement_on_surface_2/CGAL/Arr_circular_line_arc_traits_2.h b/Arrangement_on_surface_2/doc/Arrangement_on_surface_2/CGAL/Arr_circular_line_arc_traits_2.h index 6230d15e4c7..08c5e3efae8 100644 --- a/Arrangement_on_surface_2/doc/Arrangement_on_surface_2/CGAL/Arr_circular_line_arc_traits_2.h +++ b/Arrangement_on_surface_2/doc/Arrangement_on_surface_2/CGAL/Arr_circular_line_arc_traits_2.h @@ -10,7 +10,7 @@ of both types `CGAL::Line_arc_2` or `CGAL::Circular_arc_2`. -It uses the boost::variant. +It uses the boost::variant. \cgalModels `ArrangementTraits_2` diff --git a/BGL/doc/BGL/graph_traits.txt b/BGL/doc/BGL/graph_traits.txt index bbc9deabdd9..b16313ed534 100644 --- a/BGL/doc/BGL/graph_traits.txt +++ b/BGL/doc/BGL/graph_traits.txt @@ -4,7 +4,7 @@ \ingroup PkgBGLRef The \sc{Bgl} defines the class template -`boost::graph_traits` +`boost::graph_traits` as a uniform interface to the properties and types of %graph types. We provide specializations of this class template for several \cgal data structures. @@ -162,7 +162,7 @@ with the default property map of \sc{Bgl} algorithms (obtained with `get(t, boost::edge_weight)`) is the length of the edge, the edge weight is not well defined for infinite edges. For algorithms that make use of the edge weight, the user must therefore -define a `boost::filtered_graph` or pass a property map to the +define a `boost::filtered_graph` or pass a property map to the algorithm that returns "infinity" for infinite edges. | Member | Value | Description | diff --git a/BGL/include/CGAL/boost/graph/dijkstra_shortest_paths.hpp b/BGL/include/CGAL/boost/graph/dijkstra_shortest_paths.hpp index 0ae2eef517d..90a72cd0c00 100644 --- a/BGL/include/CGAL/boost/graph/dijkstra_shortest_paths.hpp +++ b/BGL/include/CGAL/boost/graph/dijkstra_shortest_paths.hpp @@ -10,7 +10,7 @@ // // Distributed under the Boost Software License, Version 1.0. (See // accompanying file LICENSE_1_0.txt or copy at -// http://www.boost.org/LICENSE_1_0.txt) +// https://www.boost.org/LICENSE_1_0.txt) //======================================================================= // // $URL$ diff --git a/BGL/include/CGAL/boost/graph/named_function_params.h b/BGL/include/CGAL/boost/graph/named_function_params.h index 205269a856d..9ec2365d134 100644 --- a/BGL/include/CGAL/boost/graph/named_function_params.h +++ b/BGL/include/CGAL/boost/graph/named_function_params.h @@ -6,7 +6,7 @@ // // Distributed under the Boost Software License, Version 1.0. (See // accompanying file LICENSE_1_0.txt or copy at -// http://www.boost.org/LICENSE_1_0.txt) +// https://www.boost.org/LICENSE_1_0.txt) //======================================================================= // Copyright (c) 2007 GeometryFactory (France). All rights reserved. // diff --git a/BGL/include/CGAL/boost/graph/named_params_helper.h b/BGL/include/CGAL/boost/graph/named_params_helper.h index e585269eba0..90e8bdc08cd 100644 --- a/BGL/include/CGAL/boost/graph/named_params_helper.h +++ b/BGL/include/CGAL/boost/graph/named_params_helper.h @@ -6,7 +6,7 @@ // // Distributed under the Boost Software License, Version 1.0. (See // accompanying file LICENSE_1_0.txt or copy at -// http://www.boost.org/LICENSE_1_0.txt) +// https://www.boost.org/LICENSE_1_0.txt) //======================================================================= // Copyright (c) 2007-2015 GeometryFactory (France). All rights reserved. // diff --git a/CGAL_ipelets/doc/CGAL_ipelets/CGAL/CGAL_Ipelet_base.h b/CGAL_ipelets/doc/CGAL_ipelets/CGAL/CGAL_Ipelet_base.h index 5152f1a50a2..bc587a1bf3a 100644 --- a/CGAL_ipelets/doc/CGAL_ipelets/CGAL/CGAL_Ipelet_base.h +++ b/CGAL_ipelets/doc/CGAL_ipelets/CGAL/CGAL_Ipelet_base.h @@ -198,7 +198,7 @@ The returned output iterator will accept assignments from objects of types `Polygon_2` or `Segment_2` or `Point_2`, it decomposes them in objects of type `Point_2` and assigns them to `it`. For more details on the returned output iterator refer to the Boost library -documentation. +documentation. */ template @@ -211,7 +211,7 @@ The returned output iterator will accept assignments from objects of types `Polygon_2` or `Segment_2`, it decomposes them in objects of type `Segment_2` and assigns them to `it`. For more details on the returned output iterator refer to the Boost library -documentation. +documentation. */ template diff --git a/Circulator/doc/Circulator/Concepts/ConstRange.h b/Circulator/doc/Circulator/Concepts/ConstRange.h index 661c257aa3d..e25c0ad2912 100644 --- a/Circulator/doc/Circulator/Concepts/ConstRange.h +++ b/Circulator/doc/Circulator/Concepts/ConstRange.h @@ -8,7 +8,7 @@ A constant iterator range. Refer to the `Range` concept for more details. \cgalRefines Boost's Range concept \cgalHasModel STL containers -\cgalHasModel `boost::iterator_range` +\cgalHasModel `boost::iterator_range` \sa `Range` diff --git a/Circulator/doc/Circulator/Concepts/Range.h b/Circulator/doc/Circulator/Concepts/Range.h index 7b60925b9cb..7e4ac32aa9f 100644 --- a/Circulator/doc/Circulator/Concepts/Range.h +++ b/Circulator/doc/Circulator/Concepts/Range.h @@ -22,7 +22,7 @@ documentation of any model of these concepts. For example, in the case of a vect and its value type is `Point`. Boost also offers the -Boost.Range library +Boost.Range library which provides good support for ranges. Finally, let us note that ranges, in general (especially in template context) diff --git a/Classification/doc/Classification/Classification.txt b/Classification/doc/Classification/Classification.txt index 6e7ed342f7d..fdb296567dc 100644 --- a/Classification/doc/Classification/Classification.txt +++ b/Classification/doc/Classification/Classification.txt @@ -9,8 +9,8 @@ namespace CGAL { This component implements the algorithm described in \cgalCite{cgal:lm-clscm-12} (section 2), generalized to handle different types of data, multiple features and multiple labels. It classifies a data set into a user-defined set of labels, such as _ground_, _vegetation_ and _buildings_. A flexible API is provided so that users can classify any type of data which they can index and for which they can compute relevant features, compute their own local features on the input data set and define their own labels. \note This component requires C++11 and depends on the Boost libraries -[Serialization](http://www.boost.org/libs/serialization) and -[IO Streams](http://www.boost.org/libs/iostreams) (compiled with the GZIP dependency). +[Serialization](https://www.boost.org/libs/serialization) and +[IO Streams](https://www.boost.org/libs/iostreams) (compiled with the GZIP dependency). \section Classification_Organization Package Organization diff --git a/Classification/doc/Classification/PackageDescription.txt b/Classification/doc/Classification/PackageDescription.txt index d82ffd8b503..3d78a28993a 100644 --- a/Classification/doc/Classification/PackageDescription.txt +++ b/Classification/doc/Classification/PackageDescription.txt @@ -77,8 +77,8 @@ Data structures specialized to classify clusters. \cgalPkgShortInfoBegin \cgalPkgSince{4.12} -\cgalPkgDependsOn{\ref PkgSolverInterface, \ref PkgSpatialSearchingD, [Boost Serialization](http://www.boost.org/libs/serialization) and -[Boost IO Streams](http://www.boost.org/libs/iostreams)} +\cgalPkgDependsOn{\ref PkgSolverInterface, \ref PkgSpatialSearchingD, [Boost Serialization](https://www.boost.org/libs/serialization) and +[Boost IO Streams](https://www.boost.org/libs/iostreams)} \cgalPkgBib{cgal:lm-clscm-12} \cgalPkgLicense{\ref licensesGPL "GPL"} \cgalPkgDemo{Operations on Polyhedra,polyhedron_3.zip} diff --git a/Cone_spanners_2/include/CGAL/Construct_theta_graph_2.h b/Cone_spanners_2/include/CGAL/Construct_theta_graph_2.h index 8bca1174f6a..fa220690234 100644 --- a/Cone_spanners_2/include/CGAL/Construct_theta_graph_2.h +++ b/Cone_spanners_2/include/CGAL/Construct_theta_graph_2.h @@ -54,7 +54,7 @@ namespace CGAL { or `CGAL::Exact_predicates_inexact_constructions_kernel`. \tparam Graph_ The graph type to store the constructed cone based spanner. - It must be `boost::adjacency_list` + It must be `boost::adjacency_list` with `Traits_::Point_2` as `VertexProperties`. */ template diff --git a/Cone_spanners_2/include/CGAL/Construct_yao_graph_2.h b/Cone_spanners_2/include/CGAL/Construct_yao_graph_2.h index 8efbc4d921a..60e3e93d66f 100644 --- a/Cone_spanners_2/include/CGAL/Construct_yao_graph_2.h +++ b/Cone_spanners_2/include/CGAL/Construct_yao_graph_2.h @@ -51,7 +51,7 @@ namespace CGAL { or `CGAL::Exact_predicates_inexact_constructions_kernel`. \tparam Graph_ The graph type to store the constructed cone based spanner. - It must be `boost::adjacency_list` + It must be `boost::adjacency_list` with `Traits_::Point_2` as `VertexProperties` */ template diff --git a/Documentation/doc/Documentation/Developer_manual/Chapter_checks.txt b/Documentation/doc/Documentation/Developer_manual/Chapter_checks.txt index 882f2208078..8186f1bbce9 100644 --- a/Documentation/doc/Documentation/Developer_manual/Chapter_checks.txt +++ b/Documentation/doc/Documentation/Developer_manual/Chapter_checks.txt @@ -240,7 +240,7 @@ target exception safety, as much as possible. Good references on exception safety are: Appendix E of \cgalCite{cgal:s-cpl-97} (also available at http://www.research.att.com/~bs/3rd_safe0.html), and \cgalCite{cgal:a-esgc-98} (also available at -http://www.boost.org/more/generic_exception_safety.html). +https://www.boost.org/more/generic_exception_safety.html). Any destructor which might throw an exception, including a destructor which uses the `CGAL_destructor_assertion` macro, should be marked with the `CGAL_NOEXCEPT(false)` macro. This macro provides future compatibility with diff --git a/Documentation/doc/Documentation/Developer_manual/Chapter_code_format.txt b/Documentation/doc/Documentation/Developer_manual/Chapter_code_format.txt index fab0b433239..8a8cc26b9ef 100644 --- a/Documentation/doc/Documentation/Developer_manual/Chapter_code_format.txt +++ b/Documentation/doc/Documentation/Developer_manual/Chapter_code_format.txt @@ -259,7 +259,7 @@ The first list of items are meant as rules, i.e., you should follow them. #endif // CGAL_THIS_IS_AN_EXAMPLE_H \endcode - Support the - result_of + result_of protocol whenever your functors have more than one return type otherwise provide a `result_type` member typedef. An example for this is a C++03 style `identity` functor: diff --git a/Documentation/doc/Documentation/Installation.txt b/Documentation/doc/Documentation/Installation.txt index ee55aa8dfd5..e14a78cb091 100644 --- a/Documentation/doc/Documentation/Installation.txt +++ b/Documentation/doc/Documentation/Installation.txt @@ -616,7 +616,7 @@ and designed to partition graphs and produce fill-reducing matrix orderings. \cgal offers wrappers around some of the methods of the \sc{METIS} library to allow the partitioning of graphs that are models of the concepts of the -Boost Graph Library, +Boost Graph Library, and, by extension, of surface meshes (see Section \ref BGLPartitioning of the package \ref PkgBGL). More information is available on the METIS library diff --git a/Installation/include/CGAL/auto_link/auto_link.h b/Installation/include/CGAL/auto_link/auto_link.h index 720c6692ed7..fdb428ec014 100644 --- a/Installation/include/CGAL/auto_link/auto_link.h +++ b/Installation/include/CGAL/auto_link/auto_link.h @@ -9,14 +9,14 @@ // (C) Copyright John Maddock 2003. // Use, modification and distribution are subject to the // Boost Software License, Version 1.0. (See accompanying file -// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) +// LICENSE_1_0.txt or copy at https://www.boost.org/LICENSE_1_0.txt) // // $URL$ // $Id$ // SPDX-License-Identifier: BSL-1.0 // /* - * LOCATION: see http://www.boost.org for most recent version. + * LOCATION: see https://www.boost.org for most recent version. * FILE auto_link.hpp * VERSION see * DESCRIPTION: Automatic library inclusion for Borland/Microsoft compilers. diff --git a/Kernel_23/doc/Kernel_23/CGAL/intersections.h b/Kernel_23/doc/Kernel_23/CGAL/intersections.h index 0678d09d11c..971d6bf1ce4 100644 --- a/Kernel_23/doc/Kernel_23/CGAL/intersections.h +++ b/Kernel_23/doc/Kernel_23/CGAL/intersections.h @@ -337,11 +337,11 @@ The result type can be obtained with `CGAL::cpp11::result_of`. It looks simpler if you use a C++ compiler which supports `auto`, but you must anyways know that the result type is a `boost::optional >`, in order to unpack the point or segment. -`boost::optional` comes in -as there might be no intersection. `boost::variant` comes in +`boost::optional` comes in +as there might be no intersection. `boost::variant` comes in as, if there is an intersection, it is either a point or a segment. -As explained in the boost manual pages for `boost::variant`, there are two ways to access the variants. The first examples uses `boost::get`. +As explained in the boost manual pages for `boost::variant`, there are two ways to access the variants. The first examples uses `boost::get`. \cgalExample{Kernel_23/intersection_get.cpp} diff --git a/Kernel_d/doc/Kernel_d/CGAL/intersections_d.h b/Kernel_d/doc/Kernel_d/CGAL/intersections_d.h index ff81e25cf21..62a74161040 100644 --- a/Kernel_d/doc/Kernel_d/CGAL/intersections_d.h +++ b/Kernel_d/doc/Kernel_d/CGAL/intersections_d.h @@ -159,8 +159,8 @@ void foo(Segment_d seg, Line_d lin) \sa `do_intersect` \sa `Kernel_d::Intersect_d` \sa CGAL_INTERSECTION_VERSION -\sa `boost::optional` -\sa `boost::variant` +\sa `boost::optional` +\sa `boost::variant` \sa `cpp11::result_of` */ diff --git a/Mesh_2/include/CGAL/internal/container_fwd_fixed.hpp b/Mesh_2/include/CGAL/internal/container_fwd_fixed.hpp index 7deb8f218bf..f35182f245d 100644 --- a/Mesh_2/include/CGAL/internal/container_fwd_fixed.hpp +++ b/Mesh_2/include/CGAL/internal/container_fwd_fixed.hpp @@ -5,7 +5,7 @@ // Copyright 2005-2008 Daniel James. // Distributed under the Boost Software License, Version 1.0. (See accompanying -// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) +// file LICENSE_1_0.txt or copy at https://www.boost.org/LICENSE_1_0.txt) // // $URL$ // $Id$ diff --git a/Point_set_processing_3/include/CGAL/edge_aware_upsample_point_set.h b/Point_set_processing_3/include/CGAL/edge_aware_upsample_point_set.h index 13874b85ef2..b66026ac2ea 100644 --- a/Point_set_processing_3/include/CGAL/edge_aware_upsample_point_set.h +++ b/Point_set_processing_3/include/CGAL/edge_aware_upsample_point_set.h @@ -297,7 +297,7 @@ update_new_point( The type of the objects put in it is `std::pair`. Note that the user may use a - function_output_iterator + function_output_iterator to match specific needs. \param points input point range. diff --git a/Point_set_processing_3/include/CGAL/structure_point_set.h b/Point_set_processing_3/include/CGAL/structure_point_set.h index 9f23fb9ba7c..cc83bdc5409 100644 --- a/Point_set_processing_3/include/CGAL/structure_point_set.h +++ b/Point_set_processing_3/include/CGAL/structure_point_set.h @@ -1516,7 +1516,7 @@ private: \tparam OutputIterator Type of the output iterator. The type of the objects put in it is `std::pair`. Note that the user may use a - function_output_iterator + function_output_iterator to match specific needs. \param points input point range. diff --git a/Property_map/doc/Property_map/Property_map.txt b/Property_map/doc/Property_map/Property_map.txt index 57803fd1965..e29a999cf10 100644 --- a/Property_map/doc/Property_map/Property_map.txt +++ b/Property_map/doc/Property_map/Property_map.txt @@ -19,7 +19,7 @@ The data themselves may be stored in the element, or they may be stored in an external data structure, or they may be computed on the fly. This is an "implementation detail" of the particular property map.
-Property maps in the Boost manuals: http://www.boost.org/libs/property_map/doc/property_map.html +Property maps in the Boost manuals: https://www.boost.org/libs/property_map/doc/property_map.html \section Property_mapCGAL CGAL and Boost Property Maps diff --git a/STL_Extension/doc/STL_Extension/CGAL/result_of.h b/STL_Extension/doc/STL_Extension/CGAL/result_of.h index 1276da97597..d1c77c000d0 100644 --- a/STL_Extension/doc/STL_Extension/CGAL/result_of.h +++ b/STL_Extension/doc/STL_Extension/CGAL/result_of.h @@ -7,7 +7,7 @@ namespace cpp11 { When all compilers supported by %CGAL will have a Standard compliant implemention of the the \cpp11 `decltype` feature, it will become an alias to std::result_of. - \sa boost::result_of + \sa boost::result_of */ template struct result_of{ diff --git a/STL_Extension/doc/STL_Extension/Concepts/Hashable.h b/STL_Extension/doc/STL_Extension/Concepts/Hashable.h index eb8c8e47c40..2cc0858d048 100644 --- a/STL_Extension/doc/STL_Extension/Concepts/Hashable.h +++ b/STL_Extension/doc/STL_Extension/Concepts/Hashable.h @@ -14,8 +14,8 @@ They can be disables by defining the macro `CGAL_DISABLE_HASH_OPENMESH`. \sa `CGAL::Unique_hash_map` \sa `std::unordered_set` \sa `std::unordered_map` -\sa `boost::unordered_set` -\sa `boost::unordered_map` +\sa `boost::unordered_set` +\sa `boost::unordered_map` */ diff --git a/STL_Extension/include/CGAL/internal/boost/array_binary_tree.hpp b/STL_Extension/include/CGAL/internal/boost/array_binary_tree.hpp index d016db28b46..3317ec72d74 100644 --- a/STL_Extension/include/CGAL/internal/boost/array_binary_tree.hpp +++ b/STL_Extension/include/CGAL/internal/boost/array_binary_tree.hpp @@ -5,7 +5,7 @@ // // Distributed under the Boost Software License, Version 1.0. (See // accompanying file LICENSE_1_0.txt or copy at -// http://www.boost.org/LICENSE_1_0.txt) +// https://www.boost.org/LICENSE_1_0.txt) //======================================================================= // // $URL$ diff --git a/STL_Extension/include/CGAL/internal/boost/function_property_map.hpp b/STL_Extension/include/CGAL/internal/boost/function_property_map.hpp index f4b08dd8584..765c0bfd7ae 100644 --- a/STL_Extension/include/CGAL/internal/boost/function_property_map.hpp +++ b/STL_Extension/include/CGAL/internal/boost/function_property_map.hpp @@ -6,7 +6,7 @@ // // Distributed under the Boost Software License, Version 1.0. (See // accompanying file LICENSE_1_0.txt or copy at -// http://www.boost.org/LICENSE_1_0.txt) +// https://www.boost.org/LICENSE_1_0.txt) //======================================================================= // // $URL$ diff --git a/STL_Extension/include/CGAL/internal/boost/mutable_heap.hpp b/STL_Extension/include/CGAL/internal/boost/mutable_heap.hpp index 81a7a3ccf6b..ffa640207e1 100644 --- a/STL_Extension/include/CGAL/internal/boost/mutable_heap.hpp +++ b/STL_Extension/include/CGAL/internal/boost/mutable_heap.hpp @@ -5,7 +5,7 @@ // // Distributed under the Boost Software License, Version 1.0. (See // accompanying file LICENSE_1_0.txt or copy at -// http://www.boost.org/LICENSE_1_0.txt) +// https://www.boost.org/LICENSE_1_0.txt) //======================================================================= // // $URL$ diff --git a/STL_Extension/include/CGAL/internal/boost/mutable_queue.hpp b/STL_Extension/include/CGAL/internal/boost/mutable_queue.hpp index c4629659852..fed5efe2c31 100644 --- a/STL_Extension/include/CGAL/internal/boost/mutable_queue.hpp +++ b/STL_Extension/include/CGAL/internal/boost/mutable_queue.hpp @@ -5,7 +5,7 @@ // // Distributed under the Boost Software License, Version 1.0. (See // accompanying file LICENSE_1_0.txt or copy at -// http://www.boost.org/LICENSE_1_0.txt) +// https://www.boost.org/LICENSE_1_0.txt) //======================================================================= // // $URL$ diff --git a/STL_Extension/include/CGAL/is_streamable.h b/STL_Extension/include/CGAL/is_streamable.h index 7f19e80e7f7..b19ff487c4e 100644 --- a/STL_Extension/include/CGAL/is_streamable.h +++ b/STL_Extension/include/CGAL/is_streamable.h @@ -2,7 +2,7 @@ // All rights reserved. // // Distributed under the Boost Software License, Version 1.0. (See accompanying -// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) +// file LICENSE_1_0.txt or copy at https://www.boost.org/LICENSE_1_0.txt) // // Licensees holding a valid commercial license may use this file in // accordance with the commercial license agreement provided with the software. diff --git a/STL_Extension/include/CGAL/result_of.h b/STL_Extension/include/CGAL/result_of.h index 5d9382d5c4d..52f25c0f9e7 100644 --- a/STL_Extension/include/CGAL/result_of.h +++ b/STL_Extension/include/CGAL/result_of.h @@ -53,7 +53,7 @@ namespace cpp11{ template struct result_of { - // from boost 1.44 release note http://www.boost.org/users/history/version_1_44_0.html : + // from boost 1.44 release note https://www.boost.org/users/history/version_1_44_0.html : // New template boost::tr1_result_of that implements the TR1 ResultOf protocol even if boost::result_of uses the C++0x decltype-based implementation. #if BOOST_VERSION < 104400 typedef typename boost::result_of::type type; diff --git a/STL_Extension/include/CGAL/tags.h b/STL_Extension/include/CGAL/tags.h index 0000514404e..28dde6626ad 100644 --- a/STL_Extension/include/CGAL/tags.h +++ b/STL_Extension/include/CGAL/tags.h @@ -35,7 +35,7 @@ namespace CGAL { struct Void {}; // Boolean_tag is a model of the Boost Integral Constant concept. -// http://www.boost.org/libs/mpl/doc/refmanual/integral-constant.html +// https://www.boost.org/libs/mpl/doc/refmanual/integral-constant.html template struct Boolean_tag { typedef boost::mpl::integral_c_tag tag; diff --git a/Spatial_searching/doc/Spatial_searching/Spatial_searching.txt b/Spatial_searching/doc/Spatial_searching/Spatial_searching.txt index 24a45166d30..41854e29a79 100644 --- a/Spatial_searching/doc/Spatial_searching/Spatial_searching.txt +++ b/Spatial_searching/doc/Spatial_searching/Spatial_searching.txt @@ -352,7 +352,7 @@ wrapper for all our defined types. The searching itself works exactly as for \cg The following four example programs illustrate how to use the classes `Search_traits_adapter` and `Distance_adapter` to store in the kd-tree objects of an arbitrary key type. Points are -accessed through a point property map. +accessed through a point property map. This enables to associate information to a point or to reduce the size of the search structure. \subsubsection Spatial_searchingUsingaPointandanInteger Using a Point and an Integer as Key Type diff --git a/Spatial_sorting/doc/Spatial_sorting/Spatial_sorting.txt b/Spatial_sorting/doc/Spatial_sorting/Spatial_sorting.txt index 048b7559de5..e726f56299d 100644 --- a/Spatial_sorting/doc/Spatial_sorting/Spatial_sorting.txt +++ b/Spatial_sorting/doc/Spatial_sorting/Spatial_sorting.txt @@ -184,7 +184,7 @@ a sequence of tuples containing a point, or a sequence of indices in a vector of points, you need another level of indirection. We provide the spatial sorting traits class adapters which are templated by another spatial sorting traits class, and a -property map. +property map. which allows to obtain a point from whatever you want to sort. The following examples illustrate the usage of these traits class adapters. diff --git a/Surface_mesh_approximation/doc/Surface_mesh_approximation/NamedParameters.txt b/Surface_mesh_approximation/doc/Surface_mesh_approximation/NamedParameters.txt index bb5dbbe22ca..f2205181f2b 100644 --- a/Surface_mesh_approximation/doc/Surface_mesh_approximation/NamedParameters.txt +++ b/Surface_mesh_approximation/doc/Surface_mesh_approximation/NamedParameters.txt @@ -5,7 +5,7 @@ \cgalHeading{How to use BGL Optional Named Parameters} The notion of named parameters was introduced in the BGL. -Details can be found from: http://www.boost.org/libs/graph/doc/bgl_named_params.html. +Details can be found from: https://www.boost.org/libs/graph/doc/bgl_named_params.html. Named parameters enable the user to specify only those parameters which are really needed, by name, making the parameter ordering not required. See also \ref bgl_namedparameters. diff --git a/Surface_mesh_simplification/doc/Surface_mesh_simplification/Surface_mesh_simplification.txt b/Surface_mesh_simplification/doc/Surface_mesh_simplification/Surface_mesh_simplification.txt index 4402035f5fd..9d34af2ad49 100644 --- a/Surface_mesh_simplification/doc/Surface_mesh_simplification/Surface_mesh_simplification.txt +++ b/Surface_mesh_simplification/doc/Surface_mesh_simplification/Surface_mesh_simplification.txt @@ -214,7 +214,7 @@ returns `true` the algorithm terminates. \subsection Surface_mesh_simplificationOptionalNamed Optional Named Parameters -The notion of named parameters was also introduced in the Bgl. You can read about it in \cgalCite{cgal:sll-bgl-02} or the following site: http://www.boost.org/libs/graph/doc/bgl_named_params.html. Named parameters allow the user to specify only those parameters which are really needed, by name, making the parameter ordering unimportant. +The notion of named parameters was also introduced in the Bgl. You can read about it in \cgalCite{cgal:sll-bgl-02} or the following site: https://www.boost.org/libs/graph/doc/bgl_named_params.html. Named parameters allow the user to specify only those parameters which are really needed, by name, making the parameter ordering unimportant. Say there is a function `f()` that takes 3 parameters called `name`, `age` and `gender`, and you have variables `n,a and g` to pass as parameters to that function. Without named parameters, you would call it like this: `f(n,a,g)`, but with named parameters, you call it like this: `f(name(n).age(a).gender(g))`. diff --git a/Triangulation_2/doc/Triangulation_2/Triangulation_2.txt b/Triangulation_2/doc/Triangulation_2/Triangulation_2.txt index e9bcdeccf88..b6c1dfa5eea 100644 --- a/Triangulation_2/doc/Triangulation_2/Triangulation_2.txt +++ b/Triangulation_2/doc/Triangulation_2/Triangulation_2.txt @@ -1294,14 +1294,14 @@ the `insert` function of the triangulation with a range of such pairs. \subsection Triangulation_2UsingtheBoostZipIterator Using the Boost Zip Iterator Information and points are in separate containers. We use -`boost::zip_iterator` to provide an iterator gathering them. +`boost::zip_iterator` to provide an iterator gathering them. \cgalExample{Triangulation_2/info_insert_with_zip_iterator_2.cpp} \subsection Triangulation_2UsingtheBoostTransformIterator Using the Boost Transform Iterator We define a functor `Auto_count` used together with -`boost::transform_iterator` to set the order of each point +`boost::transform_iterator` to set the order of each point in the range. Note that this is correct because the iterator is dereferenced only once per point during the insertion. \cgalExample{Triangulation_2/info_insert_with_transform_iterator_2.cpp} diff --git a/Triangulation_2/include/CGAL/Trivial_iterator.h b/Triangulation_2/include/CGAL/Trivial_iterator.h index 923f1e6ab9a..a079e8a55ef 100644 --- a/Triangulation_2/include/CGAL/Trivial_iterator.h +++ b/Triangulation_2/include/CGAL/Trivial_iterator.h @@ -33,7 +33,7 @@ namespace CGAL { // TODO : // - comparison operators should be global, but it causes problems... // - Have a look at Boost's concept_checking and archetypes : -// http://www.boost.org/libs/concept_check/concept_check.htm +// https://www.boost.org/libs/concept_check/concept_check.htm class Trivial_iterator_tag{}; diff --git a/Triangulation_3/doc/Triangulation_3/Triangulation_3.txt b/Triangulation_3/doc/Triangulation_3/Triangulation_3.txt index d3c7825fbcb..51a12ffb135 100644 --- a/Triangulation_3/doc/Triangulation_3/Triangulation_3.txt +++ b/Triangulation_3/doc/Triangulation_3/Triangulation_3.txt @@ -474,14 +474,14 @@ with a range of such pairs. \subsubsection Triangulation_3UsingtheBoostZipIterator Using the Boost Zip Iterator Information and points are in separate containers. We use -`boost::zip_iterator` to provide an iterator gathering them. +`boost::zip_iterator` to provide an iterator gathering them. \cgalExample{Triangulation_3/info_insert_with_zip_iterator.cpp} \subsubsection Triangulation_3UsingtheBoostTransformIterator Using the Boost Transform Iterator We define a functor `Auto_count` used together with -`boost::transform_iterator` to set the order of each point +`boost::transform_iterator` to set the order of each point in the range. Note that this is correct because the iterator is dereferenced only once per point during the insertion. \cgalExample{Triangulation_3/info_insert_with_transform_iterator.cpp} From e9310c2597fca9e1e839023b4c7bb32aac259804 Mon Sep 17 00:00:00 2001 From: Maxime Gimeno Date: Wed, 20 Mar 2019 11:21:30 +0100 Subject: [PATCH 12/65] Fix encoding in python script --- Testsuite/test/parse-ctest-dashboard-xml.py | 10 ++++------ 1 file changed, 4 insertions(+), 6 deletions(-) diff --git a/Testsuite/test/parse-ctest-dashboard-xml.py b/Testsuite/test/parse-ctest-dashboard-xml.py index 5e4354345de..827aabadeed 100644 --- a/Testsuite/test/parse-ctest-dashboard-xml.py +++ b/Testsuite/test/parse-ctest-dashboard-xml.py @@ -16,7 +16,7 @@ test_report_filename='{dir}/TestReport_{tester}_{platform}' xml = open("Test.xml", 'rb').read() -def open_file_create_dir(filename, mode, *args, **kwargs): +def open_file_create_dir(filename, mode_, *args, **kwargs): if not os.path.exists(os.path.dirname(filename)): try: os.makedirs(os.path.dirname(filename)) @@ -24,9 +24,9 @@ def open_file_create_dir(filename, mode, *args, **kwargs): if exc.errno != errno.EEXIST: raise if kwargs.get('gzip', None) == True: - return gzip.open(filename, mode) + return gzip.open(filename, mode=mode_, encoding="utf-8") else: - return open(filename, mode) + return io.open(filename, mode=mode_, encoding="utf-8") root=ET.fromstring(xml) testing = root.find('Testing') @@ -85,7 +85,6 @@ with open_file_create_dir(result_file_name.format(dir=os.getcwd(), print("{label} {result}".format(label=label, result=result_for_label), file=results) - for label, tests in tests_per_label.items(): with open_file_create_dir(test_report_filename.format(dir=label, tester=tester_name, @@ -94,13 +93,12 @@ for label, tests in tests_per_label.items(): ------------------------------------------------------------------ - Error output from platform {platform} ------------------------------------------------------------------ - {error_txt} """ .format(platform=platform_name, error_txt=open("{}/error.txt".format(label), 'r').read()), file=label_report) for t in tests: filename="{}/ProgramOutput.{}".format(label, t['Name']) - with open(filename, 'r') as f: + with io.open(filename, mode="r", encoding="utf-8") as f: print(""" ------------------------------------------------------------------ - {file} From a9c3f9bc6ce7b2f4b80170dc36db8f8891121d5c Mon Sep 17 00:00:00 2001 From: Andreas Fabri Date: Wed, 20 Mar 2019 11:34:21 +0100 Subject: [PATCH 13/65] BGL: Seam_mesh::add_seams() requires .selection.txt --- BGL/include/CGAL/boost/graph/Seam_mesh.h | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/BGL/include/CGAL/boost/graph/Seam_mesh.h b/BGL/include/CGAL/boost/graph/Seam_mesh.h index 8df36e3ff4c..e1ccd0a2ed3 100644 --- a/BGL/include/CGAL/boost/graph/Seam_mesh.h +++ b/BGL/include/CGAL/boost/graph/Seam_mesh.h @@ -1065,8 +1065,8 @@ public: /// \tparam VdContainer must be a model of SequenceContainer (that is, provide /// the functions: `operator[]` and `at()`). /// - /// \pre filename should be the name of a CGAL selection file: edges are - /// described by pairs of integers, on the third line of the file. + /// \pre filename should be the name of a \cgal selection file with the file extension "*.selection.txt": + /// edges are described by pairs of integers, on the third line of the file. template TM_halfedge_descriptor add_seams(const char* filename, const VdContainer& tm_vds) @@ -1075,7 +1075,7 @@ public: // Check the file type std::string str = filename; - if(str.substr(str.length() - 14) != ".selection.txt") { + if( (str.length()) < 14 || (str.substr(str.length() - 14) != ".selection.txt") ) { std::cerr << "Error: seams must be given by a *.selection.txt file" << std::endl; return tmhd; } @@ -1107,8 +1107,8 @@ public: /// /// \returns one of the halfedges of the seam mesh that is on a seam. /// - /// \pre filename should be the name of a CGAL selection file: edges are - /// described by pairs of integers, on the third line of the file. + /// \pre filename should be the name of a CGAL selection filee with the file extension "*.selection.txt": + /// edges are described by pairs of integers, on the third line of the file. TM_halfedge_descriptor add_seams(const char* filename) { std::vector tm_vds; From d31f685a0b52ae7abb4ba1d04c17d6eaa02cf477 Mon Sep 17 00:00:00 2001 From: Andreas Fabri Date: Wed, 20 Mar 2019 11:42:06 +0100 Subject: [PATCH 14/65] polish --- BGL/include/CGAL/boost/graph/Seam_mesh.h | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/BGL/include/CGAL/boost/graph/Seam_mesh.h b/BGL/include/CGAL/boost/graph/Seam_mesh.h index e1ccd0a2ed3..ce5459aeb95 100644 --- a/BGL/include/CGAL/boost/graph/Seam_mesh.h +++ b/BGL/include/CGAL/boost/graph/Seam_mesh.h @@ -1065,7 +1065,7 @@ public: /// \tparam VdContainer must be a model of SequenceContainer (that is, provide /// the functions: `operator[]` and `at()`). /// - /// \pre filename should be the name of a \cgal selection file with the file extension "*.selection.txt": + /// \pre filename should be the name of a \cgal selection file with file extension "*.selection.txt": /// edges are described by pairs of integers, on the third line of the file. template TM_halfedge_descriptor add_seams(const char* filename, @@ -1107,7 +1107,7 @@ public: /// /// \returns one of the halfedges of the seam mesh that is on a seam. /// - /// \pre filename should be the name of a CGAL selection filee with the file extension "*.selection.txt": + /// \pre filename should be the name of a \cgal selection filee with file extension "*.selection.txt": /// edges are described by pairs of integers, on the third line of the file. TM_halfedge_descriptor add_seams(const char* filename) { From f1dceb79eef9ef4bedf7679700e2d1c3694be521 Mon Sep 17 00:00:00 2001 From: Mael Date: Wed, 20 Mar 2019 11:43:33 +0100 Subject: [PATCH 15/65] fix typo --- BGL/include/CGAL/boost/graph/Seam_mesh.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/BGL/include/CGAL/boost/graph/Seam_mesh.h b/BGL/include/CGAL/boost/graph/Seam_mesh.h index ce5459aeb95..22d5e9c8c51 100644 --- a/BGL/include/CGAL/boost/graph/Seam_mesh.h +++ b/BGL/include/CGAL/boost/graph/Seam_mesh.h @@ -1107,7 +1107,7 @@ public: /// /// \returns one of the halfedges of the seam mesh that is on a seam. /// - /// \pre filename should be the name of a \cgal selection filee with file extension "*.selection.txt": + /// \pre filename should be the name of a \cgal selection file with file extension "*.selection.txt": /// edges are described by pairs of integers, on the third line of the file. TM_halfedge_descriptor add_seams(const char* filename) { From 99a16d2c8f111d5f858e11852999b0cbcdaf5dd8 Mon Sep 17 00:00:00 2001 From: Andreas Fabri Date: Wed, 20 Mar 2019 16:11:48 +0100 Subject: [PATCH 16/65] Fix example --- .../square_border_parameterizer.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Surface_mesh_parameterization/examples/Surface_mesh_parameterization/square_border_parameterizer.cpp b/Surface_mesh_parameterization/examples/Surface_mesh_parameterization/square_border_parameterizer.cpp index 8cc315c599e..1cb769ced47 100644 --- a/Surface_mesh_parameterization/examples/Surface_mesh_parameterization/square_border_parameterizer.cpp +++ b/Surface_mesh_parameterization/examples/Surface_mesh_parameterization/square_border_parameterizer.cpp @@ -41,7 +41,7 @@ bool read_vertices(const PolyMesh& mesh, Vd_array& fixed_vertices) { std::string str = filename; - if(str.substr(str.length() - 14) != ".selection.txt") { + if( (str.length()) < 14 || (str.substr(str.length() - 14) != ".selection.txt") ) { std::cerr << "Error: vertices must be given by a *.selection.txt file" << std::endl; return false; } From 6eab4c014c571f04b4406ae5884f7983016c4333 Mon Sep 17 00:00:00 2001 From: Laurent Rineau Date: Thu, 21 Mar 2019 09:52:53 +0100 Subject: [PATCH 17/65] Update the handle of .cin files with CGAL_RUN_TESTS_THROUGH_SSH --- .../cmake/modules/CGAL_add_test.cmake | 37 +++++++++++-------- .../cmake/modules/run_test_with_cin.cmake | 6 +-- 2 files changed, 24 insertions(+), 19 deletions(-) diff --git a/Installation/cmake/modules/CGAL_add_test.cmake b/Installation/cmake/modules/CGAL_add_test.cmake index 561dc6b0c64..877574d612c 100644 --- a/Installation/cmake/modules/CGAL_add_test.cmake +++ b/Installation/cmake/modules/CGAL_add_test.cmake @@ -232,24 +232,29 @@ function(cgal_add_test exe_name) # message("Add test ${test_name}") set(cin_file "${CMAKE_CURRENT_SOURCE_DIR}/${exe_name}.cin") if(NOT ARGS AND EXISTS ${cin_file}) - if(ANDROID OR CGAL_RUN_TESTS_THROUGH_SSH) - set(cmd ${exe_name}) + if(CGAL_RUN_TESTS_THROUGH_SSH) + add_test(NAME ${test_name} COMMAND bash -c "${TIME_COMMAND} ${ssh_executable} ${SSH_HOST} \"cd ${CGAL_REMOTE_TEST_DIR_PREFIX}${PROJECT_NAME} && ${CGAL_REMOTE_TEST_DIR_PREFIX}${PROJECT_NAME}/${exe_name} < ${exe_name}.cin 3< <(cat; kill -INT 0)\" <&1") else() - set(cmd $) + if(ANDROID) + set(cmd ${exe_name}) + else() + set(cmd $) + endif() + add_test(NAME ${test_name} + COMMAND ${TIME_COMMAND} ${CMAKE_COMMAND} + -DCMD:STRING=${cmd} + -DCIN:STRING=${cin_file} + -DCGAL_REMOTE_TEST_DIR_PREFIX=${CGAL_REMOTE_TEST_DIR_PREFIX} + -DCGAL_RUN_TESTS_THROUGH_SSH=${CGAL_RUN_TESTS_THROUGH_SSH} + -DSSH_HOST=${SSH_HOST} + -Dssh_executable=${ssh_executable} + -DCGAL_REMOTE_TEST_DIR_PREFIX=${CGAL_REMOTE_TEST_DIR_PREFIX} + -DPROJECT_NAME=${PROJECT_NAME} + -P "${CGAL_MODULES_DIR}/run_test_with_cin.cmake") + set_property(DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} + APPEND PROPERTY CMAKE_CONFIGURE_DEPENDS ${cin_file}) + # message(STATUS "add test: ${exe_name} < ${cin_file}") endif() - add_test(NAME ${test_name} - COMMAND ${TIME_COMMAND} ${CMAKE_COMMAND} - -DCMD:STRING=${cmd} - -DCIN:STRING=${cin_file} - -DCGAL_REMOTE_TEST_DIR_PREFIX=${CGAL_REMOTE_TEST_DIR_PREFIX} - -DSSH=${SSH} - -DSSH_HOST=${SSH_HOST} - -DCGAL_REMOTE_TEST_DIR_PREFIX=${CGAL_REMOTE_TEST_DIR_PREFIX} - -DPROJECT_NAME=${PROJECT_NAME} - -P "${CGAL_MODULES_DIR}/run_test_with_cin.cmake") - set_property(DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} - APPEND PROPERTY CMAKE_CONFIGURE_DEPENDS ${cin_file}) - # message(STATUS "add test: ${exe_name} < ${cin_file}") else() if(NOT ARGS AND NOT cgal_add_test_TEST_NAME) if(ARGC GREATER 2 AND ARGV2) diff --git a/Installation/cmake/modules/run_test_with_cin.cmake b/Installation/cmake/modules/run_test_with_cin.cmake index 65615d61c51..617ad4c3e16 100644 --- a/Installation/cmake/modules/run_test_with_cin.cmake +++ b/Installation/cmake/modules/run_test_with_cin.cmake @@ -1,4 +1,4 @@ -if(NOT CMD OR (NOT ANDROID AND NOT SSH AND NOT EXISTS ${CMD})) +if(NOT CMD OR (NOT ANDROID AND NOT CGAL_RUN_TESTS_THROUGH_SSH AND NOT EXISTS ${CMD})) message(FATAL_ERROR "The variable `CMD` should be defined to the test program to run!") endif() @@ -13,9 +13,9 @@ if(ANDROID) COMMAND adb shell "cd ${ANDROID_DIR_PREFIX}${PROJECT_NAME} && ${ANDROID_DIR_PREFIX}${PROJECT_NAME}/${CMD}" INPUT_FILE ${CIN} RESULT_VARIABLE error_result) -elseif(SSH) +elseif(CGAL_RUN_TESTS_THROUGH_SSH) execute_process( - COMMAND ssh ${SSH_HOST} "cd ${SSH_DIR_PREFIX}${PROJECT_NAME} && LD_LIBRARY_PATH=${SSH_DIR_PREFIX}/lib ${SSH_DIR_PREFIX}${PROJECT_NAME}/${CMD}" + COMMAND ${ssh_executable} ${SSH_HOST} "cd ${CGAL_REMOTE_TEST_DIR_PREFIX}${PROJECT_NAME} && LD_LIBRARY_PATH=${CGAL_REMOTE_TEST_DIR_PREFIX}/lib ${CGAL_REMOTE_TEST_DIR_PREFIX}${PROJECT_NAME}/${CMD}" INPUT_FILE ${CIN} RESULT_VARIABLE error_result) else() From 43167252faa1caabc6645c87d580a6624fe800fe Mon Sep 17 00:00:00 2001 From: Maxime Gimeno Date: Thu, 21 Mar 2019 11:37:39 +0100 Subject: [PATCH 18/65] Fix cin management in CGAL_add_tests --- Installation/cmake/modules/CGAL_add_test.cmake | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Installation/cmake/modules/CGAL_add_test.cmake b/Installation/cmake/modules/CGAL_add_test.cmake index 877574d612c..1a2bc19f544 100644 --- a/Installation/cmake/modules/CGAL_add_test.cmake +++ b/Installation/cmake/modules/CGAL_add_test.cmake @@ -233,7 +233,7 @@ function(cgal_add_test exe_name) set(cin_file "${CMAKE_CURRENT_SOURCE_DIR}/${exe_name}.cin") if(NOT ARGS AND EXISTS ${cin_file}) if(CGAL_RUN_TESTS_THROUGH_SSH) - add_test(NAME ${test_name} COMMAND bash -c "${TIME_COMMAND} ${ssh_executable} ${SSH_HOST} \"cd ${CGAL_REMOTE_TEST_DIR_PREFIX}${PROJECT_NAME} && ${CGAL_REMOTE_TEST_DIR_PREFIX}${PROJECT_NAME}/${exe_name} < ${exe_name}.cin 3< <(cat; kill -INT 0)\" <&1") + add_test(NAME ${test_name} COMMAND bash -c "${TIME_COMMAND} ${ssh_executable} ${SSH_HOST} \"cd ${CGAL_REMOTE_TEST_DIR_PREFIX}${PROJECT_NAME} && ${CGAL_REMOTE_TEST_DIR_PREFIX}${PROJECT_NAME}/${exe_name} 3< <(cat; kill -INT 0) < ${exe_name}.cin\" <&1") else() if(ANDROID) set(cmd ${exe_name}) From 60f54882f9596cd231e2494a654c5124c789a747 Mon Sep 17 00:00:00 2001 From: Andreas Fabri Date: Thu, 21 Mar 2019 19:40:08 +0100 Subject: [PATCH 19/65] Examples with Surface_mesh --- .../Surface_mesh_simplification.txt | 36 ++-- .../Surface_mesh_simplification/examples.txt | 1 + .../CMakeLists.txt | 1 + .../edge_collapse_bounded_normal_change.cpp | 26 ++- ...llapse_constrained_border_surface_mesh.cpp | 13 +- .../edge_collapse_enriched_polyhedron.cpp | 160 +++--------------- .../edge_collapse_polyhedron.cpp | 23 ++- .../edge_collapse_surface_mesh.cpp | 136 +-------------- .../edge_collapse_visitor_surface_mesh.cmd | 1 + .../edge_collapse_visitor_surface_mesh.cpp | 155 +++++++++++++++++ 10 files changed, 240 insertions(+), 312 deletions(-) create mode 100644 Surface_mesh_simplification/examples/Surface_mesh_simplification/edge_collapse_visitor_surface_mesh.cmd create mode 100644 Surface_mesh_simplification/examples/Surface_mesh_simplification/edge_collapse_visitor_surface_mesh.cpp diff --git a/Surface_mesh_simplification/doc/Surface_mesh_simplification/Surface_mesh_simplification.txt b/Surface_mesh_simplification/doc/Surface_mesh_simplification/Surface_mesh_simplification.txt index 98d94903647..c1686edc80e 100644 --- a/Surface_mesh_simplification/doc/Surface_mesh_simplification/Surface_mesh_simplification.txt +++ b/Surface_mesh_simplification/doc/Surface_mesh_simplification/Surface_mesh_simplification.txt @@ -30,6 +30,7 @@ is met, such as reaching the desired number of edges. The algorithm implemented here is generic in the sense that it does not require the surface mesh to be of a particular type but to be a model of the `MutableFaceGraph` and `HalfedgeListGraph` concepts. +We give examples for `Surface_mesh`, `Polyhedron_3`, and OpenMesh. The design is policy-based (http://en.wikipedia.org/wiki/Policy-based_design), @@ -254,24 +255,31 @@ int r = edge_collapse(surface_mesh \subsection Surface_mesh_simplificationExamples Examples -\subsection Surface_mesh_simplificationExampleUsinga Example Using a Default Polyhedron +\subsubsection Surface_mesh_simplificationExampleUsingSurfaceMesh Example Using a Surface_mesh -The following example illustrates the simplest of the cases. It uses -an ordinary polyhedron and only one of the optional parameters. +The following example illustrates the simplification of a `Surface_mesh`. The unspecified cost strategy defaults to Lindstrom-Turk. + +\cgalExample{Surface_mesh_simplification/edge_collapse_surface_mesh.cpp} + + +\subsubsection Surface_mesh_simplificationExampleUsinga Example Using a Default Polyhedron + +The following example illustrates the simplification of a `Polyhedron_3` with default +vertices, halfedges, and faces. +The unspecified cost strategy defaults to Lindstrom-Turk. + \cgalExample{Surface_mesh_simplification/edge_collapse_polyhedron.cpp} -\subsection Surface_mesh_simplificationExampleUsingan Example Using an Enriched Polyhedron +\subsubsection Surface_mesh_simplificationExampleUsingan Example Using an Enriched Polyhedron The following example is equivalent to the previous example but using an enriched polyhedron whose halfedges support an `id` field to -store the edge index needed by the algorithm. It also shows how to -explicitly specify a cost strategy (other than the default) -and how to use a visitor object to track the simplification process. +store the edge index needed by the algorithm. \cgalExample{Surface_mesh_simplification/edge_collapse_enriched_polyhedron.cpp} -\subsection Surface_mesh_simplificationExampleOpenMesh Example for Simplification of OpenMesh +\subsubsection Surface_mesh_simplificationExampleOpenMesh Example for Simplification of OpenMesh The following example shows how the mesh simplification package can be applied on a mesh data structure which is not part of \cgal, but a model of `FaceGraph`. @@ -282,17 +290,17 @@ What is particular in this example is the property map that allows to associate \cgalExample{Surface_mesh_simplification/edge_collapse_OpenMesh.cpp} -\subsection Surface_mesh_simplificationExamplewithedges Example with Edges Marked as Non-Removable +\subsubsection Surface_mesh_simplificationExamplewithedges Example with Edges Marked as Non-Removable The following example shows how to use the optional named parameter `edge_is_constrained_map` to prevent edges from being removed. Edges marked as constrained are guaranteed to be in the final surface mesh. However, the vertices of the constrained edges may change and the placement may change the points. The wrapper `CGAL::Surface_mesh_simplification::Constrained_placement` guarantees that these points are not changed. -\cgalExample{Surface_mesh_simplification/edge_collapse_constrained_border_polyhedron.cpp} +\cgalExample{Surface_mesh_simplification/edge_collapse_constrained_border_surface_mesh.cpp} -\subsection Surface_mesh_simplificationExamplewithBoundedNormal Example with Bounded Change of Face Normals +\subsubsection Surface_mesh_simplificationExamplewithBoundedNormal Example with Bounded Change of Face Normals The surface mesh simplification does not guarantee that the resulting surface has no self intersections. Even the rather trivial mesh shown in \cgalFigureRef{SMS-selfintersection} @@ -310,6 +318,12 @@ rejects this placement by returning `boost::none`. \cgalExample{Surface_mesh_simplification/edge_collapse_bounded_normal_change.cpp} +\subsubsection Surface_mesh_simplificationExamplewithVisitor Example with Visitor + +The last example shows how to use a visitor with callbacks that are called at the different +steps of the simplification algorithm. + +\cgalExample{Surface_mesh_simplification/edge_collapse_visitor_surface_mesh.cpp} */ } /* namespace CGAL */ diff --git a/Surface_mesh_simplification/doc/Surface_mesh_simplification/examples.txt b/Surface_mesh_simplification/doc/Surface_mesh_simplification/examples.txt index 1fccf678a18..bc5b234ca2b 100644 --- a/Surface_mesh_simplification/doc/Surface_mesh_simplification/examples.txt +++ b/Surface_mesh_simplification/doc/Surface_mesh_simplification/examples.txt @@ -8,4 +8,5 @@ \example Surface_mesh_simplification/edge_collapse_surface_mesh.cpp \example Surface_mesh_simplification/edge_collapse_all_short_edges.cpp \example Surface_mesh_simplification/edge_collapse_bounded_normal_change.cpp +\example Surface_mesh_simplification/edge_collapse_visitor_surface_mesh.cpp */ diff --git a/Surface_mesh_simplification/examples/Surface_mesh_simplification/CMakeLists.txt b/Surface_mesh_simplification/examples/Surface_mesh_simplification/CMakeLists.txt index e6cdccf2eb9..1090de74ac5 100644 --- a/Surface_mesh_simplification/examples/Surface_mesh_simplification/CMakeLists.txt +++ b/Surface_mesh_simplification/examples/Surface_mesh_simplification/CMakeLists.txt @@ -54,6 +54,7 @@ create_single_source_cgal_program( "edge_collapse_linear_cell_complex.cpp" ) create_single_source_cgal_program( "edge_collapse_constrained_border_surface_mesh.cpp" ) create_single_source_cgal_program( "edge_collapse_all_short_edges.cpp" ) create_single_source_cgal_program( "edge_collapse_bounded_normal_change.cpp" ) +create_single_source_cgal_program( "edge_collapse_visitor_surface_mesh.cpp" ) if(OpenMesh_FOUND) create_single_source_cgal_program( "edge_collapse_OpenMesh.cpp" ) diff --git a/Surface_mesh_simplification/examples/Surface_mesh_simplification/edge_collapse_bounded_normal_change.cpp b/Surface_mesh_simplification/examples/Surface_mesh_simplification/edge_collapse_bounded_normal_change.cpp index fada9dd5bf7..4e3072c4103 100644 --- a/Surface_mesh_simplification/examples/Surface_mesh_simplification/edge_collapse_bounded_normal_change.cpp +++ b/Surface_mesh_simplification/examples/Surface_mesh_simplification/edge_collapse_bounded_normal_change.cpp @@ -1,12 +1,9 @@ #include #include #include -#include +#include -// Simplification function #include - -// Stop-condition policy #include #include #include @@ -14,22 +11,23 @@ typedef CGAL::Simple_cartesian Kernel; -typedef CGAL::Polyhedron_3 Surface_mesh; +typedef CGAL::Surface_mesh Surface_mesh; -namespace SMS = CGAL::Surface_mesh_simplification ; +namespace SMS = CGAL::Surface_mesh_simplification; int main( int argc, char** argv ) { Surface_mesh surface_mesh; - std::ifstream is(argc > 1 ? argv[1] : "data/fold.off") ; is >> surface_mesh ; + std::ifstream is(argc > 1 ? argv[1] : "data/fold.off"); + is >> surface_mesh; // This is a stop predicate (defines when the algorithm terminates). // In this example, the simplification stops when the number of undirected edges // left in the surface mesh drops below the specified number (1000) SMS::Count_stop_predicate stop(num_halfedges(surface_mesh)/2 - 1); -typedef SMS::Bounded_normal_change_placement > Placement; + typedef SMS::Bounded_normal_change_placement > Placement; // This the actual call to the simplification algorithm. @@ -38,15 +36,13 @@ typedef SMS::Bounded_normal_change_placement()) - .get_placement(Placement()) + CGAL::parameters::get_cost (SMS::LindstromTurk_cost()) + .get_placement(Placement()) ); - std::ofstream os( argc > 2 ? argv[2] : "out.off" ) ; + std::ofstream os( argc > 2 ? argv[2] : "out.off" ); os.precision(17); - os << surface_mesh ; + os << surface_mesh; - return 0 ; + return EXIT_SUCCESS; } diff --git a/Surface_mesh_simplification/examples/Surface_mesh_simplification/edge_collapse_constrained_border_surface_mesh.cpp b/Surface_mesh_simplification/examples/Surface_mesh_simplification/edge_collapse_constrained_border_surface_mesh.cpp index 47e509fcf73..9a111df2617 100644 --- a/Surface_mesh_simplification/examples/Surface_mesh_simplification/edge_collapse_constrained_border_surface_mesh.cpp +++ b/Surface_mesh_simplification/examples/Surface_mesh_simplification/edge_collapse_constrained_border_surface_mesh.cpp @@ -1,6 +1,5 @@ #include #include -#include #include #include @@ -24,7 +23,7 @@ typedef CGAL::Surface_mesh Surface_mesh; typedef boost::graph_traits::halfedge_descriptor halfedge_descriptor; typedef boost::graph_traits::edge_descriptor edge_descriptor; -namespace SMS = CGAL::Surface_mesh_simplification ; +namespace SMS = CGAL::Surface_mesh_simplification; // // BGL property map which indicates whether an edge is marked as non-removable @@ -66,7 +65,7 @@ int main( int argc, char** argv ) return EXIT_FAILURE; } - is >> surface_mesh ; + is >> surface_mesh ; if (!CGAL::is_triangle_mesh(surface_mesh)){ std::cerr << "Input geometry is not triangulated." << std::endl; return EXIT_FAILURE; @@ -100,11 +99,11 @@ int main( int argc, char** argv ) ); std::cout << "\nFinished...\n" << r << " edges removed.\n" - << surface_mesh.number_of_edges() << " final edges.\n" ; + << surface_mesh.number_of_edges() << " final edges.\n"; - std::ofstream os( argc > 2 ? argv[2] : "out.off" ) ; + std::ofstream os( argc > 2 ? argv[2] : "out.off" ); os.precision(17); - os << surface_mesh ; + os << surface_mesh; // now check! BOOST_FOREACH(halfedge_descriptor hd, halfedges(surface_mesh)){ @@ -119,5 +118,5 @@ int main( int argc, char** argv ) } assert( nb_border_edges==0 ); - return EXIT_SUCCESS ; + return EXIT_SUCCESS; } diff --git a/Surface_mesh_simplification/examples/Surface_mesh_simplification/edge_collapse_enriched_polyhedron.cpp b/Surface_mesh_simplification/examples/Surface_mesh_simplification/edge_collapse_enriched_polyhedron.cpp index 2701d40f16e..2479a2cadf5 100644 --- a/Surface_mesh_simplification/examples/Surface_mesh_simplification/edge_collapse_enriched_polyhedron.cpp +++ b/Surface_mesh_simplification/examples/Surface_mesh_simplification/edge_collapse_enriched_polyhedron.cpp @@ -3,123 +3,31 @@ #include #include - -// Simplification function -#include - -// Visitor base -#include - // Extended polyhedron items which include an id() field #include -// Stop-condition policy +#include #include -// Non-default cost and placement policies -#include typedef CGAL::Simple_cartesian Kernel; +typedef Kernel::Point_3 Point; -typedef Kernel::Point_3 Point ; - -// // Setup an enriched polyhedron type which stores an id() field in the items -// typedef CGAL::Polyhedron_3 Surface_mesh; -typedef Surface_mesh::Halfedge_handle Halfedge_handle ; -typedef Surface_mesh::Vertex_handle Vertex_handle ; +typedef boost::graph_traits::halfedge_descriptor halfedge_descriptor; +typedef boost::graph_traits::vertex_descriptor vertex_descriptor; -namespace SMS = CGAL::Surface_mesh_simplification ; - -typedef SMS::Edge_profile Profile ; - - -// The following is a Visitor that keeps track of the simplification process. -// In this example the progress is printed real-time and a few statistics are -// recorded (and printed in the end). -// -struct Stats -{ - Stats() - : collected(0) - , processed(0) - , collapsed(0) - , non_collapsable(0) - , cost_uncomputable(0) - , placement_uncomputable(0) - {} - - std::size_t collected ; - std::size_t processed ; - std::size_t collapsed ; - std::size_t non_collapsable ; - std::size_t cost_uncomputable ; - std::size_t placement_uncomputable ; -} ; - -struct My_visitor : SMS::Edge_collapse_visitor_base -{ - My_visitor( Stats* s) : stats(s){} - - // Called during the collecting phase for each edge collected. - void OnCollected( Profile const&, boost::optional const& ) - { - ++ stats->collected ; - std::cerr << "\rEdges collected: " << stats->collected << std::flush ; - } - - // Called during the processing phase for each edge selected. - // If cost is absent the edge won't be collapsed. - void OnSelected(Profile const& - ,boost::optional cost - ,std::size_t initial - ,std::size_t current - ) - { - ++ stats->processed ; - if ( !cost ) - ++ stats->cost_uncomputable ; - - if ( current == initial ) - std::cerr << "\n" << std::flush ; - std::cerr << "\r" << current << std::flush ; - } - - // Called during the processing phase for each edge being collapsed. - // If placement is absent the edge is left uncollapsed. - void OnCollapsing(Profile const& - ,boost::optional placement - ) - { - if ( !placement ) - ++ stats->placement_uncomputable ; - } - - // Called for each edge which failed the so called link-condition, - // that is, which cannot be collapsed because doing so would - // turn the surface mesh into a non-manifold. - void OnNonCollapsable( Profile const& ) - { - ++ stats->non_collapsable; - } - - // Called AFTER each edge has been collapsed - void OnCollapsed( Profile const&, Vertex_handle ) - { - ++ stats->collapsed; - } - - Stats* stats ; -} ; +namespace SMS = CGAL::Surface_mesh_simplification; int main( int argc, char** argv ) { Surface_mesh surface_mesh; - std::ifstream is(argv[1]) ; is >> surface_mesh ; + std::ifstream is(argv[1]); + is >> surface_mesh; if (!CGAL::is_triangle_mesh(surface_mesh)){ std::cerr << "Input geometry is not triangulated." << std::endl; return EXIT_FAILURE; @@ -130,60 +38,36 @@ int main( int argc, char** argv ) // need to get the index of a vertex/edge. // However, the Polyhedron_3 class doesn't assign any value to // this id(), so we must do it here: - int index = 0 ; + int index = 0; - for( Surface_mesh::Halfedge_iterator eb = surface_mesh.halfedges_begin() - , ee = surface_mesh.halfedges_end() - ; eb != ee - ; ++ eb - ) - eb->id() = index++; - - index = 0 ; - for( Surface_mesh::Vertex_iterator vb = surface_mesh.vertices_begin() - , ve = surface_mesh.vertices_end() - ; vb != ve - ; ++ vb - ) - vb->id() = index++; + BOOST_FOREACH(halfedge_descriptor hd , halfedges(surface_mesh)){ + hd->id() = index++; +} + index = 0; + + BOOST_FOREACH(vertex_descriptor vd , vertices(surface_mesh)){ + vd->id() = index++; +} // In this example, the simplification stops when the number of undirected edges // drops below 10% of the initial count SMS::Count_ratio_stop_predicate stop(0.1); - Stats stats ; - - My_visitor vis(&stats) ; // The index maps are not explicitelty passed as in the previous // example because the surface mesh items have a proper id() field. // On the other hand, we pass here explicit cost and placement // function which differ from the default policies, ommited in // the previous example. - int r = SMS::edge_collapse - (surface_mesh - ,stop - ,CGAL::parameters::get_cost (SMS::Edge_length_cost ()) - .get_placement(SMS::Midpoint_placement()) - .visitor (vis) - ); + int r = SMS::edge_collapse(surface_mesh, stop); - std::cout << "\nEdges collected: " << stats.collected - << "\nEdges proccessed: " << stats.processed - << "\nEdges collapsed: " << stats.collapsed - << std::endl - << "\nEdges not collapsed due to topological constraints: " << stats.non_collapsable - << "\nEdge not collapsed due to cost computation constraints: " << stats.cost_uncomputable - << "\nEdge not collapsed due to placement computation constraints: " << stats.placement_uncomputable - << std::endl ; - std::cout << "\nFinished...\n" << r << " edges removed.\n" - << (surface_mesh.size_of_halfedges()/2) << " final edges.\n" ; + << (surface_mesh.size_of_halfedges()/2) << " final edges.\n"; - std::ofstream os( argc > 2 ? argv[2] : "out.off" ) ; - os.precision(17) ; - os << surface_mesh ; + std::ofstream os( argc > 2 ? argv[2] : "out.off" ); + os.precision(17); + os << surface_mesh; - return EXIT_SUCCESS ; + return EXIT_SUCCESS; } diff --git a/Surface_mesh_simplification/examples/Surface_mesh_simplification/edge_collapse_polyhedron.cpp b/Surface_mesh_simplification/examples/Surface_mesh_simplification/edge_collapse_polyhedron.cpp index 0b71dc88768..52085cd078c 100644 --- a/Surface_mesh_simplification/examples/Surface_mesh_simplification/edge_collapse_polyhedron.cpp +++ b/Surface_mesh_simplification/examples/Surface_mesh_simplification/edge_collapse_polyhedron.cpp @@ -9,20 +9,19 @@ // Stop-condition policy #include -#include -#include typedef CGAL::Simple_cartesian Kernel; typedef CGAL::Polyhedron_3 Surface_mesh; -namespace SMS = CGAL::Surface_mesh_simplification ; +namespace SMS = CGAL::Surface_mesh_simplification; int main( int argc, char** argv ) { Surface_mesh surface_mesh; - std::ifstream is(argv[1]) ; is >> surface_mesh ; + std::ifstream is(argv[1]); + is >> surface_mesh; if (!CGAL::is_triangle_mesh(surface_mesh)){ std::cerr << "Input geometry is not triangulated." << std::endl; return EXIT_FAILURE; @@ -40,18 +39,16 @@ int main( int argc, char** argv ) int r = SMS::edge_collapse (surface_mesh ,stop - ,CGAL::parameters::vertex_index_map(get(CGAL::vertex_external_index,surface_mesh)) - .halfedge_index_map (get(CGAL::halfedge_external_index ,surface_mesh)) - .get_cost (SMS::Edge_length_cost ()) - .get_placement(SMS::Midpoint_placement()) + ,CGAL::parameters::vertex_index_map(get(CGAL::vertex_external_index, surface_mesh)) + .halfedge_index_map (get(CGAL::halfedge_external_index, surface_mesh)) ); std::cout << "\nFinished...\n" << r << " edges removed.\n" - << (surface_mesh.size_of_halfedges()/2) << " final edges.\n" ; + << (surface_mesh.size_of_halfedges()/2) << " final edges.\n"; - std::ofstream os( argc > 2 ? argv[2] : "out.off" ) ; - os.precision(17) ; - os << surface_mesh ; + std::ofstream os( argc > 2 ? argv[2] : "out.off" ); + os.precision(17); + os << surface_mesh; - return EXIT_SUCCESS ; + return EXIT_SUCCESS; } diff --git a/Surface_mesh_simplification/examples/Surface_mesh_simplification/edge_collapse_surface_mesh.cpp b/Surface_mesh_simplification/examples/Surface_mesh_simplification/edge_collapse_surface_mesh.cpp index 2cb9a496c9a..7fa2a9edf42 100644 --- a/Surface_mesh_simplification/examples/Surface_mesh_simplification/edge_collapse_surface_mesh.cpp +++ b/Surface_mesh_simplification/examples/Surface_mesh_simplification/edge_collapse_surface_mesh.cpp @@ -3,118 +3,22 @@ #include #include - -// Simplification function #include - -// Visitor base -#include - -// Stop-condition policy #include -#include -#include typedef CGAL::Simple_cartesian Kernel; typedef Kernel::Point_3 Point_3; - -// -// Setup an enriched polyhedron type which stores an id() field in the items -// typedef CGAL::Surface_mesh Surface_mesh; -typedef boost::graph_traits::halfedge_descriptor halfedge_descriptor ; -typedef boost::graph_traits::vertex_descriptor vertex_descriptor; - -namespace SMS = CGAL::Surface_mesh_simplification ; - -typedef SMS::Edge_profile Profile ; - - -// The following is a Visitor that keeps track of the simplification process. -// In this example the progress is printed real-time and a few statistics are -// recorded (and printed in the end). -// -struct Stats -{ - Stats() - : collected(0) - , processed(0) - , collapsed(0) - , non_collapsable(0) - , cost_uncomputable(0) - , placement_uncomputable(0) - {} - - std::size_t collected ; - std::size_t processed ; - std::size_t collapsed ; - std::size_t non_collapsable ; - std::size_t cost_uncomputable ; - std::size_t placement_uncomputable ; -} ; - -struct My_visitor : SMS::Edge_collapse_visitor_base -{ - My_visitor( Stats* s) : stats(s){} - - // Called during the collecting phase for each edge collected. - void OnCollected( Profile const&, boost::optional const& ) - { - ++ stats->collected ; - std::cerr << "\rEdges collected: " << stats->collected << std::flush ; - } - - // Called during the processing phase for each edge selected. - // If cost is absent the edge won't be collapsed. - void OnSelected(Profile const& - ,boost::optional cost - ,std::size_t initial - ,std::size_t current - ) - { - ++ stats->processed ; - if ( !cost ) - ++ stats->cost_uncomputable ; - - if ( current == initial ) - std::cerr << "\n" << std::flush ; - std::cerr << "\r" << current << std::flush ; - } - - // Called during the processing phase for each edge being collapsed. - // If placement is absent the edge is left uncollapsed. - void OnCollapsing(Profile const& - ,boost::optional placement - ) - { - if ( !placement ) - ++ stats->placement_uncomputable ; - } - - // Called for each edge which failed the so called link-condition, - // that is, which cannot be collapsed because doing so would - // turn the surface mesh into a non-manifold. - void OnNonCollapsable( Profile const& ) - { - ++ stats->non_collapsable; - } - - // Called AFTER each edge has been collapsed - void OnCollapsed( Profile const&, vertex_descriptor ) - { - ++ stats->collapsed; - } - - Stats* stats ; -} ; +namespace SMS = CGAL::Surface_mesh_simplification; int main( int argc, char** argv ) { Surface_mesh surface_mesh; - std::ifstream is(argv[1]) ; is >> surface_mesh ; + std::ifstream is(argv[1]); + is >> surface_mesh; if (!CGAL::is_triangle_mesh(surface_mesh)){ std::cerr << "Input geometry is not triangulated." << std::endl; return EXIT_FAILURE; @@ -124,38 +28,14 @@ int main( int argc, char** argv ) // drops below 10% of the initial count SMS::Count_ratio_stop_predicate stop(0.1); - Stats stats ; - - My_visitor vis(&stats) ; + int r = SMS::edge_collapse(surface_mesh, stop); - // The index maps are not explicitelty passed as in the previous - // example because the surface mesh items have a proper id() field. - // On the other hand, we pass here explicit cost and placement - // function which differ from the default policies, ommited in - // the previous example. - int r = SMS::edge_collapse - (surface_mesh - ,stop - ,CGAL::parameters::get_cost (SMS::Edge_length_cost ()) - .get_placement(SMS::Midpoint_placement()) - .visitor (vis) - ); - - std::cout << "\nEdges collected: " << stats.collected - << "\nEdges proccessed: " << stats.processed - << "\nEdges collapsed: " << stats.collapsed - << std::endl - << "\nEdges not collapsed due to topological constraints: " << stats.non_collapsable - << "\nEdge not collapsed due to cost computation constraints: " << stats.cost_uncomputable - << "\nEdge not collapsed due to placement computation constraints: " << stats.placement_uncomputable - << std::endl ; - std::cout << "\nFinished...\n" << r << " edges removed.\n" << surface_mesh.number_of_edges() << " final edges.\n"; - std::ofstream os( argc > 2 ? argv[2] : "out.off" ) ; - os.precision(17) ; - os << surface_mesh ; + std::ofstream os( argc > 2 ? argv[2] : "out.off" ); + os.precision(17); + os << surface_mesh; - return EXIT_SUCCESS ; + return EXIT_SUCCESS; } diff --git a/Surface_mesh_simplification/examples/Surface_mesh_simplification/edge_collapse_visitor_surface_mesh.cmd b/Surface_mesh_simplification/examples/Surface_mesh_simplification/edge_collapse_visitor_surface_mesh.cmd new file mode 100644 index 00000000000..5cea844d830 --- /dev/null +++ b/Surface_mesh_simplification/examples/Surface_mesh_simplification/edge_collapse_visitor_surface_mesh.cmd @@ -0,0 +1 @@ +cube.off diff --git a/Surface_mesh_simplification/examples/Surface_mesh_simplification/edge_collapse_visitor_surface_mesh.cpp b/Surface_mesh_simplification/examples/Surface_mesh_simplification/edge_collapse_visitor_surface_mesh.cpp new file mode 100644 index 00000000000..9688a107e6d --- /dev/null +++ b/Surface_mesh_simplification/examples/Surface_mesh_simplification/edge_collapse_visitor_surface_mesh.cpp @@ -0,0 +1,155 @@ +#include +#include + +#include +#include + +// Simplification function +#include + +// Visitor base +#include + +// Stop-condition policy +#include + +typedef CGAL::Simple_cartesian Kernel; +typedef Kernel::Point_3 Point_3; + +typedef CGAL::Surface_mesh Surface_mesh; + +typedef boost::graph_traits::halfedge_descriptor halfedge_descriptor; +typedef boost::graph_traits::vertex_descriptor vertex_descriptor; + +namespace SMS = CGAL::Surface_mesh_simplification; + +typedef SMS::Edge_profile Profile; + + +// The following is a Visitor that keeps track of the simplification process. +// In this example the progress is printed real-time and a few statistics are +// recorded (and printed in the end). +// +struct Stats +{ + Stats() + : collected(0) + , processed(0) + , collapsed(0) + , non_collapsable(0) + , cost_uncomputable(0) + , placement_uncomputable(0) + {} + + std::size_t collected; + std::size_t processed; + std::size_t collapsed; + std::size_t non_collapsable; + std::size_t cost_uncomputable ; + std::size_t placement_uncomputable; +}; + +struct My_visitor : SMS::Edge_collapse_visitor_base +{ + My_visitor( Stats* s) : stats(s){} + + // Called during the collecting phase for each edge collected. + void OnCollected( Profile const&, boost::optional const& ) + { + ++ stats->collected; + std::cerr << "\rEdges collected: " << stats->collected << std::flush; + } + + // Called during the processing phase for each edge selected. + // If cost is absent the edge won't be collapsed. + void OnSelected(Profile const& + ,boost::optional cost + ,std::size_t initial + ,std::size_t current + ) + { + ++ stats->processed; + if ( !cost ) + ++ stats->cost_uncomputable; + + if ( current == initial ) + std::cerr << "\n" << std::flush; + std::cerr << "\r" << current << std::flush; + } + + // Called during the processing phase for each edge being collapsed. + // If placement is absent the edge is left uncollapsed. + void OnCollapsing(Profile const& + ,boost::optional placement + ) + { + if ( !placement ) + ++ stats->placement_uncomputable; + } + + // Called for each edge which failed the so called link-condition, + // that is, which cannot be collapsed because doing so would + // turn the surface mesh into a non-manifold. + void OnNonCollapsable( Profile const& ) + { + ++ stats->non_collapsable; + } + + // Called after each edge has been collapsed + void OnCollapsed( Profile const&, vertex_descriptor ) + { + ++ stats->collapsed; + } + + Stats* stats; +}; + + +int main( int argc, char** argv ) +{ + Surface_mesh surface_mesh; + + std::ifstream is(argv[1]); + is >> surface_mesh; + if (!CGAL::is_triangle_mesh(surface_mesh)){ + std::cerr << "Input geometry is not triangulated." << std::endl; + return EXIT_FAILURE; + } + + // In this example, the simplification stops when the number of undirected edges + // drops below 10% of the initial count + SMS::Count_ratio_stop_predicate stop(0.1); + + Stats stats; + + My_visitor vis(&stats); + + // The index maps are not explicitelty passed as in the previous + // example because the surface mesh items have a proper id() field. + // On the other hand, we pass here explicit cost and placement + // function which differ from the default policies, ommited in + // the previous example. + int r = SMS::edge_collapse + (surface_mesh + ,stop + ,CGAL::parameters::visitor(vis) + ); + + std::cout << "\nEdges collected: " << stats.collected + << "\nEdges proccessed: " << stats.processed + << "\nEdges collapsed: " << stats.collapsed + << std::endl + << "\nEdges not collapsed due to topological constraints: " << stats.non_collapsable + << "\nEdge not collapsed due to cost computation constraints: " << stats.cost_uncomputable + << "\nEdge not collapsed due to placement computation constraints: " << stats.placement_uncomputable + << std::endl; + + std::cout << "\nFinished...\n" << r << " edges removed.\n" + << surface_mesh.number_of_edges() << " final edges.\n"; + + std::ofstream os( argc > 2 ? argv[2] : "out.off" ); + os.precision(17); + os << surface_mesh; + + return EXIT_SUCCESS; +} From 596661526e40b1ec503315d5a8ec791ba06e3bbb Mon Sep 17 00:00:00 2001 From: Andreas Fabri Date: Fri, 22 Mar 2019 08:46:46 +0100 Subject: [PATCH 20/65] fix (sub)section --- .../Surface_mesh_simplification.txt | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/Surface_mesh_simplification/doc/Surface_mesh_simplification/Surface_mesh_simplification.txt b/Surface_mesh_simplification/doc/Surface_mesh_simplification/Surface_mesh_simplification.txt index c1686edc80e..e7d1b69296f 100644 --- a/Surface_mesh_simplification/doc/Surface_mesh_simplification/Surface_mesh_simplification.txt +++ b/Surface_mesh_simplification/doc/Surface_mesh_simplification/Surface_mesh_simplification.txt @@ -253,9 +253,9 @@ int r = edge_collapse(surface_mesh \endcode -\subsection Surface_mesh_simplificationExamples Examples +\section Surface_mesh_simplificationExamples Examples -\subsubsection Surface_mesh_simplificationExampleUsingSurfaceMesh Example Using a Surface_mesh +\subsection Surface_mesh_simplificationExampleUsingSurfaceMesh Example Using a Surface_mesh The following example illustrates the simplification of a `Surface_mesh`. The unspecified cost strategy defaults to Lindstrom-Turk. @@ -263,7 +263,7 @@ The unspecified cost strategy defaults to Lindstrom-Turk. \cgalExample{Surface_mesh_simplification/edge_collapse_surface_mesh.cpp} -\subsubsection Surface_mesh_simplificationExampleUsinga Example Using a Default Polyhedron +\subsection Surface_mesh_simplificationExampleUsinga Example Using a Default Polyhedron The following example illustrates the simplification of a `Polyhedron_3` with default vertices, halfedges, and faces. @@ -271,7 +271,7 @@ The unspecified cost strategy defaults to Lindstrom-Turk. \cgalExample{Surface_mesh_simplification/edge_collapse_polyhedron.cpp} -\subsubsection Surface_mesh_simplificationExampleUsingan Example Using an Enriched Polyhedron +\subsection Surface_mesh_simplificationExampleUsingan Example Using an Enriched Polyhedron The following example is equivalent to the previous example but using an enriched polyhedron whose halfedges support an `id` field to @@ -279,7 +279,7 @@ store the edge index needed by the algorithm. \cgalExample{Surface_mesh_simplification/edge_collapse_enriched_polyhedron.cpp} -\subsubsection Surface_mesh_simplificationExampleOpenMesh Example for Simplification of OpenMesh +\subsection Surface_mesh_simplificationExampleOpenMesh Example for Simplification of OpenMesh The following example shows how the mesh simplification package can be applied on a mesh data structure which is not part of \cgal, but a model of `FaceGraph`. @@ -290,7 +290,7 @@ What is particular in this example is the property map that allows to associate \cgalExample{Surface_mesh_simplification/edge_collapse_OpenMesh.cpp} -\subsubsection Surface_mesh_simplificationExamplewithedges Example with Edges Marked as Non-Removable +\subsection Surface_mesh_simplificationExamplewithedges Example with Edges Marked as Non-Removable The following example shows how to use the optional named parameter `edge_is_constrained_map` to prevent edges from being removed. Edges marked as constrained are guaranteed to be in the final surface mesh. However, @@ -300,7 +300,7 @@ The wrapper `CGAL::Surface_mesh_simplification::Constrained_placement` guarantee \cgalExample{Surface_mesh_simplification/edge_collapse_constrained_border_surface_mesh.cpp} -\subsubsection Surface_mesh_simplificationExamplewithBoundedNormal Example with Bounded Change of Face Normals +\subsection Surface_mesh_simplificationExamplewithBoundedNormal Example with Bounded Change of Face Normals The surface mesh simplification does not guarantee that the resulting surface has no self intersections. Even the rather trivial mesh shown in \cgalFigureRef{SMS-selfintersection} @@ -318,7 +318,7 @@ rejects this placement by returning `boost::none`. \cgalExample{Surface_mesh_simplification/edge_collapse_bounded_normal_change.cpp} -\subsubsection Surface_mesh_simplificationExamplewithVisitor Example with Visitor +\subsection Surface_mesh_simplificationExamplewithVisitor Example with Visitor The last example shows how to use a visitor with callbacks that are called at the different steps of the simplification algorithm. From 2873493fb424da20e573f6f8123c618616f2c408 Mon Sep 17 00:00:00 2001 From: Andreas Fabri Date: Fri, 22 Mar 2019 09:41:03 +0100 Subject: [PATCH 21/65] PMP: Fix inclusion of .jpg --- Polygon_mesh_processing/doc/Polygon_mesh_processing/Doxyfile.in | 2 ++ 1 file changed, 2 insertions(+) diff --git a/Polygon_mesh_processing/doc/Polygon_mesh_processing/Doxyfile.in b/Polygon_mesh_processing/doc/Polygon_mesh_processing/Doxyfile.in index bf7a9bf0c4f..5528e5ea9ff 100644 --- a/Polygon_mesh_processing/doc/Polygon_mesh_processing/Doxyfile.in +++ b/Polygon_mesh_processing/doc/Polygon_mesh_processing/Doxyfile.in @@ -27,3 +27,5 @@ EXPAND_AS_DEFINED = CGAL_PMP_NP_TEMPLATE_PARAMETERS \ CGAL_PMP_NP_CLASS EXCLUDE = ${CGAL_PACKAGE_INCLUDE_DIR}/CGAL/Polygon_mesh_processing/internal EXCLUDE_SYMBOLS += experimental + +HTML_EXTRA_FILES = ${CGAL_PACKAGE_DOC_DIR}/fig/selfintersections.jpg \ No newline at end of file From fc04ed7609729b246545c87905542ccced3ae3ab Mon Sep 17 00:00:00 2001 From: Laurent Rineau Date: Thu, 21 Mar 2019 17:45:26 +0100 Subject: [PATCH 22/65] Fix intersection(Point_2,Point_2) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit It seems it was never tested, and never worked. PR #2792 introduced a compilation error in cgal-swig-bindings, by the addition of `do_intersect(Point_2,Circle_2)` and `intersection(Point_2,Circle_2)`: > /usr/include/CGAL/Kernel/function_objects.h:2954:63: error: call of overloaded ‘do_intersect(const CGAL::Point_2 > >&, const CGAL::Point_2 > >&, CGAL::Simple_cartesian >)’ is ambiguous > { return Intersections::internal::do_intersect(t1, t2, K()); } > ^ https://travis-ci.org/CGAL/cgal-swig-bindings/jobs/509442278#L4727 --- Intersections_2/include/CGAL/Intersection_traits_2.h | 5 +++++ .../include/CGAL/Intersections_2/Point_2_Point_2.h | 6 ++++-- .../test/Intersections_2/test_intersections_2.cpp | 10 +++++++++- 3 files changed, 18 insertions(+), 3 deletions(-) diff --git a/Intersections_2/include/CGAL/Intersection_traits_2.h b/Intersections_2/include/CGAL/Intersection_traits_2.h index 4519f5e3ae4..170636c22e2 100644 --- a/Intersections_2/include/CGAL/Intersection_traits_2.h +++ b/Intersections_2/include/CGAL/Intersection_traits_2.h @@ -97,6 +97,11 @@ struct Intersection_traits { typedef boost::optional result_type; }; +template +struct Intersection_traits { + typedef typename boost::variant variant_type; + typedef boost::optional result_type; +}; template struct Intersection_traits diff --git a/Intersections_2/include/CGAL/Intersections_2/Point_2_Point_2.h b/Intersections_2/include/CGAL/Intersections_2/Point_2_Point_2.h index 0baa0f0a6a8..c3d77f4d20b 100644 --- a/Intersections_2/include/CGAL/Intersections_2/Point_2_Point_2.h +++ b/Intersections_2/include/CGAL/Intersections_2/Point_2_Point_2.h @@ -39,7 +39,8 @@ namespace internal { template inline bool do_intersect(const typename K::Point_2 &pt1, - const typename K::Point_2 &pt2) + const typename K::Point_2 &pt2, + const K&) { return pt1 == pt2; } @@ -48,7 +49,8 @@ template typename CGAL::Intersection_traits ::result_type intersection(const typename K::Point_2 &pt1, - const typename K::Point_2 &pt2) + const typename K::Point_2 &pt2, + const K&) { if (pt1 == pt2) { return intersection_return(pt1); diff --git a/Intersections_2/test/Intersections_2/test_intersections_2.cpp b/Intersections_2/test/Intersections_2/test_intersections_2.cpp index f3e46cc78d2..963beac1f15 100644 --- a/Intersections_2/test/Intersections_2/test_intersections_2.cpp +++ b/Intersections_2/test/Intersections_2/test_intersections_2.cpp @@ -15,7 +15,7 @@ #include #include #include - +#include #include #include @@ -292,6 +292,13 @@ check_no_intersection (L(p(0, 0), p(10,10)), L(p(8,7), p(1, 0))); check_intersection (S(p(-10, -10), p( 0, 10)), T(p( -9, 9), p( 14, 8), p(-2,-16))); } + void P_P() + { + std::cout << "Point - Point\n"; + check_no_intersection

(p( 8, 4), p(-4, 8)); + check_intersection

(p( 8, 4), p( 8, 4)); + } + void P_T() { std::cout << "Point - Triangle\n"; @@ -353,6 +360,7 @@ check_no_intersection (L(p(0, 0), p(10,10)), L(p(8,7), p(1, 0))); R_T(); S_T(); P_T(); + P_P(); L_Rec(); R_Rec(); S_Rec(); From c13db7254d200e28016afb94282e69250f0475db Mon Sep 17 00:00:00 2001 From: Maxime Gimeno Date: Fri, 22 Mar 2019 11:33:59 +0100 Subject: [PATCH 23/65] Add execution time and exit value to error.txt --- Testsuite/test/parse-ctest-dashboard-xml.py | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/Testsuite/test/parse-ctest-dashboard-xml.py b/Testsuite/test/parse-ctest-dashboard-xml.py index 827aabadeed..b197db9997c 100644 --- a/Testsuite/test/parse-ctest-dashboard-xml.py +++ b/Testsuite/test/parse-ctest-dashboard-xml.py @@ -42,7 +42,15 @@ labels = set() tester_name=sys.argv[1] platform_name=sys.argv[2] for t in testing.findall('Test'): - t_output = t.find('Results').find('Measurement').find('Value') + nm = t.find('Results') + t_exit_value="" + ex_time = "" + for ec in nm.findall("*/[@name='Execution Time']"): + ex_time=ec.find('Value').text + for ec in nm.findall("*/[@name='Exit Code']"): + t_exit_value=ec.find('Value').text + #t_exit_value=nm.find("*/[@name='Exit Code']").find('Value').text + t_output = nm.find('Measurement').find('Value') t_output_value = t_output.text if t_output_value != None: if 'encoding' in t_output.attrib and t_output.attrib['encoding'] == 'base64': @@ -55,6 +63,8 @@ for t in testing.findall('Test'): "Status": t.attrib['Status'], \ "Output": t_output_value, \ "Labels": [l.text for l in t.find('Labels').findall('Label')] if t.find('Labels') is not None else ['UNKNOWN_LABEL'], \ + "ExitValue": t_exit_value, \ + "ExecutionTime": ex_time, \ } tests_per_label = defaultdict(list) @@ -72,7 +82,7 @@ with open_file_create_dir(result_file_name.format(dir=os.getcwd(), result_for_label='y' with open_file_create_dir("{}/error.txt".format(label), 'w') as error: for t in tests: - print(" {} {}".format("successful " if (t['Status'] == 'passed') else "ERROR: ", t['Name']), file=error) + print(" {result} {name} in {time} s : {value} ".format(result = "successful " if (t['Status'] == 'passed') else "ERROR: ", name = t['Name'], value = t['ExitValue'] if(t['ExitValue'] != "") else "SUCCESS" , time = t['ExecutionTime']), file=error) if t['Status'] != 'passed': result_for_label='n' elif t['Output'] != None and re.search(r'(^|[^a-zA-Z_,:-])warning', t['Output'], flags=re.IGNORECASE): From 497d3154882afc0aed5bed39799d272b3f65bee4 Mon Sep 17 00:00:00 2001 From: Mael Date: Fri, 22 Mar 2019 17:11:19 +0100 Subject: [PATCH 24/65] And the end-of-line in Polygon_mesh_processing/doc/Polygon_mesh_processing/Doxyfile.in Co-Authored-By: lrineau --- Polygon_mesh_processing/doc/Polygon_mesh_processing/Doxyfile.in | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Polygon_mesh_processing/doc/Polygon_mesh_processing/Doxyfile.in b/Polygon_mesh_processing/doc/Polygon_mesh_processing/Doxyfile.in index 5528e5ea9ff..82bd44cdbf4 100644 --- a/Polygon_mesh_processing/doc/Polygon_mesh_processing/Doxyfile.in +++ b/Polygon_mesh_processing/doc/Polygon_mesh_processing/Doxyfile.in @@ -28,4 +28,4 @@ EXPAND_AS_DEFINED = CGAL_PMP_NP_TEMPLATE_PARAMETERS \ EXCLUDE = ${CGAL_PACKAGE_INCLUDE_DIR}/CGAL/Polygon_mesh_processing/internal EXCLUDE_SYMBOLS += experimental -HTML_EXTRA_FILES = ${CGAL_PACKAGE_DOC_DIR}/fig/selfintersections.jpg \ No newline at end of file +HTML_EXTRA_FILES = ${CGAL_PACKAGE_DOC_DIR}/fig/selfintersections.jpg From 9f9bd9b1fd4ecb295692c0201b6ebf39d62ce641 Mon Sep 17 00:00:00 2001 From: Maxime Gimeno Date: Mon, 25 Mar 2019 09:12:28 +0100 Subject: [PATCH 25/65] Set the initial transformation to Translation to get the maximum length and set the box horizontal policy to fixed. Also move a button to gain space. --- .../Plugins/PCA/Affine_transform_plugin.cpp | 2 ++ .../Plugins/PCA/Transformation_widget.ui | 35 ++++++++++++------- 2 files changed, 24 insertions(+), 13 deletions(-) diff --git a/Polyhedron/demo/Polyhedron/Plugins/PCA/Affine_transform_plugin.cpp b/Polyhedron/demo/Polyhedron/Plugins/PCA/Affine_transform_plugin.cpp index 33882b8d858..d55d517ddea 100644 --- a/Polyhedron/demo/Polyhedron/Plugins/PCA/Affine_transform_plugin.cpp +++ b/Polyhedron/demo/Polyhedron/Plugins/PCA/Affine_transform_plugin.cpp @@ -239,6 +239,8 @@ public: this, &Polyhedron_demo_affine_transform_plugin::clear); connect(ui.undoButton, &QPushButton::clicked, this, &Polyhedron_demo_affine_transform_plugin::undo); + //initial state is Translation: no need for this one + ui.lineEditA->hide(); } void start(FaceGraph *facegraph, const QString name, const Scene_item::Bbox&); diff --git a/Polyhedron/demo/Polyhedron/Plugins/PCA/Transformation_widget.ui b/Polyhedron/demo/Polyhedron/Plugins/PCA/Transformation_widget.ui index 7b11ecfb571..44bc587d253 100644 --- a/Polyhedron/demo/Polyhedron/Plugins/PCA/Transformation_widget.ui +++ b/Polyhedron/demo/Polyhedron/Plugins/PCA/Transformation_widget.ui @@ -6,7 +6,7 @@ 0 0 - 430 + 328 413 @@ -160,12 +160,21 @@ - + + + + 0 + 0 + + Angle, axis coordinates + + 1 + Rotation: @@ -234,20 +243,10 @@ - - - - Saves the current state and applies the transformation. - - - Apply - - - - + @@ -271,6 +270,16 @@ + + + + Saves the current state and applies the transformation. + + + Apply + + + From e2becb4e54ca15d082b0f7f56d2877d72e15dac0 Mon Sep 17 00:00:00 2001 From: Maxime Gimeno Date: Mon, 25 Mar 2019 10:24:33 +0100 Subject: [PATCH 26/65] Fix warning for CMP0071 --- .../demo/Hyperbolic_triangulation_2/CMakeLists.txt | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/Hyperbolic_triangulation_2/demo/Hyperbolic_triangulation_2/CMakeLists.txt b/Hyperbolic_triangulation_2/demo/Hyperbolic_triangulation_2/CMakeLists.txt index 9b6a302a29a..70337214193 100644 --- a/Hyperbolic_triangulation_2/demo/Hyperbolic_triangulation_2/CMakeLists.txt +++ b/Hyperbolic_triangulation_2/demo/Hyperbolic_triangulation_2/CMakeLists.txt @@ -8,6 +8,10 @@ set(CMAKE_AUTOMOC ON) cmake_minimum_required(VERSION 3.1...3.13) +if(POLICY CMP0071) + cmake_policy(SET CMP0071 NEW) +endif() + find_package(CGAL QUIET COMPONENTS Core Qt5) find_package(Qt5 QUIET COMPONENTS Widgets) From 801eb23ca362506a8bc853c523eadee763446fc3 Mon Sep 17 00:00:00 2001 From: Maxime Gimeno Date: Mon, 25 Mar 2019 12:09:04 +0100 Subject: [PATCH 27/65] Fix uninit warning in PMP --- .../CGAL/Polygon_mesh_processing/repair_polygon_soup.h | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/Polygon_mesh_processing/include/CGAL/Polygon_mesh_processing/repair_polygon_soup.h b/Polygon_mesh_processing/include/CGAL/Polygon_mesh_processing/repair_polygon_soup.h index 7ac9ac2a1ba..87f22320451 100644 --- a/Polygon_mesh_processing/include/CGAL/Polygon_mesh_processing/repair_polygon_soup.h +++ b/Polygon_mesh_processing/include/CGAL/Polygon_mesh_processing/repair_polygon_soup.h @@ -641,7 +641,11 @@ Polygon construct_canonical_polygon(const PointRange& points, const Traits& traits = Traits()) { if(polygon.size() < 2) + { + reversed = false; return polygon; + } + #ifdef CGAL_PMP_REPAIR_POLYGON_SOUP_VERBOSE_PP std::cout << "Input polygon:"; From 24d5971372502b3304fcfe1aa39d21eafc7b432c Mon Sep 17 00:00:00 2001 From: Maxime Gimeno Date: Mon, 25 Mar 2019 14:58:35 +0100 Subject: [PATCH 28/65] Test that norm != 0 in normalize() --- .../include/CGAL/Polygon_mesh_processing/compute_normal.h | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/Polygon_mesh_processing/include/CGAL/Polygon_mesh_processing/compute_normal.h b/Polygon_mesh_processing/include/CGAL/Polygon_mesh_processing/compute_normal.h index 8a9d9847f7b..4e01c5490a7 100644 --- a/Polygon_mesh_processing/include/CGAL/Polygon_mesh_processing/compute_normal.h +++ b/Polygon_mesh_processing/include/CGAL/Polygon_mesh_processing/compute_normal.h @@ -49,7 +49,9 @@ namespace internal { { typename GT::FT norm = CGAL::approximate_sqrt( traits.compute_squared_length_3_object()(v)); - v = traits.construct_divided_vector_3_object()(v, norm); + //If the vector is small enough, approx_sqrt might return 0, and then we get nan values. + //To avoid that, we check the resulted norm. If it is 0, we don't normalize. + v = traits.construct_divided_vector_3_object()(v, norm == 0 ? 1 : norm); } template Date: Mon, 25 Mar 2019 16:06:20 +0100 Subject: [PATCH 29/65] Don't use ternary operator --- .../include/CGAL/Polygon_mesh_processing/compute_normal.h | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/Polygon_mesh_processing/include/CGAL/Polygon_mesh_processing/compute_normal.h b/Polygon_mesh_processing/include/CGAL/Polygon_mesh_processing/compute_normal.h index 4e01c5490a7..e3d52c2bcef 100644 --- a/Polygon_mesh_processing/include/CGAL/Polygon_mesh_processing/compute_normal.h +++ b/Polygon_mesh_processing/include/CGAL/Polygon_mesh_processing/compute_normal.h @@ -51,7 +51,10 @@ namespace internal { traits.compute_squared_length_3_object()(v)); //If the vector is small enough, approx_sqrt might return 0, and then we get nan values. //To avoid that, we check the resulted norm. If it is 0, we don't normalize. - v = traits.construct_divided_vector_3_object()(v, norm == 0 ? 1 : norm); + if(norm != 0) + { + v = traits.construct_divided_vector_3_object()(v, norm ); + } } template Date: Tue, 26 Mar 2019 10:39:17 +0100 Subject: [PATCH 30/65] Set BUILD_TESTING, otherwise CTest does not see any test --- Scripts/developer_scripts/run_testsuite_with_cmake | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Scripts/developer_scripts/run_testsuite_with_cmake b/Scripts/developer_scripts/run_testsuite_with_cmake index 705682d3538..dc23bc51c09 100644 --- a/Scripts/developer_scripts/run_testsuite_with_cmake +++ b/Scripts/developer_scripts/run_testsuite_with_cmake @@ -266,9 +266,9 @@ run_test_on_platform() CMAKE_OPTS="${CMAKE_OPTS} -DWITH_examples=ON -DWITH_demos=ON" fi if [ -z "${SHOW_PROGRESS}" ]; then - cmake ${INIT_FILE:+"-C${INIT_FILE}"} '${CMAKE_GENERATOR}' ${CMAKE_OPTS} $CGAL_DIR 2>&1 >package_installation.log + cmake ${INIT_FILE:+"-C${INIT_FILE}"} '${CMAKE_GENERATOR}' -DBUILD_TESTING=ON ${CMAKE_OPTS} $CGAL_DIR 2>&1 >package_installation.log else - cmake ${INIT_FILE:+"-C${INIT_FILE}"} '${CMAKE_GENERATOR}' ${CMAKE_OPTS} $CGAL_DIR 2>&1 |tee package_installation.log + cmake ${INIT_FILE:+"-C${INIT_FILE}"} '${CMAKE_GENERATOR}' -DBUILD_TESTING=ON ${CMAKE_OPTS} $CGAL_DIR 2>&1 |tee package_installation.log fi LIST_TEST_FILE="${CGAL_ROOT}/list_test_packages" if [ -f ${LIST_TEST_FILE} ]; then From aa743e574b0364bed0bd2ca4afcf2a989da57a9c Mon Sep 17 00:00:00 2001 From: Laurent Rineau Date: Tue, 26 Mar 2019 10:39:37 +0100 Subject: [PATCH 31/65] Set CMAKE_VERBOSE_MAKEFILE That will allow to see the compilation commands. --- Scripts/developer_scripts/run_testsuite_with_cmake | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Scripts/developer_scripts/run_testsuite_with_cmake b/Scripts/developer_scripts/run_testsuite_with_cmake index dc23bc51c09..26cb5cc0593 100644 --- a/Scripts/developer_scripts/run_testsuite_with_cmake +++ b/Scripts/developer_scripts/run_testsuite_with_cmake @@ -261,7 +261,7 @@ run_test_on_platform() fi cmake ${INIT_FILE:+"-C${INIT_FILE}"} '${CMAKE_GENERATOR}' -DBUILD_TESTING=OFF -DWITH_tests=OFF -DWITH_CGAL_Qt5=OFF -DCGAL_HEADER_ONLY=ON $CGAL_DIR>installation.log 2>&1 rm CMakeCache.txt - CMAKE_OPTS="-DCGAL_TEST_SUITE=ON" + CMAKE_OPTS="-DCGAL_TEST_SUITE=ON -DCMAKE_VERBOSE_MAKEFILE=ON" if [ -n "${SCRIPTS_DIR}" ]; then CMAKE_OPTS="${CMAKE_OPTS} -DWITH_examples=ON -DWITH_demos=ON" fi From 5ef409f74eb9de9fbed7a8553f1fffd1be668c2c Mon Sep 17 00:00:00 2001 From: Laurent Rineau Date: Tue, 26 Mar 2019 10:40:02 +0100 Subject: [PATCH 32/65] Propagate flags (like -x) to one bash to another --- Scripts/developer_scripts/autotest_cgal_with_ctest | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Scripts/developer_scripts/autotest_cgal_with_ctest b/Scripts/developer_scripts/autotest_cgal_with_ctest index c089047069a..cd954740e7d 100755 --- a/Scripts/developer_scripts/autotest_cgal_with_ctest +++ b/Scripts/developer_scripts/autotest_cgal_with_ctest @@ -278,7 +278,7 @@ for HOST in ${BUILD_HOSTS}; do docker run --rm -t -e HOST="${HOST}" -v ${CGAL_ROOT}/ssh:/tmp_ssh -v ${DEPS_DIR}:/deps -v ${CGAL_ROOT}:/cgal_root -v${CGAL_DIR}:/cgal_root/CGAL-git cgal/testsuite-docker:debian-stable-cross-compilation-for-arm fi else - HOST=$HOST bash ${CGAL_DIR}/${SCRIPTS_DIR}developer_scripts/run_testsuite_with_cmake + HOST=$HOST bash -$- ${CGAL_DIR}/${SCRIPTS_DIR}developer_scripts/run_testsuite_with_cmake fi done From bc6954af018b6f7cdc22f5e8e5f0da4ad8ee6f46 Mon Sep 17 00:00:00 2001 From: Laurent Rineau Date: Tue, 26 Mar 2019 10:49:00 +0100 Subject: [PATCH 33/65] Fix an error in Fedora RPM ``` CGAL-devel.x86_64: E: zero-length /usr/lib64/cmake/CGAL/config/support/test_syntaxonly.cpp ``` https://taskotron.fedoraproject.org/artifacts/all/bf72d02c-4aff-11e9-a48a-525400fc9f92/tests.yml/CGAL-4.14-0.1beta2.fc30.log --- Installation/cmake/modules/config/support/test_syntaxonly.cpp | 1 + 1 file changed, 1 insertion(+) diff --git a/Installation/cmake/modules/config/support/test_syntaxonly.cpp b/Installation/cmake/modules/config/support/test_syntaxonly.cpp index e69de29bb2d..237c8ce1817 100644 --- a/Installation/cmake/modules/config/support/test_syntaxonly.cpp +++ b/Installation/cmake/modules/config/support/test_syntaxonly.cpp @@ -0,0 +1 @@ +int main() {} From 15d74af234a54b665d3f48e6406604cf6b6e8f5f Mon Sep 17 00:00:00 2001 From: Laurent Rineau Date: Tue, 26 Mar 2019 10:49:31 +0100 Subject: [PATCH 34/65] Bump the SONAME of libCGAL_Qt5.so ``` ABI changes between build CGAL-4.14-0.1beta2.fc30 and its latest stable build ================================================================================ This file contains possible ABI changes which have occurred due to this package update against latest stable build available in koji for the given Fedora release. If you want to filter out these kind of ABI changes in the future, you can add a proper .abignore file to this package. To know more about how to write one, please look at the wiki page https://fedoraproject.org/wiki/Taskotron/Tasks/dist.abicheck#filtering . On armv7hl architecture ************************* * No ABI change between: CGAL-devel-4.13-3.fc30.armv7hl.rpm CGAL-devel-4.14-0.1beta2.fc30.armv7hl.rpm ABI comparison took 8.88 second(s). * ABI changes found between: CGAL-4.13-3.fc30.armv7hl.rpm CGAL-4.14-0.1beta2.fc30.armv7hl.rpm ABI comparison took 11.54 second(s). Please review them. ================ changes of 'libCGAL_Qt5.so.13.0.2'=============== Functions changes summary: 0 Removed, 1 Changed, 0 Added function Variables changes summary: 0 Removed, 0 Changed, 0 Added variable 1 function with some indirect sub-type change: [C]'method CGAL::Qt::DemosMainWindow::DemosMainWindow(QWidget*, Qt::WindowFlags)' at DemosMainWindow_impl.h:62:1 has some indirect sub-type changes: return type changed: in pointed to type 'class CGAL::Qt::DemosMainWindow' at DemosMainWindow.h:52:1: type size changed from 544 to 608 (in bits) 1 data member insertion: 'QSettings CGAL::Qt::DemosMainWindow::settings', at offset 544 (in bits) at DemosMainWindow.h:129:1 ================ end of changes of 'libCGAL_Qt5.so.13.0.2'=============== Removed binaries: /usr/lib/libCGAL_ImageIO.so.13.0.2, SONAME: libCGAL_ImageIO.so.13 Added binaries: /usr/lib/libCGAL_ImageIO.so.14.0.0, SONAME: libCGAL_ImageIO.so.14 * No ABI change between: CGAL-demos-source-4.13-3.fc30.armv7hl.rpm CGAL-demos-source-4.14-0.1beta2.fc30.armv7hl.rpm ABI comparison took 8.67 second(s). ``` https://taskotron.fedoraproject.org/artifacts/all/bfca5e3c-4aff-11e9-b891-525400fc9f92/tests.yml/CGAL-4.14-0.1beta2.fc30.log --- Installation/CMakeLists.txt | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/Installation/CMakeLists.txt b/Installation/CMakeLists.txt index 0a1e33d64ab..18133ff36fc 100644 --- a/Installation/CMakeLists.txt +++ b/Installation/CMakeLists.txt @@ -367,13 +367,16 @@ endif() # CGAL-4.11 : 13.0.1 (Nothing different in CGAL compiled libraries.) # CGAL-4.12 : 13.0.2 (Nothing different in CGAL compiled libraries.) # CGAL-4.14 : 14.0.0 , but only for CGAL_ImageIO (ABI broken in CGAL::Image_3.) -# CGAL-4.14 : 13.0.3 , for other libraries +# and for CGAL_Qt5 (ABI broken in DemoMainWindow) +# CGAL-4.14 : 13.0.3 , for other libraries # ¹) According to http://upstream-tracker.org/versions/cgal.html set( CGAL_SONAME_VERSION "13" ) set( CGAL_SOVERSION "13.0.3" ) set( CGAL_ImageIO_SONAME_VERSION "14" ) set( CGAL_ImageIO_SOVERSION "14.0.0" ) +set( CGAL_Qt5_SONAME_VERSION "14" ) +set( CGAL_Qt5_SOVERSION "14.0.0" ) message( STATUS "CGAL_SONAME_VERSION=${CGAL_SONAME_VERSION}" ) message( STATUS "CGAL_SOVERSION =${CGAL_SOVERSION}" ) From a43b0a3919269920f74b9d7a57a546bf518a5f00 Mon Sep 17 00:00:00 2001 From: Laurent Rineau Date: Tue, 26 Mar 2019 11:18:05 +0100 Subject: [PATCH 35/65] updated crontab (automated commit) --- Maintenance/infrastructure/cgal.geometryfactory.com/crontab | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Maintenance/infrastructure/cgal.geometryfactory.com/crontab b/Maintenance/infrastructure/cgal.geometryfactory.com/crontab index fdb08e77281..0d5951affc4 100644 --- a/Maintenance/infrastructure/cgal.geometryfactory.com/crontab +++ b/Maintenance/infrastructure/cgal.geometryfactory.com/crontab @@ -23,9 +23,9 @@ LC_CTYPE=en_US.UTF-8 # The script also updates the manual tools. # "master" alone -0 21 * * Sun cd $HOME/CGAL/create_internal_release && /usr/bin/time $HOME/bin/create_release $HOME/CGAL/branches/master.git --public --beta 2 --do-it || echo ERROR +0 21 * * Sun cd $HOME/CGAL/create_internal_release && /usr/bin/time $HOME/bin/create_release $HOME/CGAL/branches/master.git --public --beta 3 --do-it || echo ERROR # "integration" -0 21 * * Mon,Tue,Wed,Thu,Fri cd $HOME/CGAL/create_internal_release && /usr/bin/time $HOME/bin/create_release $HOME/CGAL/branches/integration.git $HOME/CGAL/branches/empty-dir --public --beta 2 --do-it || echo ERROR +0 21 * * Mon,Tue,Wed,Thu,Fri cd $HOME/CGAL/create_internal_release && /usr/bin/time $HOME/bin/create_release $HOME/CGAL/branches/integration.git $HOME/CGAL/branches/empty-dir --public --beta 3 --do-it || echo ERROR # from branch 4.13 #0 21 * * Sat cd $HOME/CGAL/create_internal_release-4.13-branch && /usr/bin/time $HOME/bin/create_release $HOME/CGAL/branches/CGAL-4.13-branch.git --public --do-it || echo ERROR # from branch 4.12 From ab534c5e6057e6f2d2488cd965105b0231ac2065 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?S=C3=A9bastien=20Loriot?= Date: Tue, 26 Mar 2019 14:45:06 +0100 Subject: [PATCH 36/65] use relative path --- Documentation/doc/scripts/generate_how_to_cite.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Documentation/doc/scripts/generate_how_to_cite.py b/Documentation/doc/scripts/generate_how_to_cite.py index 1167b885ae0..75602d98a19 100644 --- a/Documentation/doc/scripts/generate_how_to_cite.py +++ b/Documentation/doc/scripts/generate_how_to_cite.py @@ -118,7 +118,7 @@ def gen_txt_entry(title, authors, bib, anchor,k): In %CGAL User and Reference Manual. %CGAL Editorial Board,\n\ ${CGAL_CREATED_VERSION_NUM} edition, ${CGAL_BUILD_YEAR4}.\n\ [ bib | \n\ -http ]\n\ +http ]\n\ \n\ \n\ \n\n\n" From 387843d94657fd0d352f67b49e791908e8ca3b81 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?S=C3=A9bastien=20Loriot?= Date: Tue, 26 Mar 2019 14:45:17 +0100 Subject: [PATCH 37/65] Ignore -Ic-XXX for the version in the doc --- Documentation/doc/CMakeLists.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Documentation/doc/CMakeLists.txt b/Documentation/doc/CMakeLists.txt index 0ecafab9f7c..1069aa996cb 100644 --- a/Documentation/doc/CMakeLists.txt +++ b/Documentation/doc/CMakeLists.txt @@ -256,7 +256,7 @@ if (NOT CGAL_CREATED_VERSION_NUM) #read version.h and get the line with CGAL_VERSION file(STRINGS "${CGAL_ROOT}/include/CGAL/version.h" CGAL_VERSION_LINE REGEX "CGAL_VERSION ") #extract release id - string(REGEX MATCH "[0-9]+\\.[0-9]+\\.?[0-9]*(-Ic-)?[0-9]*" CGAL_CREATED_VERSION_NUM "${CGAL_VERSION_LINE}") + string(REGEX MATCH "[0-9]+\\.[0-9]+\\.?[0-9]*" CGAL_CREATED_VERSION_NUM "${CGAL_VERSION_LINE}") endif() endif() From 49a109fa363299753dab7816eb541f12baa7e00b Mon Sep 17 00:00:00 2001 From: Maxime Gimeno Date: Tue, 26 Mar 2019 15:06:40 +0100 Subject: [PATCH 38/65] Add a button to enable clipping 2D to avoid conflict with selection --- .../Plugins/PCA/Clipping_box_plugin.cpp | 21 ++++++++++--- .../Plugins/PCA/Clipping_box_widget.ui | 31 ++++++++++++++++--- 2 files changed, 42 insertions(+), 10 deletions(-) diff --git a/Polyhedron/demo/Polyhedron/Plugins/PCA/Clipping_box_plugin.cpp b/Polyhedron/demo/Polyhedron/Plugins/PCA/Clipping_box_plugin.cpp index 49a7bd3e090..0b51141785a 100644 --- a/Polyhedron/demo/Polyhedron/Plugins/PCA/Clipping_box_plugin.cpp +++ b/Polyhedron/demo/Polyhedron/Plugins/PCA/Clipping_box_plugin.cpp @@ -70,16 +70,23 @@ void Clipping_box_plugin::init(QMainWindow* mainWindow, CGAL::Three::Scene_inter scene = scene_interface; mw = mainWindow; actionClipbox = new QAction(tr("Create Clipping Box"), mainWindow); - connect(actionClipbox, SIGNAL(triggered()), - this, SLOT(clipbox())); dock_widget = new ClipWidget("Clip box", mw); dock_widget->setVisible(false); // do not show at the beginning addDockWidget(dock_widget); + + + connect(actionClipbox, &QAction::triggered, + this, [this](){ + dock_widget->show(); + dock_widget->raise(); + tab_change(); + }); connect(dock_widget->pushButton, SIGNAL(toggled(bool)), this, SLOT(clip(bool))); CGAL::QGLViewer* viewer = *CGAL::QGLViewer::QGLViewerPool().begin(); + viewer->installEventFilter(this); item = NULL; visualizer = NULL; @@ -95,8 +102,6 @@ void Clipping_box_plugin::clipbox() return; } QApplication::setOverrideCursor(Qt::WaitCursor); - dock_widget->show(); - dock_widget->raise(); if(!item) item = new Scene_edit_box_item(scene); connect(item, SIGNAL(destroyed()), @@ -121,6 +126,10 @@ void Clipping_box_plugin::clipbox() item->setRenderingMode(FlatPlusEdges); CGAL::QGLViewer* viewer = *CGAL::QGLViewer::QGLViewerPool().begin(); viewer->installEventFilter(item); + connect(dock_widget->clipButton, &QPushButton::toggled, + dock_widget->clipButton, [viewer](){ + viewer->setFocus(); + }); scene->addItem(item); actionClipbox->setEnabled(false); @@ -207,7 +216,8 @@ void Clipping_box_plugin::tab_change() bool Clipping_box_plugin::eventFilter(QObject *, QEvent *event) { static QImage background; - if (dock_widget->isHidden() || !(dock_widget->isActiveWindow()) || dock_widget->tabWidget->currentIndex() != 1) + if (dock_widget->isHidden() || !(dock_widget->isActiveWindow()) || dock_widget->tabWidget->currentIndex() != 1 + || (dock_widget->tabWidget->currentIndex() == 1 && !dock_widget->clipButton->isChecked())) return false; if(event->type() == QEvent::KeyPress || event->type() == QEvent::KeyRelease) @@ -317,6 +327,7 @@ bool Clipping_box_plugin::eventFilter(QObject *, QEvent *event) { viewer->enableClippingBox(planes); dock_widget->unclipButton->setEnabled(true); + dock_widget->clipButton->setChecked(false); visualizer = NULL; QApplication::restoreOverrideCursor(); static_cast(viewer)->set2DSelectionMode(false); diff --git a/Polyhedron/demo/Polyhedron/Plugins/PCA/Clipping_box_widget.ui b/Polyhedron/demo/Polyhedron/Plugins/PCA/Clipping_box_widget.ui index 220fa76978a..7c79e142124 100644 --- a/Polyhedron/demo/Polyhedron/Plugins/PCA/Clipping_box_widget.ui +++ b/Polyhedron/demo/Polyhedron/Plugins/PCA/Clipping_box_widget.ui @@ -100,6 +100,16 @@ + + + + Clip + + + true + + + @@ -141,11 +151,22 @@ - - - Info: SHIFT+Click to clip. - - + + + + + Info: SHIFT+Click to clip + + + + + + + While "Clip" is toggled. + + + + From 2a261c1d2f2862859c4e69b790c618f2a964b435 Mon Sep 17 00:00:00 2001 From: Maxime Gimeno Date: Tue, 26 Mar 2019 15:24:28 +0100 Subject: [PATCH 39/65] Fix event filter problems --- .../Plugins/PCA/Clipping_box_plugin.cpp | 17 ++++++++++------- 1 file changed, 10 insertions(+), 7 deletions(-) diff --git a/Polyhedron/demo/Polyhedron/Plugins/PCA/Clipping_box_plugin.cpp b/Polyhedron/demo/Polyhedron/Plugins/PCA/Clipping_box_plugin.cpp index 0b51141785a..b2cc16bce70 100644 --- a/Polyhedron/demo/Polyhedron/Plugins/PCA/Clipping_box_plugin.cpp +++ b/Polyhedron/demo/Polyhedron/Plugins/PCA/Clipping_box_plugin.cpp @@ -87,7 +87,6 @@ void Clipping_box_plugin::init(QMainWindow* mainWindow, CGAL::Three::Scene_inter CGAL::QGLViewer* viewer = *CGAL::QGLViewer::QGLViewerPool().begin(); - viewer->installEventFilter(this); item = NULL; visualizer = NULL; shift_pressing = false; @@ -103,7 +102,10 @@ void Clipping_box_plugin::clipbox() } QApplication::setOverrideCursor(Qt::WaitCursor); if(!item) + { item = new Scene_edit_box_item(scene); + CGAL::QGLViewer::QGLViewerPool().first()->installEventFilter(item); + } connect(item, SIGNAL(destroyed()), this, SLOT(enableAction())); connect(item, &Scene_edit_box_item::aboutToBeDestroyed, @@ -116,7 +118,7 @@ void Clipping_box_plugin::clipbox() this, [this](){ dock_widget->unclipButton->setDisabled(true); CGAL::Three::Viewer_interface* viewer = static_cast( - *CGAL::QGLViewer::QGLViewerPool().begin()); + CGAL::QGLViewer::QGLViewerPool().first()); viewer->disableClippingBox(); viewer->update(); }); @@ -125,11 +127,6 @@ void Clipping_box_plugin::clipbox() item->setName("Clipping box"); item->setRenderingMode(FlatPlusEdges); CGAL::QGLViewer* viewer = *CGAL::QGLViewer::QGLViewerPool().begin(); - viewer->installEventFilter(item); - connect(dock_widget->clipButton, &QPushButton::toggled, - dock_widget->clipButton, [viewer](){ - viewer->setFocus(); - }); scene->addItem(item); actionClipbox->setEnabled(false); @@ -205,6 +202,12 @@ void Clipping_box_plugin::tab_change() item = NULL; } action->setChecked(true); + CGAL::QGLViewer* viewer = *CGAL::QGLViewer::QGLViewerPool().begin(); + connect(dock_widget->clipButton, &QPushButton::toggled, + this, [this, viewer](){ + viewer->setFocus(); + viewer->installEventFilter(this); + }); } else { From 1bd785ae44983dedee816e8ba1181260262fcb82 Mon Sep 17 00:00:00 2001 From: Maxime Gimeno Date: Tue, 26 Mar 2019 15:30:34 +0100 Subject: [PATCH 40/65] Don't select clipped points --- .../Plugins/PCA/Clipping_box_plugin.cpp | 3 -- .../Point_set/Point_set_selection_plugin.cpp | 34 +++++++++++++++++++ Polyhedron/demo/Polyhedron/Viewer.cpp | 10 ++++++ Polyhedron/demo/Polyhedron/Viewer.h | 2 ++ Three/include/CGAL/Three/Viewer_interface.h | 2 ++ 5 files changed, 48 insertions(+), 3 deletions(-) diff --git a/Polyhedron/demo/Polyhedron/Plugins/PCA/Clipping_box_plugin.cpp b/Polyhedron/demo/Polyhedron/Plugins/PCA/Clipping_box_plugin.cpp index b2cc16bce70..a7209a9ac8d 100644 --- a/Polyhedron/demo/Polyhedron/Plugins/PCA/Clipping_box_plugin.cpp +++ b/Polyhedron/demo/Polyhedron/Plugins/PCA/Clipping_box_plugin.cpp @@ -85,8 +85,6 @@ void Clipping_box_plugin::init(QMainWindow* mainWindow, CGAL::Three::Scene_inter connect(dock_widget->pushButton, SIGNAL(toggled(bool)), this, SLOT(clip(bool))); - CGAL::QGLViewer* viewer = *CGAL::QGLViewer::QGLViewerPool().begin(); - item = NULL; visualizer = NULL; shift_pressing = false; @@ -126,7 +124,6 @@ void Clipping_box_plugin::clipbox() this, &Clipping_box_plugin::tab_change); item->setName("Clipping box"); item->setRenderingMode(FlatPlusEdges); - CGAL::QGLViewer* viewer = *CGAL::QGLViewer::QGLViewerPool().begin(); scene->addItem(item); actionClipbox->setEnabled(false); diff --git a/Polyhedron/demo/Polyhedron/Plugins/Point_set/Point_set_selection_plugin.cpp b/Polyhedron/demo/Polyhedron/Plugins/Point_set/Point_set_selection_plugin.cpp index f7623c9baba..5d6ac03f74f 100644 --- a/Polyhedron/demo/Polyhedron/Plugins/Point_set/Point_set_selection_plugin.cpp +++ b/Polyhedron/demo/Polyhedron/Plugins/Point_set/Point_set_selection_plugin.cpp @@ -568,6 +568,31 @@ protected: } protected Q_SLOTS: + + bool is_inside(QVector4D* box, const Kernel::Point_3& p) + { + if(!static_cast(CGAL::QGLViewer::QGLViewerPool().first())->isClipping()){ + return true; + } + double x = p.x(), + y = p.y(), + z = p.z(); + + if(box[0][0]*x+box[0][1]*y+box[0][2]*z+box[0][3]>0) + return false; + if(box[1][0]*x+box[1][1]*y+box[1][2]*z+box[1][3]>0) + return false; + if(box[2][0]*x+box[2][1]*y+box[2][2]*z+box[2][3]>0) + return false; + if(box[3][0]*x+box[3][1]*y+box[3][2]*z+box[3][3]>0) + return false; + if(box[4][0]*x+box[4][1]*y+box[4][2]*z+box[4][3]>0) + return false; + if(box[5][0]*x+box[5][1]*y+box[5][2]*z+box[5][3]>0) + return false; + return true; + } + void select_points() { Scene_points_with_normal_item* point_set_item = getSelectedItem(); @@ -604,6 +629,15 @@ protected Q_SLOTS: [&] (const Point_set::Index& idx) -> bool { return !selected_bitmap[idx]; })); + QVector4D* clipbox = static_cast(viewer)->clipBox(); + for(Point_set::iterator it = points->first_selected(); + it != points->end(); + ++it) + { + if(!is_inside(clipbox, points->point(*it))) + points->unselect(*it); + } + point_set_item->invalidateOpenGLBuffers(); point_set_item->itemChanged(); } diff --git a/Polyhedron/demo/Polyhedron/Viewer.cpp b/Polyhedron/demo/Polyhedron/Viewer.cpp index 444e80d5dde..728464c6133 100644 --- a/Polyhedron/demo/Polyhedron/Viewer.cpp +++ b/Polyhedron/demo/Polyhedron/Viewer.cpp @@ -1683,5 +1683,15 @@ void Viewer::setGlPointSize(const GLfloat &p) { d->gl_point_size = p; } const GLfloat& Viewer::getGlPointSize() const { return d->gl_point_size; } +QVector4D* Viewer::clipBox() const +{ + return d->clipbox; +} + +bool Viewer::isClipping() const +{ + return d->clipping; +} + #include "Viewer.moc" diff --git a/Polyhedron/demo/Polyhedron/Viewer.h b/Polyhedron/demo/Polyhedron/Viewer.h index d86acdeb212..9e494475b05 100644 --- a/Polyhedron/demo/Polyhedron/Viewer.h +++ b/Polyhedron/demo/Polyhedron/Viewer.h @@ -154,6 +154,8 @@ public: float total_pass()Q_DECL_OVERRIDE; const GLfloat& getGlPointSize()const Q_DECL_OVERRIDE; void setGlPointSize(const GLfloat& p) Q_DECL_OVERRIDE; + QVector4D* clipBox() const Q_DECL_OVERRIDE; + bool isClipping() const Q_DECL_OVERRIDE; }; // end class Viewer diff --git a/Three/include/CGAL/Three/Viewer_interface.h b/Three/include/CGAL/Three/Viewer_interface.h index 84a65fb7617..72c5e8cb20d 100644 --- a/Three/include/CGAL/Three/Viewer_interface.h +++ b/Three/include/CGAL/Three/Viewer_interface.h @@ -276,6 +276,8 @@ public: virtual int currentPass()const = 0; virtual bool isDepthWriting()const = 0; virtual QOpenGLFramebufferObject* depthPeelingFbo() = 0; + virtual QVector4D* clipBox() const =0; + virtual bool isClipping() const = 0; }; // end class Viewer_interface } } From 38709a737e1a09feb4662afe8657f8d1968fbdd2 Mon Sep 17 00:00:00 2001 From: Maxime Gimeno Date: Wed, 27 Mar 2019 09:49:46 +0100 Subject: [PATCH 41/65] Fix c3t3 reload --- Polyhedron/demo/Polyhedron/Scene_c3t3_item.cpp | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/Polyhedron/demo/Polyhedron/Scene_c3t3_item.cpp b/Polyhedron/demo/Polyhedron/Scene_c3t3_item.cpp index 949779060ef..4497dac2ceb 100644 --- a/Polyhedron/demo/Polyhedron/Scene_c3t3_item.cpp +++ b/Polyhedron/demo/Polyhedron/Scene_c3t3_item.cpp @@ -2151,6 +2151,11 @@ void Scene_c3t3_item::setAlpha(int alpha) redraw(); } -QSlider* Scene_c3t3_item::alphaSlider() { return d->alphaSlider; } +QSlider* Scene_c3t3_item::alphaSlider() { + if(!d->alphaSlider) + d->computeElements(); + return d->alphaSlider; +} + #include "Scene_c3t3_item.moc" From 71dc56756604d077e11044a39d1b440c29d18f86 Mon Sep 17 00:00:00 2001 From: Simon Giraudot Date: Wed, 27 Mar 2019 10:18:02 +0100 Subject: [PATCH 42/65] Integrate clipping test in selection functor --- .../Point_set/Point_set_selection_plugin.cpp | 65 +++++++++---------- 1 file changed, 30 insertions(+), 35 deletions(-) diff --git a/Polyhedron/demo/Polyhedron/Plugins/Point_set/Point_set_selection_plugin.cpp b/Polyhedron/demo/Polyhedron/Plugins/Point_set/Point_set_selection_plugin.cpp index 5d6ac03f74f..8b6f4f59a26 100644 --- a/Polyhedron/demo/Polyhedron/Plugins/Point_set/Point_set_selection_plugin.cpp +++ b/Polyhedron/demo/Polyhedron/Plugins/Point_set/Point_set_selection_plugin.cpp @@ -58,6 +58,7 @@ class Selection_test { const CGAL::qglviewer::Vec offset; Scene_edit_box_item* edit_box; Selection_visualizer* visualizer; + QVector4D* clipbox; const Ui::PointSetSelection& ui_widget; @@ -69,6 +70,7 @@ public: const CGAL::qglviewer::Vec offset, Scene_edit_box_item* edit_box, Selection_visualizer* visualizer, + QVector4D* clipbox, const Ui::PointSetSelection& ui_widget) : point_set (point_set) , selected (selected) @@ -76,6 +78,7 @@ public: , offset (offset) , edit_box (edit_box) , visualizer (visualizer) + , clipbox (clipbox) , ui_widget (ui_widget) { } @@ -91,8 +94,15 @@ public: void apply (std::size_t i) const { Point_set::Index idx = *(point_set->begin() + i); - const Kernel::Point_3& p = point_set->point (idx); + + // Points outside clipbox are not affected + if (!is_inside_clipbox (p)) + { + selected[idx] = point_set->is_selected (point_set->begin() + i); + return; + } + CGAL::qglviewer::Vec vp (p.x (), p.y (), p.z ()); bool now_selected = false; if(!ui_widget.box->isChecked()) @@ -127,6 +137,22 @@ public: selected[idx] = (already_selected && !now_selected); } } + + bool is_inside_clipbox (const Kernel::Point_3& p) const + { + if(!static_cast(CGAL::QGLViewer::QGLViewerPool().first())->isClipping()) + return true; + + double x = p.x(), y = p.y(), z = p.z(); + + return !(clipbox[0][0]*x+clipbox[0][1]*y+clipbox[0][2]*z+clipbox[0][3]>0 || + clipbox[1][0]*x+clipbox[1][1]*y+clipbox[1][2]*z+clipbox[1][3]>0 || + clipbox[2][0]*x+clipbox[2][1]*y+clipbox[2][2]*z+clipbox[2][3]>0 || + clipbox[3][0]*x+clipbox[3][1]*y+clipbox[3][2]*z+clipbox[3][3]>0 || + clipbox[4][0]*x+clipbox[4][1]*y+clipbox[4][2]*z+clipbox[4][3]>0 || + clipbox[5][0]*x+clipbox[5][1]*y+clipbox[5][2]*z+clipbox[5][3]>0); + } + }; @@ -569,30 +595,6 @@ protected: protected Q_SLOTS: - bool is_inside(QVector4D* box, const Kernel::Point_3& p) - { - if(!static_cast(CGAL::QGLViewer::QGLViewerPool().first())->isClipping()){ - return true; - } - double x = p.x(), - y = p.y(), - z = p.z(); - - if(box[0][0]*x+box[0][1]*y+box[0][2]*z+box[0][3]>0) - return false; - if(box[1][0]*x+box[1][1]*y+box[1][2]*z+box[1][3]>0) - return false; - if(box[2][0]*x+box[2][1]*y+box[2][2]*z+box[2][3]>0) - return false; - if(box[3][0]*x+box[3][1]*y+box[3][2]*z+box[3][3]>0) - return false; - if(box[4][0]*x+box[4][1]*y+box[4][2]*z+box[4][3]>0) - return false; - if(box[5][0]*x+box[5][1]*y+box[5][2]*z+box[5][3]>0) - return false; - return true; - } - void select_points() { Scene_points_with_normal_item* point_set_item = getSelectedItem(); @@ -615,7 +617,9 @@ protected Q_SLOTS: bool* selected_bitmap = new bool[points->size()]; // std::vector is not thread safe Selection_test selection_test (points, selected_bitmap, - camera, offset, edit_box, visualizer, ui_widget); + camera, offset, edit_box, visualizer, + static_cast(viewer)->clipBox(), + ui_widget); #ifdef CGAL_LINKED_WITH_TBB tbb::parallel_for(tbb::blocked_range(0, points->size()), selection_test); @@ -629,15 +633,6 @@ protected Q_SLOTS: [&] (const Point_set::Index& idx) -> bool { return !selected_bitmap[idx]; })); - QVector4D* clipbox = static_cast(viewer)->clipBox(); - for(Point_set::iterator it = points->first_selected(); - it != points->end(); - ++it) - { - if(!is_inside(clipbox, points->point(*it))) - points->unselect(*it); - } - point_set_item->invalidateOpenGLBuffers(); point_set_item->itemChanged(); } From 4353c9990059dca4a7946b4404980858aa21d045 Mon Sep 17 00:00:00 2001 From: Maxime Gimeno Date: Wed, 27 Mar 2019 10:32:48 +0100 Subject: [PATCH 43/65] WIP --- Number_types/include/CGAL/FPU.h | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/Number_types/include/CGAL/FPU.h b/Number_types/include/CGAL/FPU.h index eb2ddcc9c09..c3ff1df1f4d 100644 --- a/Number_types/include/CGAL/FPU.h +++ b/Number_types/include/CGAL/FPU.h @@ -383,7 +383,8 @@ typedef unsigned int FPU_CW_t; #define CGAL_FE_TOWARDZERO _RC_CHOP #define CGAL_FE_UPWARD _RC_UP #define CGAL_FE_DOWNWARD _RC_DOWN - +# elif (defined __VFP_FP__ && !defined __SOFTFP__) || defined __aarch64__ +//to do #else // This is a version following the ISO C99 standard, which aims at portability. // The drawbacks are speed on one hand, and also, on x86, it doesn't fix the From 0ed39cabcab9cb58397507acfbca7e6d27e7b793 Mon Sep 17 00:00:00 2001 From: Maxime Gimeno Date: Wed, 27 Mar 2019 15:28:47 +0100 Subject: [PATCH 44/65] Add support for arm archs in FPU.h --- Number_types/include/CGAL/FPU.h | 19 +++++++++++++++++-- 1 file changed, 17 insertions(+), 2 deletions(-) diff --git a/Number_types/include/CGAL/FPU.h b/Number_types/include/CGAL/FPU.h index c3ff1df1f4d..e6d51192fab 100644 --- a/Number_types/include/CGAL/FPU.h +++ b/Number_types/include/CGAL/FPU.h @@ -383,8 +383,23 @@ typedef unsigned int FPU_CW_t; #define CGAL_FE_TOWARDZERO _RC_CHOP #define CGAL_FE_UPWARD _RC_UP #define CGAL_FE_DOWNWARD _RC_DOWN -# elif (defined __VFP_FP__ && !defined __SOFTFP__) || defined __aarch64__ -//to do +# elif defined __arm__ +#define CGAL_IA_SETFPCW(CW) asm volatile ("VMSR FPSCR, %0" : :"r" (CW)) +#define CGAL_IA_GETFPCW(CW) asm volatile ("VMRS %0, FPSCR" : "=r" (CW)); CW &= CGAL_FE_TOWARDZERO +typedef unsigned int FPU_CW_t; +#define CGAL_FE_TONEAREST (0x0) +#define CGAL_FE_TOWARDZERO (0xC00000) +#define CGAL_FE_UPWARD (0x400000) +#define CGAL_FE_DOWNWARD (0x800000) +# elif defined __aarch64__ +#define CGAL_IA_SETFPCW(CW) asm volatile ("MSR FPCR, %0" : :"r" (CW)) +#define CGAL_IA_GETFPCW(CW) asm volatile ("MRS %0, FPCR" : "=r" (CW)) +typedef unsigned int FPU_CW_t; +#define CGAL_FE_TONEAREST (0x0) +#define CGAL_FE_TOWARDZERO (0xC00000) +#define CGAL_FE_UPWARD (0x400000) +#define CGAL_FE_DOWNWARD (0x800000) + #else // This is a version following the ISO C99 standard, which aims at portability. // The drawbacks are speed on one hand, and also, on x86, it doesn't fix the From 87f08a79ff873d739f56f17a6cc0e0661082009b Mon Sep 17 00:00:00 2001 From: Andreas Fabri Date: Wed, 27 Mar 2019 16:47:10 +0100 Subject: [PATCH 45/65] Add point/segment distance to the Projection_traits so that it can be used in Polyline_simplification_2 --- .../simplify_terrain.cin | 1 + .../simplify_terrain.cpp | 50 +++++++++++++++++++ 2 files changed, 51 insertions(+) create mode 100644 Polyline_simplification_2/examples/Polyline_simplification_2/simplify_terrain.cin create mode 100644 Polyline_simplification_2/examples/Polyline_simplification_2/simplify_terrain.cpp diff --git a/Polyline_simplification_2/examples/Polyline_simplification_2/simplify_terrain.cin b/Polyline_simplification_2/examples/Polyline_simplification_2/simplify_terrain.cin new file mode 100644 index 00000000000..37ac2bedd1c --- /dev/null +++ b/Polyline_simplification_2/examples/Polyline_simplification_2/simplify_terrain.cin @@ -0,0 +1 @@ +4 0 0 0 1 0 0 2 4 0 3 10 0 diff --git a/Polyline_simplification_2/examples/Polyline_simplification_2/simplify_terrain.cpp b/Polyline_simplification_2/examples/Polyline_simplification_2/simplify_terrain.cpp new file mode 100644 index 00000000000..4ba1a4d41d7 --- /dev/null +++ b/Polyline_simplification_2/examples/Polyline_simplification_2/simplify_terrain.cpp @@ -0,0 +1,50 @@ +#include +#include +#include +#include +#include +#include +#include +#include + +namespace PS = CGAL::Polyline_simplification_2; + +typedef CGAL::Exact_predicates_inexact_constructions_kernel Epic; +typedef CGAL::Projection_traits_xy_3 K; +typedef CGAL::Polygon_2 Polygon_2; + +typedef PS::Vertex_base_2 Vb; +typedef CGAL::Constrained_triangulation_face_base_2 Fb; +typedef CGAL::Triangulation_data_structure_2 TDS; +typedef CGAL::Constrained_Delaunay_triangulation_2 CDT; +typedef CGAL::Constrained_triangulation_plus_2 CT; +typedef CT::Point Point; +typedef CT::Constraint_iterator Constraint_iterator; +typedef CT::Vertices_in_constraint_iterator Vertices_in_constraint_iterator; +typedef CT::Points_in_constraint_iterator Points_in_constraint_iterator; +typedef PS::Stop_below_count_ratio_threshold Stop; +typedef PS::Squared_distance_cost Cost; + +int main() +{ + CT ct; + Polygon_2 P; + while(std::cin >> P){ + ct.insert_constraint(P); + } + PS::simplify(ct, Cost(), Stop(0.5)); + + for(Constraint_iterator cit = ct.constraints_begin(); + cit != ct.constraints_end(); + ++cit) { + std::cout << "simplified polyline" << std::endl; + for(Points_in_constraint_iterator vit = + ct.points_in_constraint_begin(*cit); + vit != ct.points_in_constraint_end(*cit); + ++vit) + std::cout << *vit << std::endl; + } + return 0; +} + + From 9cc37e137127dcce036b7dbd4f3a4a1937a4502c Mon Sep 17 00:00:00 2001 From: Andreas Fabri Date: Wed, 27 Mar 2019 16:52:34 +0100 Subject: [PATCH 46/65] Add a subsection in the User Manual --- Kernel_23/include/CGAL/internal/Projection_traits_3.h | 9 +++++++++ .../Polyline_simplification_2.txt | 6 ++++++ .../doc/Polyline_simplification_2/examples.txt | 1 + .../examples/Polyline_simplification_2/simplify.cpp | 4 +++- 4 files changed, 19 insertions(+), 1 deletion(-) diff --git a/Kernel_23/include/CGAL/internal/Projection_traits_3.h b/Kernel_23/include/CGAL/internal/Projection_traits_3.h index 67e2760cfe2..0f15a7e084f 100644 --- a/Kernel_23/include/CGAL/internal/Projection_traits_3.h +++ b/Kernel_23/include/CGAL/internal/Projection_traits_3.h @@ -248,6 +248,8 @@ public: typedef typename R::Point_2 Point_2; typedef typename R::Line_3 Line_3; typedef typename R::Line_2 Line_2; + typedef typename R::Segment_3 Segment_3; + typedef typename R::Segment_2 Segment_2; typedef typename R::FT RT; typename R::FT x(const Point_3 &p) const { return Projector::x(p); } typename R::FT y(const Point_3 &p) const { return Projector::y(p); } @@ -270,6 +272,13 @@ public: Line_2 l2(project(l.point(0)), project(l.point(1))); return squared_distance(p2, l2); } + + RT operator()(const Segment_3& s, const Point_3& p) const + { + Point_2 p2(project(p)); + Segment_2 s2(project(s.source()), project(s.target())); + return squared_distance(p2, s2); + } }; template diff --git a/Polyline_simplification_2/doc/Polyline_simplification_2/Polyline_simplification_2.txt b/Polyline_simplification_2/doc/Polyline_simplification_2/Polyline_simplification_2.txt index 04d89c86104..d094507e9e2 100644 --- a/Polyline_simplification_2/doc/Polyline_simplification_2/Polyline_simplification_2.txt +++ b/Polyline_simplification_2/doc/Polyline_simplification_2/Polyline_simplification_2.txt @@ -196,6 +196,12 @@ At the end we remove the points that were kept from the constraints. \cgalExample{Polyline_simplification_2/points_and_vertices.cpp} +\subsection Subsection_PolylineSimplification_Terrain Simplification of a Terrain + +It is possible to use the class `Projection_traits_xy_3` in order to simplify polylines in space. +Note that the segment length is computed in the xy-plane, and the polyline must not have any vertical segment. + +\cgalExample{Polyline_simplification_2/simplify_terrain.cpp} \section Section_PolylineSimplification_History Design and Implementation History diff --git a/Polyline_simplification_2/doc/Polyline_simplification_2/examples.txt b/Polyline_simplification_2/doc/Polyline_simplification_2/examples.txt index de187d52b28..a0713d4fd20 100644 --- a/Polyline_simplification_2/doc/Polyline_simplification_2/examples.txt +++ b/Polyline_simplification_2/doc/Polyline_simplification_2/examples.txt @@ -1,5 +1,6 @@ /*! \example Polyline_simplification_2/simplify_polygon.cpp \example Polyline_simplification_2/simplify.cpp +\example Polyline_simplification_2/simplify_terrain.cpp \example Polyline_simplification_2/points_and_vertices.cpp */ diff --git a/Polyline_simplification_2/examples/Polyline_simplification_2/simplify.cpp b/Polyline_simplification_2/examples/Polyline_simplification_2/simplify.cpp index 2e87701e7ba..4ba1a4d41d7 100644 --- a/Polyline_simplification_2/examples/Polyline_simplification_2/simplify.cpp +++ b/Polyline_simplification_2/examples/Polyline_simplification_2/simplify.cpp @@ -1,5 +1,6 @@ #include #include +#include #include #include #include @@ -8,7 +9,8 @@ namespace PS = CGAL::Polyline_simplification_2; -typedef CGAL::Exact_predicates_inexact_constructions_kernel K; +typedef CGAL::Exact_predicates_inexact_constructions_kernel Epic; +typedef CGAL::Projection_traits_xy_3 K; typedef CGAL::Polygon_2 Polygon_2; typedef PS::Vertex_base_2 Vb; From 1b94dd4189e3f4639533f7d7639225bc19232637 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?S=C3=A9bastien=20Loriot?= Date: Wed, 27 Mar 2019 17:12:37 +0100 Subject: [PATCH 47/65] fix the last non-relative link --- Documentation/doc/scripts/generate_how_to_cite.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Documentation/doc/scripts/generate_how_to_cite.py b/Documentation/doc/scripts/generate_how_to_cite.py index 75602d98a19..a791dc3dcb9 100644 --- a/Documentation/doc/scripts/generate_how_to_cite.py +++ b/Documentation/doc/scripts/generate_how_to_cite.py @@ -66,7 +66,7 @@ The %CGAL Project. %CGAL User and Reference Manual. %CGAL Editorial Board, ${CGAL_CREATED_VERSION_NUM} edition, ${CGAL_BUILD_YEAR4}. [ bib | -http ] +http ] From a3f24a1f6eb6c2a740531bac1187111ae915e582 Mon Sep 17 00:00:00 2001 From: Andreas Fabri Date: Wed, 27 Mar 2019 17:22:47 +0100 Subject: [PATCH 48/65] Restore simplifiy.cpp --- .../examples/Polyline_simplification_2/simplify.cpp | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/Polyline_simplification_2/examples/Polyline_simplification_2/simplify.cpp b/Polyline_simplification_2/examples/Polyline_simplification_2/simplify.cpp index 4ba1a4d41d7..2e87701e7ba 100644 --- a/Polyline_simplification_2/examples/Polyline_simplification_2/simplify.cpp +++ b/Polyline_simplification_2/examples/Polyline_simplification_2/simplify.cpp @@ -1,6 +1,5 @@ #include #include -#include #include #include #include @@ -9,8 +8,7 @@ namespace PS = CGAL::Polyline_simplification_2; -typedef CGAL::Exact_predicates_inexact_constructions_kernel Epic; -typedef CGAL::Projection_traits_xy_3 K; +typedef CGAL::Exact_predicates_inexact_constructions_kernel K; typedef CGAL::Polygon_2 Polygon_2; typedef PS::Vertex_base_2 Vb; From 310ce89b9161d0f788e322c23b064884d6ce4b70 Mon Sep 17 00:00:00 2001 From: Laurent Rineau Date: Wed, 27 Mar 2019 17:51:24 +0100 Subject: [PATCH 49/65] Fix the order of link when GMP is a static lib --- Installation/cmake/modules/CGAL_SetupGMP.cmake | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/Installation/cmake/modules/CGAL_SetupGMP.cmake b/Installation/cmake/modules/CGAL_SetupGMP.cmake index b41c2f59334..9e1824220b4 100644 --- a/Installation/cmake/modules/CGAL_SetupGMP.cmake +++ b/Installation/cmake/modules/CGAL_SetupGMP.cmake @@ -61,7 +61,6 @@ function(use_CGAL_GMP_support target) $ $) endif() - target_link_libraries(${target} ${keyword} ${GMP_LIBRARIES}) if(NOT MPFR_IN_CGAL_AUXILIARY) target_include_directories(${target} SYSTEM ${keyword} ${MPFR_INCLUDE_DIR}) else() @@ -69,7 +68,7 @@ function(use_CGAL_GMP_support target) $ $) endif() - target_link_libraries(${target} ${keyword} ${MPFR_LIBRARIES}) + target_link_libraries(${target} ${keyword} ${MPFR_LIBRARIES} ${GMP_LIBRARIES}) if(WITH_GMPXX OR CGAL_WITH_GMPXX) target_include_directories(${target} SYSTEM ${keyword} ${GMPXX_INCLUDE_DIR}) target_link_libraries(${target} ${keyword} ${GMPXX_LIBRARIES}) From e9f36ff5571a0dcb06f912737fa77f7f3521ebd0 Mon Sep 17 00:00:00 2001 From: Laurent Rineau Date: Wed, 27 Mar 2019 18:03:07 +0100 Subject: [PATCH 50/65] Prepare for CGAL-4.14-beta4 --- Installation/include/CGAL/version.h | 4 ++-- Maintenance/release_building/public_release_name | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/Installation/include/CGAL/version.h b/Installation/include/CGAL/version.h index fa2f8d2cbb9..614c578d565 100644 --- a/Installation/include/CGAL/version.h +++ b/Installation/include/CGAL/version.h @@ -25,8 +25,8 @@ #ifndef CGAL_VERSION_H #define CGAL_VERSION_H -#define CGAL_VERSION 4.14-beta3 -#define CGAL_VERSION_NR 1041400930 +#define CGAL_VERSION 4.14-beta4 +#define CGAL_VERSION_NR 1041400940 #define CGAL_SVN_REVISION 99999 #define CGAL_GIT_HASH abcdef #define CGAL_RELEASE_DATE 20190313 diff --git a/Maintenance/release_building/public_release_name b/Maintenance/release_building/public_release_name index 30b65d9d225..7d4a40ab1f1 100644 --- a/Maintenance/release_building/public_release_name +++ b/Maintenance/release_building/public_release_name @@ -1 +1 @@ -CGAL-4.14-beta3 +CGAL-4.14-beta4 From 18a092fc68cddae2a7f232d8697f6a5c92e4958f Mon Sep 17 00:00:00 2001 From: Laurent Rineau Date: Wed, 27 Mar 2019 18:03:55 +0100 Subject: [PATCH 51/65] updated crontab (automated commit) --- Maintenance/infrastructure/cgal.geometryfactory.com/crontab | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Maintenance/infrastructure/cgal.geometryfactory.com/crontab b/Maintenance/infrastructure/cgal.geometryfactory.com/crontab index 0d5951affc4..fd9a2a321b7 100644 --- a/Maintenance/infrastructure/cgal.geometryfactory.com/crontab +++ b/Maintenance/infrastructure/cgal.geometryfactory.com/crontab @@ -23,9 +23,9 @@ LC_CTYPE=en_US.UTF-8 # The script also updates the manual tools. # "master" alone -0 21 * * Sun cd $HOME/CGAL/create_internal_release && /usr/bin/time $HOME/bin/create_release $HOME/CGAL/branches/master.git --public --beta 3 --do-it || echo ERROR +0 21 * * Sun cd $HOME/CGAL/create_internal_release && /usr/bin/time $HOME/bin/create_release $HOME/CGAL/branches/master.git --public --beta 4 --do-it || echo ERROR # "integration" -0 21 * * Mon,Tue,Wed,Thu,Fri cd $HOME/CGAL/create_internal_release && /usr/bin/time $HOME/bin/create_release $HOME/CGAL/branches/integration.git $HOME/CGAL/branches/empty-dir --public --beta 3 --do-it || echo ERROR +0 21 * * Mon,Tue,Wed,Thu,Fri cd $HOME/CGAL/create_internal_release && /usr/bin/time $HOME/bin/create_release $HOME/CGAL/branches/integration.git $HOME/CGAL/branches/empty-dir --public --beta 4 --do-it || echo ERROR # from branch 4.13 #0 21 * * Sat cd $HOME/CGAL/create_internal_release-4.13-branch && /usr/bin/time $HOME/bin/create_release $HOME/CGAL/branches/CGAL-4.13-branch.git --public --do-it || echo ERROR # from branch 4.12 From 1aee92af751a7021c64082c69dfd2ca6c569c67c Mon Sep 17 00:00:00 2001 From: Laurent Rineau Date: Wed, 27 Mar 2019 18:46:20 +0100 Subject: [PATCH 52/65] Fix the name of the macro Thanks Marc! --- Number_types/include/CGAL/FPU.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Number_types/include/CGAL/FPU.h b/Number_types/include/CGAL/FPU.h index e6d51192fab..9a6591d3259 100644 --- a/Number_types/include/CGAL/FPU.h +++ b/Number_types/include/CGAL/FPU.h @@ -383,7 +383,7 @@ typedef unsigned int FPU_CW_t; #define CGAL_FE_TOWARDZERO _RC_CHOP #define CGAL_FE_UPWARD _RC_UP #define CGAL_FE_DOWNWARD _RC_DOWN -# elif defined __arm__ +# elif defined __VFP_FP__ #define CGAL_IA_SETFPCW(CW) asm volatile ("VMSR FPSCR, %0" : :"r" (CW)) #define CGAL_IA_GETFPCW(CW) asm volatile ("VMRS %0, FPSCR" : "=r" (CW)); CW &= CGAL_FE_TOWARDZERO typedef unsigned int FPU_CW_t; From 42cbce9fbf9ad3becb5d1c20ee2eb106b1de7c61 Mon Sep 17 00:00:00 2001 From: Laurent Rineau Date: Thu, 28 Mar 2019 08:55:49 +0100 Subject: [PATCH 53/65] Be aware of __SOFTFP__ --- Number_types/include/CGAL/FPU.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Number_types/include/CGAL/FPU.h b/Number_types/include/CGAL/FPU.h index 9a6591d3259..929687eec74 100644 --- a/Number_types/include/CGAL/FPU.h +++ b/Number_types/include/CGAL/FPU.h @@ -383,7 +383,7 @@ typedef unsigned int FPU_CW_t; #define CGAL_FE_TOWARDZERO _RC_CHOP #define CGAL_FE_UPWARD _RC_UP #define CGAL_FE_DOWNWARD _RC_DOWN -# elif defined __VFP_FP__ +# elif defined __VFP_FP__ && !defined __SOFTFP__ #define CGAL_IA_SETFPCW(CW) asm volatile ("VMSR FPSCR, %0" : :"r" (CW)) #define CGAL_IA_GETFPCW(CW) asm volatile ("VMRS %0, FPSCR" : "=r" (CW)); CW &= CGAL_FE_TOWARDZERO typedef unsigned int FPU_CW_t; From 4b7cc4a896f1ed3f1047b96bb5f90646970aba4a Mon Sep 17 00:00:00 2001 From: Laurent Rineau Date: Thu, 28 Mar 2019 09:04:03 +0100 Subject: [PATCH 54/65] Fix the order of link of GMPXX when GMP is a static library. --- Installation/cmake/modules/CGAL_SetupGMP.cmake | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Installation/cmake/modules/CGAL_SetupGMP.cmake b/Installation/cmake/modules/CGAL_SetupGMP.cmake index 9e1824220b4..0cfe429e48e 100644 --- a/Installation/cmake/modules/CGAL_SetupGMP.cmake +++ b/Installation/cmake/modules/CGAL_SetupGMP.cmake @@ -68,10 +68,10 @@ function(use_CGAL_GMP_support target) $ $) endif() - target_link_libraries(${target} ${keyword} ${MPFR_LIBRARIES} ${GMP_LIBRARIES}) if(WITH_GMPXX OR CGAL_WITH_GMPXX) target_include_directories(${target} SYSTEM ${keyword} ${GMPXX_INCLUDE_DIR}) target_link_libraries(${target} ${keyword} ${GMPXX_LIBRARIES}) target_compile_definitions(${target} ${keyword} CGAL_USE_GMPXX=1) endif() + target_link_libraries(${target} ${keyword} ${MPFR_LIBRARIES} ${GMP_LIBRARIES}) endfunction() From cdd2231e8abde4f9474afb36b4798b95637fc479 Mon Sep 17 00:00:00 2001 From: Jane Tournois Date: Thu, 28 Mar 2019 16:02:06 +0100 Subject: [PATCH 55/65] add two missing 's' (there was no link on these in the doc) --- .../Concepts/MeshComplexWithFeatures_3InTriangulation_3.h | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Mesh_3/doc/Mesh_3/Concepts/MeshComplexWithFeatures_3InTriangulation_3.h b/Mesh_3/doc/Mesh_3/Concepts/MeshComplexWithFeatures_3InTriangulation_3.h index e5d8ab489a2..c3b16a83d3f 100644 --- a/Mesh_3/doc/Mesh_3/Concepts/MeshComplexWithFeatures_3InTriangulation_3.h +++ b/Mesh_3/doc/Mesh_3/Concepts/MeshComplexWithFeatures_3InTriangulation_3.h @@ -203,7 +203,7 @@ Edges_in_complex_iterator edges_in_complex_begin() const; Returns the past-the-end iterator for the above iterator. */ -Edge_in_complex_iterator edges_in_complex_end() const; +Edges_in_complex_iterator edges_in_complex_end() const; /*! @@ -216,7 +216,7 @@ Edges_in_complex_iterator edges_in_complex_begin(Curve_index index) const; Returns the past-the-end iterator for the above iterator. */ -Edge_in_complex_iterator edges_in_complex_end(Curve_index index) const; +Edges_in_complex_iterator edges_in_complex_end(Curve_index index) const; /*! From 99ca804f6dbe2ce8bcc3fb63c46ba97dbecf473f Mon Sep 17 00:00:00 2001 From: Laurent Rineau Date: Thu, 28 Mar 2019 16:45:09 +0100 Subject: [PATCH 56/65] Maybe tonight's internal release will be CGAL-4.14 final --- Installation/include/CGAL/version.h | 6 +++--- Maintenance/release_building/public_release_name | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/Installation/include/CGAL/version.h b/Installation/include/CGAL/version.h index 614c578d565..d2af226f998 100644 --- a/Installation/include/CGAL/version.h +++ b/Installation/include/CGAL/version.h @@ -25,11 +25,11 @@ #ifndef CGAL_VERSION_H #define CGAL_VERSION_H -#define CGAL_VERSION 4.14-beta4 -#define CGAL_VERSION_NR 1041400940 +#define CGAL_VERSION 4.14 +#define CGAL_VERSION_NR 1041400950 #define CGAL_SVN_REVISION 99999 #define CGAL_GIT_HASH abcdef -#define CGAL_RELEASE_DATE 20190313 +#define CGAL_RELEASE_DATE 20190329 #include diff --git a/Maintenance/release_building/public_release_name b/Maintenance/release_building/public_release_name index 7d4a40ab1f1..cc65a091f7a 100644 --- a/Maintenance/release_building/public_release_name +++ b/Maintenance/release_building/public_release_name @@ -1 +1 @@ -CGAL-4.14-beta4 +CGAL-4.14 From 9aaa894219771c8337629d64732e6ac456e7e781 Mon Sep 17 00:00:00 2001 From: Laurent Rineau Date: Thu, 28 Mar 2019 16:46:46 +0100 Subject: [PATCH 57/65] updated crontab (automated commit) --- Maintenance/infrastructure/cgal.geometryfactory.com/crontab | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Maintenance/infrastructure/cgal.geometryfactory.com/crontab b/Maintenance/infrastructure/cgal.geometryfactory.com/crontab index fd9a2a321b7..9a4e7ccb95a 100644 --- a/Maintenance/infrastructure/cgal.geometryfactory.com/crontab +++ b/Maintenance/infrastructure/cgal.geometryfactory.com/crontab @@ -23,9 +23,9 @@ LC_CTYPE=en_US.UTF-8 # The script also updates the manual tools. # "master" alone -0 21 * * Sun cd $HOME/CGAL/create_internal_release && /usr/bin/time $HOME/bin/create_release $HOME/CGAL/branches/master.git --public --beta 4 --do-it || echo ERROR +0 21 * * Sun cd $HOME/CGAL/create_internal_release && /usr/bin/time $HOME/bin/create_release $HOME/CGAL/branches/master.git --public --do-it || echo ERROR # "integration" -0 21 * * Mon,Tue,Wed,Thu,Fri cd $HOME/CGAL/create_internal_release && /usr/bin/time $HOME/bin/create_release $HOME/CGAL/branches/integration.git $HOME/CGAL/branches/empty-dir --public --beta 4 --do-it || echo ERROR +0 21 * * Mon,Tue,Wed,Thu,Fri cd $HOME/CGAL/create_internal_release && /usr/bin/time $HOME/bin/create_release $HOME/CGAL/branches/integration.git $HOME/CGAL/branches/empty-dir --public --do-it || echo ERROR # from branch 4.13 #0 21 * * Sat cd $HOME/CGAL/create_internal_release-4.13-branch && /usr/bin/time $HOME/bin/create_release $HOME/CGAL/branches/CGAL-4.13-branch.git --public --do-it || echo ERROR # from branch 4.12 From 2a4d1abefa540052ad745e8164565fbc70bf5f34 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mael=20Rouxel-Labb=C3=A9?= Date: Thu, 28 Mar 2019 17:30:48 +0100 Subject: [PATCH 58/65] Fixed not reseting edge property when a new element reuses memory --- Surface_mesh/include/CGAL/Surface_mesh/Surface_mesh.h | 1 + 1 file changed, 1 insertion(+) diff --git a/Surface_mesh/include/CGAL/Surface_mesh/Surface_mesh.h b/Surface_mesh/include/CGAL/Surface_mesh/Surface_mesh.h index 39437aff178..f0cc9545228 100644 --- a/Surface_mesh/include/CGAL/Surface_mesh/Surface_mesh.h +++ b/Surface_mesh/include/CGAL/Surface_mesh/Surface_mesh.h @@ -879,6 +879,7 @@ public: --removed_edges_; eremoved_[Edge_index(Halfedge_index(idx))] = false; hprops_.reset(Halfedge_index(idx)); + eprops_.reset(Edge_index(Halfedge_index(idx))); return Halfedge_index(idx); } else { eprops_.push_back(); From 676983ad941700018032bfac4fb3b10159570300 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?S=C3=A9bastien=20Loriot?= Date: Thu, 28 Mar 2019 18:16:08 +0100 Subject: [PATCH 59/65] also reset the property of the opposite halfedge --- Surface_mesh/include/CGAL/Surface_mesh/Surface_mesh.h | 1 + 1 file changed, 1 insertion(+) diff --git a/Surface_mesh/include/CGAL/Surface_mesh/Surface_mesh.h b/Surface_mesh/include/CGAL/Surface_mesh/Surface_mesh.h index f0cc9545228..a8772b55086 100644 --- a/Surface_mesh/include/CGAL/Surface_mesh/Surface_mesh.h +++ b/Surface_mesh/include/CGAL/Surface_mesh/Surface_mesh.h @@ -879,6 +879,7 @@ public: --removed_edges_; eremoved_[Edge_index(Halfedge_index(idx))] = false; hprops_.reset(Halfedge_index(idx)); + hprops_.reset(opposite(Halfedge_index(idx))); eprops_.reset(Edge_index(Halfedge_index(idx))); return Halfedge_index(idx); } else { From da78c5a01f19097bebf3557ccc66a45a9b7cafae Mon Sep 17 00:00:00 2001 From: Laurent Rineau Date: Fri, 29 Mar 2019 15:56:33 +0100 Subject: [PATCH 60/65] Announcement for CGAL-4.14 --- .../public_release/announcement/mailing.eml | 53 ++++++++++++------- 1 file changed, 33 insertions(+), 20 deletions(-) diff --git a/Maintenance/public_release/announcement/mailing.eml b/Maintenance/public_release/announcement/mailing.eml index 0f2f7e78af3..3bbe580b839 100644 --- a/Maintenance/public_release/announcement/mailing.eml +++ b/Maintenance/public_release/announcement/mailing.eml @@ -1,35 +1,48 @@ -Subject: CGAL 4.13 Released, Computational Geometry Algorithms Library +Subject: CGAL 4.14 Released, Computational Geometry Algorithms Library Content-Type: text/plain; charset="utf-8" Body: -The CGAL Open Source Project is pleased to announce the release 4.13 +The CGAL Open Source Project is pleased to announce the release 4.14 of CGAL, the Computational Geometry Algorithms Library. Besides fixes and general enhancement to existing packages, the following -has changed since CGAL 4.12: +has changed since CGAL 4.13: -### 3D Periodic Mesh Generation (new package) +### 2D Periodic Hyperbolic Triangulations (new package) -- This package generates 3-dimensional periodic meshes. It computes - isotropic simplicial meshes for domains described through implicit - functional boundaries over the flat torus (which can also seen in - the Euclidean space as a periodic cube). The output is a periodic - 3D mesh of the domain volume and conformal surface meshes for all - the boundary and subdividing surfaces. The package is closely - related to the 3D Mesh Generation package, with similar concepts, - classes, and API. + - This package allows the computation of Delaunay triangulations of + the Bolza surface. The Bolza surface is the most symmetric + hyperbolic surface of genus 2. Its fundamental domain is the + regular hyperbolic octagon with angles π/4 centered at the origin + of the Poincaré disk. Triangulations of the Bolza surface can be + seen as triangulations of the hyperbolic plane that are periodic + in the four directions defined by the sides of this regular + octagon. + +### 2D Hyperbolic Triangulations (new package) + + - This package allows the computation of Delaunay Triangulations of + sets of points in the Poincaré disk, which is one of the + conformal models for the hyperbolic plane. + +### The Heat Method (new package) + +- This package provides an algorithm that solves the single- or + multiple-source shortest path problem by returning an + approximation of the geodesic distance for all vertices of a + triangle mesh to the closest vertex in a given set of source + vertices. + +### Triangulated Surface Mesh Approximation (new package) + +- This package implements the Variational Shape Approximation method + to approximate an input surface triangle mesh by a simpler surface + triangle mesh. -### Classification - -- This package can now handle classification of surface meshes and - clusters, and can compute features in parallel. - - - -See https://www.cgal.org/2018/10/01/cgal413 / for a complete list of +See https://www.cgal.org/2019/03/29/cgal414/ for a complete list of changes. From 57a41b3d2a288f03010bc12417e7757355fb4764 Mon Sep 17 00:00:00 2001 From: Laurent Rineau Date: Fri, 29 Mar 2019 15:59:03 +0100 Subject: [PATCH 61/65] Towards CGAL-4.14.1 --- Installation/include/CGAL/version.h | 4 ++-- Maintenance/release_building/BUGFIX_NUMBER | 2 +- Maintenance/release_building/public_release_name | 2 +- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/Installation/include/CGAL/version.h b/Installation/include/CGAL/version.h index d2af226f998..aa61a1719f4 100644 --- a/Installation/include/CGAL/version.h +++ b/Installation/include/CGAL/version.h @@ -25,8 +25,8 @@ #ifndef CGAL_VERSION_H #define CGAL_VERSION_H -#define CGAL_VERSION 4.14 -#define CGAL_VERSION_NR 1041400950 +#define CGAL_VERSION 4.14.1 +#define CGAL_VERSION_NR 1041401000 #define CGAL_SVN_REVISION 99999 #define CGAL_GIT_HASH abcdef #define CGAL_RELEASE_DATE 20190329 diff --git a/Maintenance/release_building/BUGFIX_NUMBER b/Maintenance/release_building/BUGFIX_NUMBER index 573541ac970..d00491fd7e5 100644 --- a/Maintenance/release_building/BUGFIX_NUMBER +++ b/Maintenance/release_building/BUGFIX_NUMBER @@ -1 +1 @@ -0 +1 diff --git a/Maintenance/release_building/public_release_name b/Maintenance/release_building/public_release_name index cc65a091f7a..8ee15a183f9 100644 --- a/Maintenance/release_building/public_release_name +++ b/Maintenance/release_building/public_release_name @@ -1 +1 @@ -CGAL-4.14 +CGAL-4.14.1 From e09f692e74a6e51610e7f1e56f6954391437ec95 Mon Sep 17 00:00:00 2001 From: Laurent Rineau Date: Fri, 29 Mar 2019 16:02:15 +0100 Subject: [PATCH 62/65] master now targets CGAL 5.0 --- Installation/include/CGAL/version.h | 4 ++-- Maintenance/release_building/MAJOR_NUMBER | 2 +- Maintenance/release_building/MINOR_NUMBER | 2 +- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/Installation/include/CGAL/version.h b/Installation/include/CGAL/version.h index d2af226f998..a184d38fc1c 100644 --- a/Installation/include/CGAL/version.h +++ b/Installation/include/CGAL/version.h @@ -25,8 +25,8 @@ #ifndef CGAL_VERSION_H #define CGAL_VERSION_H -#define CGAL_VERSION 4.14 -#define CGAL_VERSION_NR 1041400950 +#define CGAL_VERSION 5.0-dev +#define CGAL_VERSION_NR 1050000000 #define CGAL_SVN_REVISION 99999 #define CGAL_GIT_HASH abcdef #define CGAL_RELEASE_DATE 20190329 diff --git a/Maintenance/release_building/MAJOR_NUMBER b/Maintenance/release_building/MAJOR_NUMBER index b8626c4cff2..7ed6ff82de6 100644 --- a/Maintenance/release_building/MAJOR_NUMBER +++ b/Maintenance/release_building/MAJOR_NUMBER @@ -1 +1 @@ -4 +5 diff --git a/Maintenance/release_building/MINOR_NUMBER b/Maintenance/release_building/MINOR_NUMBER index 8351c19397f..573541ac970 100644 --- a/Maintenance/release_building/MINOR_NUMBER +++ b/Maintenance/release_building/MINOR_NUMBER @@ -1 +1 @@ -14 +0 From b1e19672824bc1aa472ef6e984771817eafffd65 Mon Sep 17 00:00:00 2001 From: Laurent Rineau Date: Fri, 29 Mar 2019 16:09:33 +0100 Subject: [PATCH 63/65] Announcement mail for CGAL-4.14: a paragraph about CGAL-5.0/C++14 --- .../public_release/announcement/mailing.eml | 29 ++++++++++--------- 1 file changed, 16 insertions(+), 13 deletions(-) diff --git a/Maintenance/public_release/announcement/mailing.eml b/Maintenance/public_release/announcement/mailing.eml index 3bbe580b839..0e54c433a43 100644 --- a/Maintenance/public_release/announcement/mailing.eml +++ b/Maintenance/public_release/announcement/mailing.eml @@ -5,27 +5,30 @@ Body: The CGAL Open Source Project is pleased to announce the release 4.14 of CGAL, the Computational Geometry Algorithms Library. +This release will be the last one supporting C++98/C++03 compilers, +and the next release, CGAL version 5.0, will require support for +C++14. -Besides fixes and general enhancement to existing packages, the following -has changed since CGAL 4.13: +Besides fixes and general enhancement to existing packages, the +following has changed since CGAL 4.13: ### 2D Periodic Hyperbolic Triangulations (new package) - - This package allows the computation of Delaunay triangulations of - the Bolza surface. The Bolza surface is the most symmetric - hyperbolic surface of genus 2. Its fundamental domain is the - regular hyperbolic octagon with angles π/4 centered at the origin - of the Poincaré disk. Triangulations of the Bolza surface can be - seen as triangulations of the hyperbolic plane that are periodic - in the four directions defined by the sides of this regular - octagon. +- This package allows the computation of Delaunay triangulations of + the Bolza surface. The Bolza surface is the most symmetric + hyperbolic surface of genus 2. Its fundamental domain is the + regular hyperbolic octagon with angles π/4 centered at the origin + of the Poincaré disk. Triangulations of the Bolza surface can be + seen as triangulations of the hyperbolic plane that are periodic + in the four directions defined by the sides of this regular + octagon. ### 2D Hyperbolic Triangulations (new package) - - This package allows the computation of Delaunay Triangulations of - sets of points in the Poincaré disk, which is one of the - conformal models for the hyperbolic plane. +- This package allows the computation of Delaunay Triangulations of + sets of points in the Poincaré disk, which is one of the + conformal models for the hyperbolic plane. ### The Heat Method (new package) From 99fd418c54a82be0bcd408da4538518e923a0029 Mon Sep 17 00:00:00 2001 From: Laurent Rineau Date: Fri, 29 Mar 2019 16:14:11 +0100 Subject: [PATCH 64/65] updated crontab (automated commit) --- Maintenance/infrastructure/cgal.geometryfactory.com/crontab | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Maintenance/infrastructure/cgal.geometryfactory.com/crontab b/Maintenance/infrastructure/cgal.geometryfactory.com/crontab index 9a4e7ccb95a..ef49283f255 100644 --- a/Maintenance/infrastructure/cgal.geometryfactory.com/crontab +++ b/Maintenance/infrastructure/cgal.geometryfactory.com/crontab @@ -25,9 +25,9 @@ LC_CTYPE=en_US.UTF-8 # "master" alone 0 21 * * Sun cd $HOME/CGAL/create_internal_release && /usr/bin/time $HOME/bin/create_release $HOME/CGAL/branches/master.git --public --do-it || echo ERROR # "integration" -0 21 * * Mon,Tue,Wed,Thu,Fri cd $HOME/CGAL/create_internal_release && /usr/bin/time $HOME/bin/create_release $HOME/CGAL/branches/integration.git $HOME/CGAL/branches/empty-dir --public --do-it || echo ERROR +0 21 * * Mon,Tue,Wed,Thu cd $HOME/CGAL/create_internal_release && /usr/bin/time $HOME/bin/create_release $HOME/CGAL/branches/integration.git $HOME/CGAL/branches/empty-dir --public --do-it || echo ERROR # from branch 4.13 -#0 21 * * Sat cd $HOME/CGAL/create_internal_release-4.13-branch && /usr/bin/time $HOME/bin/create_release $HOME/CGAL/branches/CGAL-4.13-branch.git --public --do-it || echo ERROR +0 21 * * Fri cd $HOME/CGAL/create_internal_release-4.13-branch && /usr/bin/time $HOME/bin/create_release $HOME/CGAL/branches/CGAL-4.13-branch.git --public --do-it || echo ERROR # from branch 4.12 0 21 * * Sat cd $HOME/CGAL/create_internal_release-4.12-branch && /usr/bin/time $HOME/bin/create_release $HOME/CGAL/branches/CGAL-4.12-branch.git --public --do-it || echo ERROR # from branch 4.11 From 006ef8080c4a7a75b3e874d256629da7122ddb3e Mon Sep 17 00:00:00 2001 From: Laurent Rineau Date: Mon, 1 Apr 2019 18:18:06 +0200 Subject: [PATCH 65/65] updated crontab (automated commit) --- .../infrastructure/cgal.geometryfactory.com/crontab | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/Maintenance/infrastructure/cgal.geometryfactory.com/crontab b/Maintenance/infrastructure/cgal.geometryfactory.com/crontab index ef49283f255..3ceef002f84 100644 --- a/Maintenance/infrastructure/cgal.geometryfactory.com/crontab +++ b/Maintenance/infrastructure/cgal.geometryfactory.com/crontab @@ -25,11 +25,13 @@ LC_CTYPE=en_US.UTF-8 # "master" alone 0 21 * * Sun cd $HOME/CGAL/create_internal_release && /usr/bin/time $HOME/bin/create_release $HOME/CGAL/branches/master.git --public --do-it || echo ERROR # "integration" -0 21 * * Mon,Tue,Wed,Thu cd $HOME/CGAL/create_internal_release && /usr/bin/time $HOME/bin/create_release $HOME/CGAL/branches/integration.git $HOME/CGAL/branches/empty-dir --public --do-it || echo ERROR +0 21 * * Mon,Tue,Wed,Thu,Fri cd $HOME/CGAL/create_internal_release && /usr/bin/time $HOME/bin/create_release $HOME/CGAL/branches/integration.git $HOME/CGAL/branches/empty-dir --public --do-it || echo ERROR +# from branch 4.14 +0 21 * * Fri cd $HOME/CGAL/create_internal_release-4.14-branch && /usr/bin/time $HOME/bin/create_release $HOME/CGAL/branches/CGAL-4.14-branch.git --public --do-it || echo ERROR # from branch 4.13 -0 21 * * Fri cd $HOME/CGAL/create_internal_release-4.13-branch && /usr/bin/time $HOME/bin/create_release $HOME/CGAL/branches/CGAL-4.13-branch.git --public --do-it || echo ERROR +#0 21 * * Fri cd $HOME/CGAL/create_internal_release-4.13-branch && /usr/bin/time $HOME/bin/create_release $HOME/CGAL/branches/CGAL-4.13-branch.git --public --do-it || echo ERROR # from branch 4.12 -0 21 * * Sat cd $HOME/CGAL/create_internal_release-4.12-branch && /usr/bin/time $HOME/bin/create_release $HOME/CGAL/branches/CGAL-4.12-branch.git --public --do-it || echo ERROR +#0 21 * * Sat cd $HOME/CGAL/create_internal_release-4.12-branch && /usr/bin/time $HOME/bin/create_release $HOME/CGAL/branches/CGAL-4.12-branch.git --public --do-it || echo ERROR # from branch 4.11 #0 21 * * Sat cd $HOME/CGAL/create_internal_release-4.11-branch && /usr/bin/time $HOME/bin/create_release $HOME/CGAL/branches/CGAL-4.11-branch.git --public --do-it || echo ERROR # from branch 4.10