From 80e99153dcbeb30ac1c3c1301e7c530cf8de53da Mon Sep 17 00:00:00 2001 From: Simon Giraudot Date: Thu, 28 Jan 2021 10:30:55 +0100 Subject: [PATCH 001/171] Use Compact Container in DCEL base instead of in place list --- .../include/CGAL/Arr_dcel_base.h | 106 +++++++----------- .../include/CGAL/Compact_container.h | 2 + 2 files changed, 42 insertions(+), 66 deletions(-) diff --git a/Arrangement_on_surface_2/include/CGAL/Arr_dcel_base.h b/Arrangement_on_surface_2/include/CGAL/Arr_dcel_base.h index 16a15d7ea56..e4bae24bf7e 100644 --- a/Arrangement_on_surface_2/include/CGAL/Arr_dcel_base.h +++ b/Arrangement_on_surface_2/include/CGAL/Arr_dcel_base.h @@ -28,7 +28,7 @@ #include #include #include -#include +#include #include #include #include @@ -91,6 +91,9 @@ public: /*! Destructor. */ virtual ~Arr_vertex_base() {} + void* for_compact_container() const { return static_cast(p_pt); } + void for_compact_container(void* ptr) { p_pt = static_cast(ptr); } + // Access/modification for pointer squatting void* inc() const { return p_inc; } void set_inc(void * inc) const @@ -183,6 +186,9 @@ public: /*! Destructor. */ virtual ~Arr_halfedge_base() {} + void* for_compact_container() const { return static_cast(p_cv); } + void for_compact_container(void* ptr) { p_cv = static_cast(ptr); } + /*! Check if the curve pointer is nullptr. */ bool has_null_curve() const { return (p_cv == nullptr); } @@ -284,7 +290,7 @@ template class Arr_isolated_vertex; * The default arrangement DCEL vertex class. */ template -class Arr_vertex : public V, public In_place_list_base > +class Arr_vertex : public V { public: @@ -351,8 +357,7 @@ public: * The default arrangement DCEL halfedge class. */ template -class Arr_halfedge : public H, - public In_place_list_base > +class Arr_halfedge : public H { public: typedef H Base; @@ -504,7 +509,7 @@ public: */ template class Arr_face : public F, - public In_place_list_base > + public Compact_container_base { public: typedef F Base; @@ -695,7 +700,7 @@ public: * Representation of an outer CCB. */ template -class Arr_outer_ccb : public In_place_list_base > { +class Arr_outer_ccb { public: typedef Arr_outer_ccb Self; typedef Arr_halfedge Halfedge; @@ -716,6 +721,9 @@ public: p_f(other.p_f), iter_is_not_singular(other.iter_is_not_singular) { if (other.iter_is_not_singular) iter = other.iter; } + void* for_compact_container() const { return static_cast(p_f); } + void for_compact_container(void* ptr) { p_f = static_cast(ptr); } + /*! Get a halfedge along the component (const version). */ const Halfedge* halfedge() const { return (*iter); } @@ -760,7 +768,7 @@ public: * Representation of an inner CCB. */ template -class Arr_inner_ccb : public In_place_list_base > +class Arr_inner_ccb : public Compact_container_base { public: typedef Arr_inner_ccb Self; @@ -826,8 +834,7 @@ public: * Representation of an isolated vertex. */ template -class Arr_isolated_vertex : -public In_place_list_base > { +class Arr_isolated_vertex { public: typedef Arr_isolated_vertex Self; typedef Arr_face Face; @@ -847,6 +854,9 @@ public: p_f(other.p_f), iter_is_not_singular(other.iter_is_not_singular) { if (other.iter_is_not_singular) iv_it = other.iv_it; } + void* for_compact_container() const { return static_cast(p_f); } + void for_compact_container(void* ptr) { p_f = static_cast(ptr); } + /*! Get the containing face (const version). */ const Face* face() const { return (p_f); } @@ -882,7 +892,8 @@ public: * The arrangement DCEL class. */ template > +// class Allocator = boost::fast_pool_allocator > + class Allocator = CGAL_ALLOCATOR(int)> class Arr_dcel_base { public: // Define the vertex, halfedge and face types. @@ -897,13 +908,6 @@ public: typedef Inner_ccb Hole; protected: - // The vetices, halfedges and faces are stored in three in-place lists. - typedef In_place_list Vertex_list; - typedef In_place_list Halfedge_list; - typedef In_place_list Face_list; - typedef In_place_list Outer_ccb_list; - typedef In_place_list Inner_ccb_list; - typedef In_place_list Iso_vert_list; typedef std::allocator_traits Allocator_traits; typedef typename Allocator_traits::template rebind_alloc Vertex_allocator; @@ -913,6 +917,13 @@ protected: typedef typename Allocator_traits::template rebind_alloc Inner_ccb_allocator; typedef typename Allocator_traits::template rebind_alloc Iso_vert_allocator; + typedef Compact_container Vertex_list; + typedef Compact_container Halfedge_list; + typedef Compact_container Face_list; + typedef Compact_container Outer_ccb_list; + typedef Compact_container Inner_ccb_list; + typedef Compact_container Iso_vert_list; + public: typedef typename Halfedge_list::size_type Size; typedef typename Halfedge_list::size_type size_type; @@ -929,13 +940,6 @@ protected: Inner_ccb_list in_ccbs; // The inner CCBs. Iso_vert_list iso_verts; // The isolated vertices. - Vertex_allocator vertex_alloc; // An allocator for vertices. - Halfedge_allocator halfedge_alloc; // An allocator for halfedges. - Face_allocator face_alloc; // An allocator for faces. - Outer_ccb_allocator out_ccb_alloc; // An allocator for outer CCBs. - Inner_ccb_allocator in_ccb_alloc; // An allocator for inner CCBs. - Iso_vert_allocator iso_vert_alloc; // Allocator for isolated vertices. - public: // Definitions of iterators. typedef typename Vertex_list::iterator Vertex_iterator; @@ -1058,10 +1062,7 @@ public: /*! Create a new vertex. */ Vertex* new_vertex() { - Vertex* v = vertex_alloc.allocate(1); - std::allocator_traits::construct(vertex_alloc,v); - vertices.push_back(*v); - return v; + return &*vertices.emplace(); } /*! Create a new pair of opposite halfedges. */ @@ -1081,37 +1082,25 @@ public: /*! Create a new face. */ Face* new_face() { - Face* f = face_alloc.allocate(1); - std::allocator_traits::construct(face_alloc, f); - faces.push_back (*f); - return(f); + return &*faces.emplace(); } /*! Create a new outer CCB. */ Outer_ccb* new_outer_ccb() { - Outer_ccb* oc = out_ccb_alloc.allocate(1); - std::allocator_traits::construct(out_ccb_alloc, oc); - out_ccbs.push_back(*oc); - return (oc); + return &*out_ccbs.emplace(); } /*! Create a new inner CCB. */ Inner_ccb* new_inner_ccb() { - Inner_ccb* ic = in_ccb_alloc.allocate(1); - std::allocator_traits::construct(in_ccb_alloc, ic); - in_ccbs.push_back(*ic); - return (ic); + return &*in_ccbs.emplace(); } /*! Create a new isolated vertex. */ Isolated_vertex* new_isolated_vertex() { - Isolated_vertex* iv = iso_vert_alloc.allocate(1); - std::allocator_traits::construct(iso_vert_alloc, iv); - iso_verts.push_back(*iv); - return (iv); + return &*iso_verts.emplace(); } //@} @@ -1120,9 +1109,7 @@ public: /*! Delete an existing vertex. */ void delete_vertex(Vertex* v) { - vertices.erase(v); - std::allocator_traits::destroy(vertex_alloc, v); - vertex_alloc.deallocate(v,1); + vertices.erase (vertices.iterator_to(*v)); } /*! Delete an existing pair of opposite halfedges. */ @@ -1136,33 +1123,25 @@ public: /*! Delete an existing face. */ void delete_face(Face* f) { - faces.erase(f); - std::allocator_traits::destroy(face_alloc, f); - face_alloc.deallocate(f, 1); + faces.erase (faces.iterator_to(*f)); } /*! Delete an existing outer CCB. */ void delete_outer_ccb(Outer_ccb* oc) { - out_ccbs.erase(oc); - std::allocator_traits::destroy(out_ccb_alloc, oc); - out_ccb_alloc.deallocate(oc, 1); + out_ccbs.erase (out_ccbs.iterator_to(*oc)); } /*! Delete an existing inner CCB. */ void delete_inner_ccb(Inner_ccb* ic) { - in_ccbs.erase(ic); - std::allocator_traits::destroy(in_ccb_alloc, ic); - in_ccb_alloc.deallocate(ic, 1); + in_ccbs.erase (in_ccbs.iterator_to(*ic)); } /*! Delete an existing isolated vertex. */ void delete_isolated_vertex(Isolated_vertex* iv) { - iso_verts.erase(iv); - std::allocator_traits::destroy(iso_vert_alloc, iv); - iso_vert_alloc.deallocate(iv, 1); + iso_verts.erase (iso_verts.iterator_to(*iv)); } /*! Delete all DCEL features. */ @@ -1421,18 +1400,13 @@ protected: /*! Create a new halfedge. */ Halfedge* _new_halfedge() { - Halfedge* h = halfedge_alloc.allocate(1); - std::allocator_traits::construct(halfedge_alloc, h); - halfedges.push_back(*h); - return (h); + return &*halfedges.emplace(); } /*! Delete an existing halfedge. */ void _delete_halfedge(Halfedge* h) { - halfedges.erase(h); - std::allocator_traits::destroy(halfedge_alloc,h); - halfedge_alloc.deallocate(h, 1); + halfedges.erase (halfedges.iterator_to(*h)); } }; diff --git a/STL_Extension/include/CGAL/Compact_container.h b/STL_Extension/include/CGAL/Compact_container.h index 62751003b5a..9273df1556e 100644 --- a/STL_Extension/include/CGAL/Compact_container.h +++ b/STL_Extension/include/CGAL/Compact_container.h @@ -875,6 +875,8 @@ namespace internal { m_ptr = nullptr; } + CC_iterator(pointer ptr) : m_ptr(ptr) { } + // Converting constructor from mutable to constant iterator template CC_iterator(const CC_iterator< From 2e98995b29e8c010ad94831394f093b506b4cb69 Mon Sep 17 00:00:00 2001 From: Simon Giraudot Date: Thu, 28 Jan 2021 14:24:07 +0100 Subject: [PATCH 002/171] Clean up and use fast pool allocator (faster) --- Arrangement_on_surface_2/include/CGAL/Arr_dcel_base.h | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/Arrangement_on_surface_2/include/CGAL/Arr_dcel_base.h b/Arrangement_on_surface_2/include/CGAL/Arr_dcel_base.h index e4bae24bf7e..4945a52adeb 100644 --- a/Arrangement_on_surface_2/include/CGAL/Arr_dcel_base.h +++ b/Arrangement_on_surface_2/include/CGAL/Arr_dcel_base.h @@ -892,8 +892,7 @@ public: * The arrangement DCEL class. */ template > - class Allocator = CGAL_ALLOCATOR(int)> + class Allocator = boost::fast_pool_allocator > class Arr_dcel_base { public: // Define the vertex, halfedge and face types. From 6bbd72cfde33f76eba3cf692ba969ad3735d802c Mon Sep 17 00:00:00 2001 From: Simon Giraudot Date: Thu, 28 Jan 2021 14:50:26 +0100 Subject: [PATCH 003/171] Fix default constructor of iterators --- HalfedgeDS/include/CGAL/HalfedgeDS_iterator.h | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/HalfedgeDS/include/CGAL/HalfedgeDS_iterator.h b/HalfedgeDS/include/CGAL/HalfedgeDS_iterator.h index 23d1a135eea..e5aa9493fbf 100644 --- a/HalfedgeDS/include/CGAL/HalfedgeDS_iterator.h +++ b/HalfedgeDS/include/CGAL/HalfedgeDS_iterator.h @@ -181,7 +181,7 @@ public: // CREATION // -------- - _HalfedgeDS_facet_circ() : It(0) {} + _HalfedgeDS_facet_circ() : It(nullptr) {} //_HalfedgeDS_facet_circ( pointer p) : It(p) {} _HalfedgeDS_facet_circ( It i) : It(i) {} @@ -241,7 +241,7 @@ public: // CREATION // -------- - _HalfedgeDS_facet_const_circ() : It(0) {} + _HalfedgeDS_facet_const_circ() : It(nullptr) {} _HalfedgeDS_facet_const_circ( pointer p) : It(p) {} _HalfedgeDS_facet_const_circ( It i) : It(i) {} @@ -306,7 +306,7 @@ public: // CREATION // -------- - _HalfedgeDS_vertex_circ() : It(0) {} + _HalfedgeDS_vertex_circ() : It(nullptr) {} //_HalfedgeDS_vertex_circ( pointer p) : It(p) {} _HalfedgeDS_vertex_circ( It i) : It(i) {} @@ -366,7 +366,7 @@ public: // CREATION // -------- - _HalfedgeDS_vertex_const_circ() : It(0) {} + _HalfedgeDS_vertex_const_circ() : It(nullptr) {} _HalfedgeDS_vertex_const_circ( pointer p) : It(p) {} _HalfedgeDS_vertex_const_circ( It i) : It(i) {} From cf547ecd2e5c50fdc6951fa2a9b367f189b372bb Mon Sep 17 00:00:00 2001 From: Jane Tournois Date: Thu, 4 Feb 2021 17:12:40 +0100 Subject: [PATCH 004/171] add a bash script for cygwin that collects all needed dlls to run the demo on Windows --- .../cgal_demo_copy_all_dlls_cygwin.sh | 37 +++++++++++++++++++ 1 file changed, 37 insertions(+) create mode 100644 Scripts/developer_scripts/cgal_demo_copy_all_dlls_cygwin.sh diff --git a/Scripts/developer_scripts/cgal_demo_copy_all_dlls_cygwin.sh b/Scripts/developer_scripts/cgal_demo_copy_all_dlls_cygwin.sh new file mode 100644 index 00000000000..4d7040bee69 --- /dev/null +++ b/Scripts/developer_scripts/cgal_demo_copy_all_dlls_cygwin.sh @@ -0,0 +1,37 @@ +#!/bin/bash + +#use this script from inside the build directory of the Polyhedron demo + +declare config="Release" + +declare target_directory="CGAL_demo_with_dlls" +if [[ ! -d "$target_directory" ]] +then + mkdir $target_directory +fi + +copy_dll() +{ + local dll_full_path="`cygpath --unix --absolute $1`" + echo "copy " $dll_full_path " to " $2 + cp $dll_full_path $2 +} + + +files=($config/*.exe) +files+=($config/*.dll) +files+=(Plugins/*/$config/*.dll) + +for file in "${files[@]}"; do + + # copy exe or dll + copy_dll $file $target_directory + + # list and copy dependencies + cygcheck $file | while read -r dll ; do + + copy_dll $dll $target_directory + + done; #check dependencies + +done #loop over directories From d39744380e1747f9677444cca2f1bdbec40f940f Mon Sep 17 00:00:00 2001 From: Maxime Gimeno Date: Thu, 11 Feb 2021 15:05:10 +0100 Subject: [PATCH 005/171] Fix script --- .../cgal_demo_copy_all_dlls_cygwin.sh | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/Scripts/developer_scripts/cgal_demo_copy_all_dlls_cygwin.sh b/Scripts/developer_scripts/cgal_demo_copy_all_dlls_cygwin.sh index 4d7040bee69..0b1aecf7fad 100644 --- a/Scripts/developer_scripts/cgal_demo_copy_all_dlls_cygwin.sh +++ b/Scripts/developer_scripts/cgal_demo_copy_all_dlls_cygwin.sh @@ -12,9 +12,9 @@ fi copy_dll() { - local dll_full_path="`cygpath --unix --absolute $1`" - echo "copy " $dll_full_path " to " $2 - cp $dll_full_path $2 + local dll_full_path=$(cygpath --unix --absolute "$1") + echo "copy $dll_full_path to $2" + cp "$dll_full_path" "$2" } @@ -25,12 +25,12 @@ files+=(Plugins/*/$config/*.dll) for file in "${files[@]}"; do # copy exe or dll - copy_dll $file $target_directory + copy_dll "$file" "$target_directory" # list and copy dependencies - cygcheck $file | while read -r dll ; do + cygcheck "$file" | while read -r dll ; do - copy_dll $dll $target_directory + copy_dll "$dll" "$target_directory" done; #check dependencies From 5bbc5f0d6f6f9352dabde896e97fdb7b497a40a8 Mon Sep 17 00:00:00 2001 From: Maxime Gimeno Date: Fri, 12 Feb 2021 09:18:15 +0100 Subject: [PATCH 006/171] Add platforms/qwindows.dll management --- .../developer_scripts/cgal_demo_copy_all_dlls_cygwin.sh | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/Scripts/developer_scripts/cgal_demo_copy_all_dlls_cygwin.sh b/Scripts/developer_scripts/cgal_demo_copy_all_dlls_cygwin.sh index 0b1aecf7fad..61de43c3945 100644 --- a/Scripts/developer_scripts/cgal_demo_copy_all_dlls_cygwin.sh +++ b/Scripts/developer_scripts/cgal_demo_copy_all_dlls_cygwin.sh @@ -1,6 +1,7 @@ #!/bin/bash #use this script from inside the build directory of the Polyhedron demo +#Needs the Qt5_DIR env variable set to /lib/cmake/Qt5 declare config="Release" @@ -29,9 +30,10 @@ for file in "${files[@]}"; do # list and copy dependencies cygcheck "$file" | while read -r dll ; do - + copy_dll "$dll" "$target_directory" - + done; #check dependencies - done #loop over directories +mkdir -p "$target_directory/platforms" +cp "$Qt5_DIR/../../../plugins/platforms/qwindows.dll" "$target_directory/platforms" From 7b23a8f8f18a4788caa163e8be720fe0ca7d4c4e Mon Sep 17 00:00:00 2001 From: Maxime Gimeno Date: Mon, 15 Feb 2021 14:42:13 +0100 Subject: [PATCH 007/171] WIP --- Scripts/developer_scripts/autotest_cgal | 39 +++++++++++++++---- .../cgal_demo_copy_all_dlls_cygwin.sh | 12 ++++-- 2 files changed, 40 insertions(+), 11 deletions(-) diff --git a/Scripts/developer_scripts/autotest_cgal b/Scripts/developer_scripts/autotest_cgal index 70830eb86c9..3965f3df616 100755 --- a/Scripts/developer_scripts/autotest_cgal +++ b/Scripts/developer_scripts/autotest_cgal @@ -624,9 +624,9 @@ if [ -f '${LIST_TEST_PACKAGES}' ]; then mkdir '${CGAL_BINARY_DIR}/test' - cp '${CGAL_TEST_DIR}/collect_cgal_testresults_from_cmake' '${CGAL_BINARY_DIR}/test' - cp '${CGAL_TEST_DIR}/makefile2' '${CGAL_BINARY_DIR}/test' - cp '${CGAL_TEST_DIR}/run_testsuite_with_cmake' '${CGAL_BINARY_DIR}/test' + cp '${CGAL_TEST_DIR}/collect_cgal_testresults_from_cmake' '${CGAL_BINARY_DIR}/test' + cp '${CGAL_TEST_DIR}/makefile2' '${CGAL_BINARY_DIR}/test' + cp '${CGAL_TEST_DIR}/run_testsuite_with_cmake' '${CGAL_BINARY_DIR}/test' for PACKAGE in \`source '${LIST_TEST_PACKAGES}' '${CGAL_ROOT}'\`; do @@ -649,14 +649,39 @@ else fi nice ${NICE_OPTIONS} make ${MAKE_OPTS} -k -fmakefile2; EOF - for file in "${CGAL_BINARY_DIR}/localtestscript" "${CGAL_BINARY_DIR}/localtestscript-redo-results-collection"; do - cat >> "$file" <> "$file" <> "$file" <<'EOF' + for demo_dir in *_Demo; do + echo "pushd ${demo_dir}" + pushd "${demo_dir}" + bash ../cgal_demo_copy_all_dlls_cygwin.sh "${demo_dir}_with_dlls" + mv "${demo_dir}_with_dlls" .. + popd + done +EOF +cat >> "$file" <> "${CGAL_BINARY_DIR}/localtestscript" </lib/cmake/Qt5 -declare config="Release" +#No config : in autotest_cgal we use NMake as generator +#If you are using Visual as Generator, declare config="Release" + + +declare config="$PWD" +declare target_directory="$1" -declare target_directory="CGAL_demo_with_dlls" if [[ ! -d "$target_directory" ]] then mkdir $target_directory @@ -34,6 +38,6 @@ for file in "${files[@]}"; do copy_dll "$dll" "$target_directory" done; #check dependencies + mkdir -p "$target_directory/platforms" + cp "$Qt5_DIR/../../../plugins/platforms/qwindows.dll" "$target_directory/platforms" done #loop over directories -mkdir -p "$target_directory/platforms" -cp "$Qt5_DIR/../../../plugins/platforms/qwindows.dll" "$target_directory/platforms" From f4c049ba1ea7a334c4d49d0aeee9c749dd6b96a6 Mon Sep 17 00:00:00 2001 From: Maxime Gimeno Date: Tue, 16 Feb 2021 09:21:30 +0100 Subject: [PATCH 008/171] Final modifications --- Scripts/developer_scripts/autotest_cgal | 46 +++++++------------ .../cgal_demo_copy_all_dlls_cygwin.sh | 14 +++--- 2 files changed, 24 insertions(+), 36 deletions(-) diff --git a/Scripts/developer_scripts/autotest_cgal b/Scripts/developer_scripts/autotest_cgal index 3965f3df616..e7c5af3c333 100755 --- a/Scripts/developer_scripts/autotest_cgal +++ b/Scripts/developer_scripts/autotest_cgal @@ -624,9 +624,9 @@ if [ -f '${LIST_TEST_PACKAGES}' ]; then mkdir '${CGAL_BINARY_DIR}/test' - cp '${CGAL_TEST_DIR}/collect_cgal_testresults_from_cmake' '${CGAL_BINARY_DIR}/test' - cp '${CGAL_TEST_DIR}/makefile2' '${CGAL_BINARY_DIR}/test' - cp '${CGAL_TEST_DIR}/run_testsuite_with_cmake' '${CGAL_BINARY_DIR}/test' + cp '${CGAL_TEST_DIR}/collect_cgal_testresults_from_cmake' '${CGAL_BINARY_DIR}/test' + cp '${CGAL_TEST_DIR}/makefile2' '${CGAL_BINARY_DIR}/test' + cp '${CGAL_TEST_DIR}/run_testsuite_with_cmake' '${CGAL_BINARY_DIR}/test' for PACKAGE in \`source '${LIST_TEST_PACKAGES}' '${CGAL_ROOT}'\`; do @@ -649,39 +649,27 @@ else fi nice ${NICE_OPTIONS} make ${MAKE_OPTS} -k -fmakefile2; EOF -for file in "${CGAL_BINARY_DIR}/localtestscript" "${CGAL_BINARY_DIR}/localtestscript-redo-results-collection"; do - cat >> "$file" <> "$file" <> "$file" <<'EOF' - for demo_dir in *_Demo; do - echo "pushd ${demo_dir}" - pushd "${demo_dir}" - bash ../cgal_demo_copy_all_dlls_cygwin.sh "${demo_dir}_with_dlls" - mv "${demo_dir}_with_dlls" .. - popd - done + cat >> "$file" <<'EOF' + for demo_dir in *_Demo; do + echo "pushd ${demo_dir}" + pushd "${demo_dir}" + bash ../cgal_demo_copy_all_dlls_cygwin.sh "${demo_dir}_with_dlls" + mv "${demo_dir}_with_dlls" .. + popd + done EOF cat >> "$file" <> "${CGAL_BINARY_DIR}/localtestscript" </lib/cmake/Qt5 #No config : in autotest_cgal we use NMake as generator -#If you are using Visual as Generator, declare config="Release" +#If using MSVC Generator, declare config="Release" -declare config="$PWD" +declare config="" declare target_directory="$1" if [[ ! -d "$target_directory" ]] @@ -23,9 +23,9 @@ copy_dll() } -files=($config/*.exe) -files+=($config/*.dll) -files+=(Plugins/*/$config/*.dll) +files=($PWD/$config/*.exe) +files+=($PWD/$config/*.dll) +files+=($PWD/Plugins/*/$config/*.dll) for file in "${files[@]}"; do @@ -38,6 +38,6 @@ for file in "${files[@]}"; do copy_dll "$dll" "$target_directory" done; #check dependencies - mkdir -p "$target_directory/platforms" - cp "$Qt5_DIR/../../../plugins/platforms/qwindows.dll" "$target_directory/platforms" done #loop over directories +mkdir -p "$target_directory/platforms" +cp "$Qt5_DIR/../../../plugins/platforms/qwindows.dll" "$target_directory/platforms" From f1c7186c73c3e6432ccf2ef7670814f36140d562 Mon Sep 17 00:00:00 2001 From: Maxime Gimeno Date: Tue, 16 Feb 2021 10:29:23 +0100 Subject: [PATCH 009/171] make config an argument --- Scripts/developer_scripts/autotest_cgal | 4 ++-- Scripts/developer_scripts/cgal_demo_copy_all_dlls_cygwin.sh | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/Scripts/developer_scripts/autotest_cgal b/Scripts/developer_scripts/autotest_cgal index e7c5af3c333..951af77add7 100755 --- a/Scripts/developer_scripts/autotest_cgal +++ b/Scripts/developer_scripts/autotest_cgal @@ -655,8 +655,8 @@ echo 'COLLECTING RESULTS'; ./collect_cgal_testresults_from_cmake; if [ -n "\$COLLECT_DEMOS_BINARIES" ]; then echo 'COLLECTING DEMOS BINARIES'; - echo "cp ${CGAL_TEST_DIR}/../developer_scripts/cgal_demo_copy_all_dlls_cygwin.sh ${CGAL_BINARY_DIR}/test" - cp "${CGAL_TEST_DIR}/../developer_scripts/cgal_demo_copy_all_dlls_cygwin.sh" "${CGAL_BINARY_DIR}/test" + echo "cp ${CGAL_TEST_DIR}/../developer_scripts/cgal_demo_copy_all_dlls_cygwin.sh ${CGAL_BINARY_DIR}/test \"\"" + cp "${CGAL_TEST_DIR}/../developer_scripts/cgal_demo_copy_all_dlls_cygwin.sh" "${CGAL_BINARY_DIR}/test \"\"" EOF cat >> "$file" <<'EOF' for demo_dir in *_Demo; do diff --git a/Scripts/developer_scripts/cgal_demo_copy_all_dlls_cygwin.sh b/Scripts/developer_scripts/cgal_demo_copy_all_dlls_cygwin.sh index d7e541b8fbc..610b09a9e39 100644 --- a/Scripts/developer_scripts/cgal_demo_copy_all_dlls_cygwin.sh +++ b/Scripts/developer_scripts/cgal_demo_copy_all_dlls_cygwin.sh @@ -7,7 +7,7 @@ #If using MSVC Generator, declare config="Release" -declare config="" +declare config="$2" declare target_directory="$1" if [[ ! -d "$target_directory" ]] From 1de387f71d1dc8a79d3ba37a24d3f4c3dca09d0b Mon Sep 17 00:00:00 2001 From: Maxime Gimeno Date: Thu, 25 Feb 2021 09:07:49 +0100 Subject: [PATCH 010/171] Fix \"\" (and commit it this time...) --- Scripts/developer_scripts/autotest_cgal | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/Scripts/developer_scripts/autotest_cgal b/Scripts/developer_scripts/autotest_cgal index 951af77add7..9decac8ec60 100755 --- a/Scripts/developer_scripts/autotest_cgal +++ b/Scripts/developer_scripts/autotest_cgal @@ -655,14 +655,14 @@ echo 'COLLECTING RESULTS'; ./collect_cgal_testresults_from_cmake; if [ -n "\$COLLECT_DEMOS_BINARIES" ]; then echo 'COLLECTING DEMOS BINARIES'; - echo "cp ${CGAL_TEST_DIR}/../developer_scripts/cgal_demo_copy_all_dlls_cygwin.sh ${CGAL_BINARY_DIR}/test \"\"" - cp "${CGAL_TEST_DIR}/../developer_scripts/cgal_demo_copy_all_dlls_cygwin.sh" "${CGAL_BINARY_DIR}/test \"\"" + echo "cp ${CGAL_TEST_DIR}/../developer_scripts/cgal_demo_copy_all_dlls_cygwin.sh ${CGAL_BINARY_DIR}/test" + cp "${CGAL_TEST_DIR}/../developer_scripts/cgal_demo_copy_all_dlls_cygwin.sh" "${CGAL_BINARY_DIR}/test" EOF cat >> "$file" <<'EOF' for demo_dir in *_Demo; do echo "pushd ${demo_dir}" pushd "${demo_dir}" - bash ../cgal_demo_copy_all_dlls_cygwin.sh "${demo_dir}_with_dlls" + bash ../cgal_demo_copy_all_dlls_cygwin.sh "${demo_dir}_with_dlls \"\"" mv "${demo_dir}_with_dlls" .. popd done From 047a023bc630b01033d43e1cac7e5eec6bfc9165 Mon Sep 17 00:00:00 2001 From: Maxime GIMENO Date: Thu, 25 Feb 2021 10:34:52 +0100 Subject: [PATCH 011/171] Update Scripts/developer_scripts/autotest_cgal Co-authored-by: Laurent Rineau --- Scripts/developer_scripts/autotest_cgal | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Scripts/developer_scripts/autotest_cgal b/Scripts/developer_scripts/autotest_cgal index 9decac8ec60..7b221732195 100755 --- a/Scripts/developer_scripts/autotest_cgal +++ b/Scripts/developer_scripts/autotest_cgal @@ -662,7 +662,7 @@ EOF for demo_dir in *_Demo; do echo "pushd ${demo_dir}" pushd "${demo_dir}" - bash ../cgal_demo_copy_all_dlls_cygwin.sh "${demo_dir}_with_dlls \"\"" + bash ../cgal_demo_copy_all_dlls_cygwin.sh "${demo_dir}_with_dlls" "" mv "${demo_dir}_with_dlls" .. popd done From 497a92cdf740271c2b1bcfc8c63fbf6ec351ed43 Mon Sep 17 00:00:00 2001 From: Maxime Gimeno Date: Wed, 10 Mar 2021 15:56:12 +0100 Subject: [PATCH 012/171] Update script for packaging demos --- .../scripts/precompiled_demos_zips | 66 +++++++++---------- 1 file changed, 33 insertions(+), 33 deletions(-) diff --git a/Maintenance/public_release/scripts/precompiled_demos_zips b/Maintenance/public_release/scripts/precompiled_demos_zips index e733ac3b64d..71b765bc076 100755 --- a/Maintenance/public_release/scripts/precompiled_demos_zips +++ b/Maintenance/public_release/scripts/precompiled_demos_zips @@ -11,41 +11,41 @@ rm -rf Interpolation_Demo rm -rf Triangulation_3_Geomview_demos_Demo # CGAL<=3.7 -pushd AABB_tree_Demo; zip ../AABB_demo.zip * ; popd -pushd Alpha_shapes_3_Demo; zip ../alpha_shape_3.zip * ; popd -pushd Bounding_volumes_Demo; zip ../bounding_volumes_2.zip * ; popd -pushd Circular_kernel_2_Demo; zip ../circular_kernel.zip * ; popd -pushd Periodic_3_triangulation_3_Demo; zip ../periodic_3_triangulation_3.zip *; popd -pushd Periodic_Lloyd_3_Demo; zip ../periodic_3_lloyd.zip *; popd -pushd Polyhedron_Demo; zip -r ../polyhedron_3.zip * ; popd -pushd Segment_Delaunay_graph_2_Demo; zip ../segment_voronoi_diagram_2.zip *; popd -pushd Surface_mesher_Demo; zip ../surface_mesher.zip *; popd -pushd Triangulation_2_Demo; - zip ../regular_triangulation_2.zip Regular_triangulation_2.exe - zip ../constrained_delaunay_triangulation_2.zip Constrained_Delaunay_triangulation_2.exe - zip ../delaunay_triangulation_2.zip Delaunay_triangulation_2.exe +pushd AABB_tree_Demo_with_dlls; zip ../AABB_demo.zip * ; popd +pushd Alpha_shapes_3_Demo_with_dlls; zip ../alpha_shape_3.zip * ; popd +pushd Bounding_volumes_Demo_with_dlls; zip ../bounding_volumes_2.zip * ; popd +pushd Circular_kernel_2_Demo_with_dlls; zip ../circular_kernel.zip * ; popd +pushd Periodic_3_triangulation_3_Demo_with_dlls; zip ../periodic_3_triangulation_3.zip *; popd +pushd Periodic_Lloyd_3_Demo_with_dlls; zip ../periodic_3_lloyd.zip *; popd +pushd Polyhedron_Demo_with_dlls; zip -r ../polyhedron_3.zip * ; popd +pushd Segment_Delaunay_graph_2_Demo_with_dlls; zip ../segment_voronoi_diagram_2.zip *; popd +pushd Surface_mesher_Demo_with_dlls; zip ../surface_mesher.zip *; popd +pushd Triangulation_2_Demo_with_dlls; + zip ../regular_triangulation_2.zip Regular_triangulation_2.exe *.dll platforms; + zip ../constrained_delaunay_triangulation_2.zip Constrained_Delaunay_triangulation_2.exe *.dll platforms; + zip ../delaunay_triangulation_2.zip Delaunay_triangulation_2.exe *.dll platforms; popd # CGAL-3.8 -pushd Largest_empty_rect_2_Demo; zip ../largest_empty_rect_2.zip *; popd -pushd Apollonius_graph_2_Demo; zip ../apollonius_graph_2.zip *; popd -pushd Stream_lines_2_Demo; zip ../streamlines.zip *; popd -pushd Triangulation_3_Demo; zip ../triangulation_3.zip *; popd -#pushd Circular_kernel_3_Demo; zip ../triangulation_3.zip *; popd -pushd Alpha_shapes_2_Demo; zip ../alpha_shapes_2.zip *; popd -pushd Generator_Demo; zip ../generator.zip *; popd -pushd L1_Voronoi_diagram_2_Demo; zip ../l1_voronoi_diagram_2.zip *; popd -pushd Snap_rounding_2_Demo; zip ../snap_rounding_2.zip *; popd -pushd Spatial_searching_2_Demo; zip ../spatial_searching.zip *; popd +pushd Largest_empty_rect_2_Demo_with_dlls; zip ../largest_empty_rect_2.zip *; popd +pushd Apollonius_graph_2_Demo_with_dlls; zip ../apollonius_graph_2.zip *; popd +pushd Stream_lines_2_Demo_with_dlls; zip ../streamlines.zip *; popd +pushd Triangulation_3_Demo_with_dlls; zip ../triangulation_3.zip *; popd +#pushd Circular_kernel_3_Demo_with_dlls; zip ../triangulation_3.zip *; popd +pushd Alpha_shapes_2_Demo_with_dlls; zip ../alpha_shapes_2.zip *; popd +pushd Generator_Demo_with_dlls; zip ../generator.zip *; popd +pushd L1_Voronoi_diagram_2_Demo_with_dlls; zip ../l1_voronoi_diagram_2.zip *; popd +pushd Snap_rounding_2_Demo_with_dlls; zip ../snap_rounding_2.zip *; popd +pushd Spatial_searching_2_Demo_with_dlls; zip ../spatial_searching.zip *; popd # CGAL-4.0 -pushd Linear_cell_complex_Demo; zip ../linear_cell_complex_3.zip *; popd +pushd Linear_cell_complex_Demo_with_dlls; zip ../linear_cell_complex_3.zip *; popd # CGAL-4.2 but was forgot -> published with 4.3 -pushd Arrangement_on_surface_2_Demo; zip ../arrangements_2.zip *; popd +pushd Arrangement_on_surface_2_Demo_with_dlls; zip ../arrangements_2.zip *; popd # CGAL-4.5 -pushd Periodic_2_triangulation_2_Demo; zip ../Periodic_2_Delaunay_triangulation_2.zip *; +pushd Periodic_2_triangulation_2_Demo_with_dlls; zip ../Periodic_2_Delaunay_triangulation_2.zip *; popd # probably an error, in CGAL-4.5: rm -rf Surface_mesh_deformation_Demo @@ -54,18 +54,18 @@ rm -rf Surface_mesh_deformation_Demo rm -rf Circular_kernel_3_Demo # CGAL-4.6 -pushd Polyline_simplification_2_Demo; zip ../polyline_simplification_2.zip *; popd +pushd Polyline_simplification_2_Demo_with_dlls; zip ../polyline_simplification_2.zip *; popd # CGAL-4.7 -pushd Segment_Delaunay_graph_Linf_2_Demo; zip ../segment_voronoi_diagram_2.zip *; popd +pushd Segment_Delaunay_graph_Linf_2_Demo_with_dlls; zip ../segment_voronoi_diagram_2.zip *; popd # CGAL-4.8 -pushd Optimal_transportation_reconstruction_2_Demo; zip ../otr2.zip *; popd +pushd Optimal_transportation_reconstruction_2_Demo_with_dlls; zip ../otr2.zip *; popd #missing demos -pushd Polygon_Demo; zip ../polygon.zip *; popd -pushd Principal_component_analysis_Demo; zip ../pca.zip *; popd -pushd Hyperbolic_triangulation_2_Demo; zip ../Hyperbolic_Delaunay_triangulation_2.zip *; popd -pushd Periodic_4_hyperbolic_triangulation_2_Demo; zip ../Periodic_4_hyperbolic_Delaunay_triangulation_2.zip *; popd +pushd Polygon_Demo_with_dlls; zip ../polygon.zip *; popd +pushd Principal_component_analysis_Demo_with_dlls; zip ../pca.zip *; popd +pushd Hyperbolic_triangulation_2_Demo_with_dlls; zip ../Hyperbolic_Delaunay_triangulation_2.zip *; popd +pushd Periodic_4_hyperbolic_triangulation_2_Demo_with_dlls; zip ../Periodic_4_hyperbolic_Delaunay_triangulation_2.zip *; popd # check echo CHECK now. The following lines should be empty. From 20dc97459475ce757597a4431b13e217dfb0a62c Mon Sep 17 00:00:00 2001 From: Laurent Rineau Date: Wed, 17 Mar 2021 11:28:07 +0100 Subject: [PATCH 013/171] Remove operator/ from CGAL::Mpzf The operator `operator/(Mpfz,Mpfz)` actually implements integral division. With this commit, it is renamed `division((Mpfz,Mpfz)` unless the macro `CGAL_MPZF_DIVISION_OPERATOR` is defined. I have commented the line #define CGAL_MPZF_DIVISION_OPERATOR 1 and that will breaks a lot of CGAL code in this branch. --- Number_types/include/CGAL/Mpzf.h | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/Number_types/include/CGAL/Mpzf.h b/Number_types/include/CGAL/Mpzf.h index 6e482232df0..f850010b90b 100644 --- a/Number_types/include/CGAL/Mpzf.h +++ b/Number_types/include/CGAL/Mpzf.h @@ -10,6 +10,8 @@ // // Author(s) : Marc Glisse +//#define CGAL_MPZF_DIVISION_OPERATOR 1 + #ifndef CGAL_MPZF_H #define CGAL_MPZF_H #include @@ -774,7 +776,11 @@ struct Mpzf { return res; } +#ifndef CGAL_MPZF_DIVISION_OPERATOR + friend Mpzf division(Mpzf const&a, Mpzf const&b){ +#else // CGAL_MPZF_DIVISION_OPERATOR friend Mpzf operator/(Mpzf const&a, Mpzf const&b){ +#endif // CGAL_MPZF_DIVISION_OPERATOR // FIXME: Untested int asize=std::abs(a.size); int bsize=std::abs(b.size); @@ -909,7 +915,11 @@ struct Mpzf { Mpzf& operator+=(Mpzf const&x){ *this=*this+x; return *this; } Mpzf& operator-=(Mpzf const&x){ *this=*this-x; return *this; } Mpzf& operator*=(Mpzf const&x){ *this=*this*x; return *this; } +#ifdef CGAL_MPZF_DIVISION_OPERATOR Mpzf& operator/=(Mpzf const&x){ *this=*this/x; return *this; } +#else // not CGAL_MPZF_DIVISION_OPERATOR + Mpzf& operator/=(Mpzf const&x){ *this=division(*this,x); return *this; } +#endif // not CGAL_MPZF_DIVISION_OPERATOR bool is_canonical () const { if (size == 0) return true; @@ -1096,7 +1106,11 @@ std::istream& operator>> (std::istream& is, Mpzf& a) Type operator()( const Type& x, const Type& y ) const { +#ifdef CGAL_MPZF_DIVISION_OPERATOR return x / y; +#else // not CGAL_MPZF_DIVISION_OPERATOR + return division(x, y); +#endif // not CGAL_MPZF_DIVISION_OPERATOR } }; From b32250242a40b9acfb7eb82788387d2d30be6e39 Mon Sep 17 00:00:00 2001 From: Laurent Rineau Date: Wed, 17 Mar 2021 11:30:21 +0100 Subject: [PATCH 014/171] CGAL_Kernel_pred_RT for Do_intersect_2 and Do_intersect_3 The code is not ready for that. A lot of overloads of `Do_interesect_[23]` are implemented by calling the equivalent overloads from `Intersect_23` (that requires division of coordinates). --- Kernel_23/include/CGAL/Kernel/interface_macros.h | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/Kernel_23/include/CGAL/Kernel/interface_macros.h b/Kernel_23/include/CGAL/Kernel/interface_macros.h index a4caf77e7be..40836bde411 100644 --- a/Kernel_23/include/CGAL/Kernel/interface_macros.h +++ b/Kernel_23/include/CGAL/Kernel/interface_macros.h @@ -494,10 +494,10 @@ CGAL_Kernel_pred_RT(Coplanar_3, coplanar_3_object) CGAL_Kernel_pred(Counterclockwise_in_between_2, counterclockwise_in_between_2_object) -CGAL_Kernel_pred(Do_intersect_2, - do_intersect_2_object) -CGAL_Kernel_pred(Do_intersect_3, - do_intersect_3_object) +CGAL_Kernel_pred_RT(Do_intersect_2, + do_intersect_2_object) +CGAL_Kernel_pred_RT(Do_intersect_3, + do_intersect_3_object) CGAL_Kernel_pred(Equal_xy_3, equal_xy_3_object) CGAL_Kernel_pred(Equal_x_2, From 9c28a543c113716daf74e97fa5c0a102ab0df880 Mon Sep 17 00:00:00 2001 From: Laurent Rineau Date: Thu, 18 Mar 2021 09:38:30 +0100 Subject: [PATCH 015/171] Remove unused CGAL::multiplies and CGAL::division --- NewKernel_d/include/CGAL/NewKernel_d/utils.h | 19 ------------------- 1 file changed, 19 deletions(-) diff --git a/NewKernel_d/include/CGAL/NewKernel_d/utils.h b/NewKernel_d/include/CGAL/NewKernel_d/utils.h index 3a925b3d8d6..1204e1fe669 100644 --- a/NewKernel_d/include/CGAL/NewKernel_d/utils.h +++ b/NewKernel_d/include/CGAL/NewKernel_d/utils.h @@ -94,25 +94,6 @@ struct Has_type_different_from enum { value=true }; }; - // like std::multiplies but allows mixing types - // in C++11 in doesn't need to be a template - template < class Ret > - struct multiplies { - template - decltype(auto) operator()(A&&a,B&&b)const - { - return std::forward(a)*std::forward(b); - } - }; - template < class Ret > - struct division { - template - decltype(auto) operator()(A&&a,B&&b)const - { - return std::forward(a)/std::forward(b); - } - }; - using std::decay; template struct Type_copy_ref { typedef U type; }; From be39ec02fa8a668ac88edfe58ea08c9ca07dd658 Mon Sep 17 00:00:00 2001 From: Andreas Fabri Date: Thu, 18 Mar 2021 14:11:57 +0100 Subject: [PATCH 016/171] Add a solve that 'returns' the denominator instead of making the division --- .../include/CGAL/Cartesian/solve_3.h | 10 +++--- Kernel_23/include/CGAL/Kernel/solve.h | 31 +++++++++++++++++++ 2 files changed, 36 insertions(+), 5 deletions(-) diff --git a/Cartesian_kernel/include/CGAL/Cartesian/solve_3.h b/Cartesian_kernel/include/CGAL/Cartesian/solve_3.h index 2c9137f1596..81d1f422a2d 100644 --- a/Cartesian_kernel/include/CGAL/Cartesian/solve_3.h +++ b/Cartesian_kernel/include/CGAL/Cartesian/solve_3.h @@ -29,13 +29,13 @@ void solve (const VectorC3 &v0, const VectorC3 &v1, const VectorC3 &v2, const VectorC3 &d, - typename R::FT &alpha, typename R::FT &beta, typename R::FT &gamma) + typename R::FT &alpha, typename R::FT &beta, typename R::FT &gamma, typename R::FT &denom) { CGAL::solve(v0.x(), v0.y(), v0.z(), - v1.x(), v1.y(), v1.z(), - v2.x(), v2.y(), v2.z(), - d.x(), d.y(), d.z(), - alpha, beta, gamma); + v1.x(), v1.y(), v1.z(), + v2.x(), v2.y(), v2.z(), + d.x(), d.y(), d.z(), + alpha, beta, gamma, denom); } } // namespace Cartesian_internal diff --git a/Kernel_23/include/CGAL/Kernel/solve.h b/Kernel_23/include/CGAL/Kernel/solve.h index f4866259898..7b915836523 100644 --- a/Kernel_23/include/CGAL/Kernel/solve.h +++ b/Kernel_23/include/CGAL/Kernel/solve.h @@ -58,6 +58,37 @@ void solve (const FT &a1, const FT &a2, const FT &a3, } +template +void solve (const FT &a1, const FT &a2, const FT &a3, + const FT &b1, const FT &b2, const FT &b3, + const FT &c1, const FT &c2, const FT &c3, + const FT &d1, const FT &d2, const FT &d3, + FT &x, FT &y, FT &z, FT& denom) +{ + FT ab23 = a3*b2 - a2*b3; + FT ab13 = a3*b1 - a1*b3; + FT ab12 = a2*b1 - a1*b2; + + denom = ab23*c1 - ab13*c2 + ab12*c3; + + FT cd23 = c3*d2 - c2*d3; + FT cd13 = c3*d1 - c1*d3; + FT cd12 = c2*d1 - c1*d2; + + x = (b3*cd12 - b2*cd13 + b1*cd23); + + y = (a2*cd13 - cd12*a3 - cd23*a1); + + z = (ab23*d1 + ab12*d3 - ab13*d2); + if(denom < 0){ + denom = -denom; + x = -x; + y = -y; + z = -z; + } +} + + // this is for a parabola c1, c2, c3 are equal to 1 template void solve_quadratic (const FT &a1, const FT &a2, const FT &a3, From 06f625a98ef5ac4a22b96e1aa789963b10c34ab8 Mon Sep 17 00:00:00 2001 From: Andreas Fabri Date: Thu, 18 Mar 2021 14:13:20 +0100 Subject: [PATCH 017/171] Add a compare() for two rationals given as four values --- .../include/CGAL/number_utils.h | 30 +++++++++++++++++++ 1 file changed, 30 insertions(+) diff --git a/Algebraic_foundations/include/CGAL/number_utils.h b/Algebraic_foundations/include/CGAL/number_utils.h index d29434ad603..7195f057cef 100644 --- a/Algebraic_foundations/include/CGAL/number_utils.h +++ b/Algebraic_foundations/include/CGAL/number_utils.h @@ -324,6 +324,36 @@ NT approximate_sqrt(const NT& nt) return approximate_sqrt(nt, Sqrt()); } +template +Comparison_result +compare(const NT& xnum, const NT& xden, + const NT& ynum, const NT& yden) +{ + // No assumptions on the sign of den are made + + // code assumes that SMALLER == - 1; + CGAL_precondition( SMALLER == static_cast(-1) ); + + int xsign = sign(xnum) * sign(xden) ; + int ysign = sign(ynum) * sign(yden) ; + if (xsign == 0) return static_cast(-ysign); + if (ysign == 0) return static_cast(xsign); + // now (x != 0) && (y != 0) + int diff = xsign - ysign; + if (diff == 0) + { + int msign = sign(xden) * sign(yden); + NT leftop = NT(xnum * yden * msign); + NT rightop = NT(ynum * xden * msign); + return compare(leftop, rightop); + } + else + { + return (xsign < ysign) ? SMALLER : LARGER; + } +} + + CGAL_NTS_END_NAMESPACE } //namespace CGAL From ae945cd329dd1faae3787fa4ea70ae37ea4fa32a Mon Sep 17 00:00:00 2001 From: Andreas Fabri Date: Thu, 18 Mar 2021 14:14:42 +0100 Subject: [PATCH 018/171] Avoid division for bounded side test --- .../include/CGAL/Cartesian/function_objects.h | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/Cartesian_kernel/include/CGAL/Cartesian/function_objects.h b/Cartesian_kernel/include/CGAL/Cartesian/function_objects.h index 943cc686804..1bd6debebc4 100644 --- a/Cartesian_kernel/include/CGAL/Cartesian/function_objects.h +++ b/Cartesian_kernel/include/CGAL/Cartesian/function_objects.h @@ -253,18 +253,18 @@ namespace CartesianKernelFunctors { result_type operator()( const Tetrahedron_3& t, const Point_3& p) const { - FT alpha, beta, gamma; + FT alpha, beta, gamma, denom; Cartesian_internal::solve(t.vertex(1)-t.vertex(0), t.vertex(2)-t.vertex(0), t.vertex(3)-t.vertex(0), - p - t.vertex(0), alpha, beta, gamma); + p - t.vertex(0), alpha, beta, gamma, denom); if ( (alpha < 0) || (beta < 0) || (gamma < 0) - || (alpha + beta + gamma > 1) ) + || (alpha + beta + gamma > denom) ) return ON_UNBOUNDED_SIDE; if ( (alpha == 0) || (beta == 0) || (gamma == 0) - || (alpha+beta+gamma == 1) ) + || (alpha+beta+gamma == denom) ) return ON_BOUNDARY; return ON_BOUNDED_SIDE; @@ -3860,10 +3860,10 @@ namespace CartesianKernelFunctors { v1 = t.vertex(1)-o, v2 = t.vertex(2)-o; - FT alpha, beta, gamma; - Cartesian_internal::solve(v0, v1, v2, p-o, alpha, beta, gamma); + FT alpha, beta, gamma, denum; + Cartesian_internal::solve(v0, v1, v2, p-o, alpha, beta, gamma, denum); return (alpha >= FT(0)) && (beta >= FT(0)) && (gamma >= FT(0)) - && ((alpha+beta+gamma == FT(1))); + && ((alpha+beta+gamma == denum)); } result_type From 2e0f01be945200e4a3bbe9a1d92af45a1800d5ca Mon Sep 17 00:00:00 2001 From: Andreas Fabri Date: Thu, 18 Mar 2021 14:17:41 +0100 Subject: [PATCH 019/171] WIP: make several do_intersect division free and several no longer compute the intersection. Plane/Plane/Plane as well as Plane/Ray are still wrong --- .../internal/intersection_3_1_impl.h | 130 ++++++++++++++++-- 1 file changed, 119 insertions(+), 11 deletions(-) diff --git a/Intersections_3/include/CGAL/Intersections_3/internal/intersection_3_1_impl.h b/Intersections_3/include/CGAL/Intersections_3/internal/intersection_3_1_impl.h index 2ade2d2fcab..291ba03160b 100644 --- a/Intersections_3/include/CGAL/Intersections_3/internal/intersection_3_1_impl.h +++ b/Intersections_3/include/CGAL/Intersections_3/internal/intersection_3_1_impl.h @@ -853,9 +853,9 @@ do_intersect(const typename K::Plane_3 &p, typedef typename K::FT FT; const FT d2 = CGAL::square(p.a()*s.center().x() + p.b()*s.center().y() + - p.c()*s.center().z() + p.d()) / - (square(p.a()) + square(p.b()) + square(p.c())); - return d2 <= s.squared_radius(); + p.c()*s.center().z() + p.d()); + + return d2 <= s.squared_radius() * (square(p.a()) + square(p.b()) + square(p.c())); } template @@ -1642,7 +1642,39 @@ template inline bool do_intersect(const Plane_3& plane1, const Plane_3& plane2, const R&) { - return bool(intersection(plane1, plane2)); + typedef typename R::RT RT; + const RT &a = plane1.a(); + const RT &b = plane1.b(); + const RT &c = plane1.c(); + const RT &d = plane1.d(); + const RT &p = plane2.a(); + const RT &q = plane2.b(); + const RT &r = plane2.c(); + const RT &s = plane2.d(); + + RT det = a*q-p*b; + if (det != 0) { + return true; + } + det = a*r-p*c; + if (det != 0) { + return true; + } + det = b*r-c*q; + if (det != 0) { + return true; + } +// degenerate case + if (a!=0 || p!=0) { + return (a*s == p*d); + } + if (b!=0 || q!=0) { + return (b*s == q*d); + } + if (c!=0 || r!=0) { + return (c*s == r*d); + } + return true; } @@ -1651,29 +1683,105 @@ inline bool do_intersect(const Plane_3 &plane1, const Plane_3 &plane2, const Plane_3 &plane3, const R& r) { - return bool(intersection(plane1, plane2, plane3, r)); + return ! is_zero(determinant(plane1.a(), plane1.b(), plane1.c(), + plane2.a(), plane2.b(), plane2.c(), + plane3.a(), plane3.b(), plane3.c())); } template inline bool -do_intersect(const Iso_cuboid_3 &i, const Iso_cuboid_3 &j, const R&) +do_intersect(const Iso_cuboid_3 &icub1, const Iso_cuboid_3 &icub2, const R&) { - return bool(CGAL::intersection(i, j)); + typedef typename R::Point_3 Point_3; + typedef typename R::Iso_cuboid_3 Iso_cuboid_3; + + Point_3 min_points[2]; + Point_3 max_points[2]; + min_points[0] = (icub1.min)(); + min_points[1] = (icub2.min)(); + max_points[0] = (icub1.max)(); + max_points[1] = (icub2.max)(); + const int DIM = 3; + int min_idx[DIM]; + int max_idx[DIM]; + Point_3 newmin; + Point_3 newmax; + for (int dim = 0; dim < DIM; ++dim) { + min_idx[dim] = + min_points[0].cartesian(dim) >= min_points[1].cartesian(dim) ? 0 : 1; + max_idx[dim] = + max_points[0].cartesian(dim) <= max_points[1].cartesian(dim) ? 0 : 1; + if (min_idx[dim] != max_idx[dim] + && max_points[max_idx[dim]].cartesian(dim) + < min_points[min_idx[dim]].cartesian(dim)) + return false; + } + return true; + } template inline bool -do_intersect(const Line_3 &l, const Iso_cuboid_3 &j, const R&) +do_intersect(const Line_3 &line, const Iso_cuboid_3 &box, const R&) { - return bool(CGAL::intersection(l, j)); + typedef typename R::Point_3 Point_3; + typedef typename R::Vector_3 Vector_3; + typedef typename R::FT FT; + bool all_values = true; + FT _min = 0, _max = 0; // initialization to stop compiler warning + FT _denum; + Point_3 const & _ref_point=line.point(); + Vector_3 const & _dir=line.direction().vector(); + Point_3 const & _iso_min=(box.min)(); + Point_3 const & _iso_max=(box.max)(); + for (int i=0; i< _ref_point.dimension(); i++) { + if (_dir.homogeneous(i) == 0) { + if (_ref_point.cartesian(i) < _iso_min.cartesian(i)) { + return false; + } + if (_ref_point.cartesian(i) > _iso_max.cartesian(i)) { + return false; + } + } else { + FT newmin, newmax; + FT newdenum = _dir.cartesian(i); + if (_dir.homogeneous(i) > 0) { + newmin = (_iso_min.cartesian(i) - _ref_point.cartesian(i)); + newmax = (_iso_max.cartesian(i) - _ref_point.cartesian(i)); + } else { + newmin = (_iso_max.cartesian(i) - _ref_point.cartesian(i)); + newmax = (_iso_min.cartesian(i) - _ref_point.cartesian(i)); + } + if (all_values) { + _min = newmin; + _max = newmax; + _denum = newdenum; + } else { + + if (compare(newmin, newdenum, _min, _denum) == LARGER) + _min = newmin; + if (compare(newmax, newdenum, _max, _denum) == LARGER) + _max = newmax; + if (compare(_max, _denum, _min, _denum) == SMALLER) { + return false; + } + _denum = newdenum; + + } + all_values = false; + } + } + CGAL_kernel_assertion(!all_values); + return true; } + template inline bool -do_intersect(const Iso_cuboid_3 &j, const Line_3 &l, const R&) +do_intersect(const Iso_cuboid_3 &j, const Line_3 &l, const R& r) { - return bool(CGAL::intersection(l, j)); + return do_intersect(l, j, r); } } // namespace internal } // namespace Intersections From 75a2541d12d585bb28639444677c239f042c46db Mon Sep 17 00:00:00 2001 From: Andreas Fabri Date: Thu, 18 Mar 2021 14:37:34 +0100 Subject: [PATCH 020/171] Add Plane/Ray --- .../internal/intersection_3_1_impl.h | 16 +++++++--------- 1 file changed, 7 insertions(+), 9 deletions(-) diff --git a/Intersections_3/include/CGAL/Intersections_3/internal/intersection_3_1_impl.h b/Intersections_3/include/CGAL/Intersections_3/internal/intersection_3_1_impl.h index 291ba03160b..f1439ac3386 100644 --- a/Intersections_3/include/CGAL/Intersections_3/internal/intersection_3_1_impl.h +++ b/Intersections_3/include/CGAL/Intersections_3/internal/intersection_3_1_impl.h @@ -523,6 +523,7 @@ do_intersect(const typename K::Segment_3 &s1, return false; } + // AF: to be fixed template typename Intersection_traits::result_type intersection(const typename K::Line_3 &l, @@ -971,16 +972,13 @@ do_intersect(const typename K::Plane_3 &plane, { typedef typename K::Point_3 Point_3; - typename Intersection_traits - ::result_type - line_intersection = internal::intersection(plane, ray.supporting_line(), k); + K::Oriented_side_3 oriented_side_3; - if(!line_intersection) - return false; - if(const Point_3 *isp = intersect_get(line_intersection)) - return ray.collinear_has_on(*isp); - - return true; + Oriented_side os = oriented_side_3(plane,ray.source()); + if(os == ON_ORIENTED_BOUNDARY){ + return true; + } + return sign(ray.to_vector()* plane.orthogonal_vector()) * os == -1; } From 8eea3e70bb04572e4a0a84033baa599cb4b0bcc0 Mon Sep 17 00:00:00 2001 From: Andreas Fabri Date: Sun, 21 Mar 2021 18:17:13 +0100 Subject: [PATCH 021/171] typename --- .../CGAL/Intersections_3/internal/intersection_3_1_impl.h | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Intersections_3/include/CGAL/Intersections_3/internal/intersection_3_1_impl.h b/Intersections_3/include/CGAL/Intersections_3/internal/intersection_3_1_impl.h index f1439ac3386..b06bee78f28 100644 --- a/Intersections_3/include/CGAL/Intersections_3/internal/intersection_3_1_impl.h +++ b/Intersections_3/include/CGAL/Intersections_3/internal/intersection_3_1_impl.h @@ -523,7 +523,7 @@ do_intersect(const typename K::Segment_3 &s1, return false; } - // AF: to be fixed + template typename Intersection_traits::result_type intersection(const typename K::Line_3 &l, @@ -972,7 +972,7 @@ do_intersect(const typename K::Plane_3 &plane, { typedef typename K::Point_3 Point_3; - K::Oriented_side_3 oriented_side_3; + typename K::Oriented_side_3 oriented_side_3; Oriented_side os = oriented_side_3(plane,ray.source()); if(os == ON_ORIENTED_BOUNDARY){ From a522818877394da6cd348c2cdb4014a51979a7b8 Mon Sep 17 00:00:00 2001 From: Andreas Fabri Date: Sun, 21 Mar 2021 19:06:01 +0100 Subject: [PATCH 022/171] Move compare into a namespace --- .../Min_sphere_of_spheres_d_impl.h | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/Bounding_volumes/include/CGAL/Min_sphere_of_spheres_d/Min_sphere_of_spheres_d_impl.h b/Bounding_volumes/include/CGAL/Min_sphere_of_spheres_d/Min_sphere_of_spheres_d_impl.h index 1a9263fd081..c4f37b4ddca 100644 --- a/Bounding_volumes/include/CGAL/Min_sphere_of_spheres_d/Min_sphere_of_spheres_d_impl.h +++ b/Bounding_volumes/include/CGAL/Min_sphere_of_spheres_d/Min_sphere_of_spheres_d_impl.h @@ -30,6 +30,8 @@ namespace CGAL_MINIBALL_NAMESPACE { +namespace Bounding_volumes { + template inline bool compare(const FT& a,const FT& b, const FT& ap,const FT& bp) { @@ -56,6 +58,8 @@ namespace CGAL_MINIBALL_NAMESPACE { } } +} // namespace Bounding_volumes + template void Min_sphere_of_spheres_d::update(LP_algorithm) { using namespace Min_sphere_of_spheres_d_impl; @@ -168,7 +172,7 @@ namespace CGAL_MINIBALL_NAMESPACE { t.center_cartesian_begin(*l[k]),FT(0),std::plus(), Subtract_and_square()); - if (compare(max,maxp,t.radius(*l[k]),dist)) { + if (Bounding_volumes::compare(max,maxp,t.radius(*l[k]),dist)) { max = t.radius(*l[k]); maxp = dist; i = k; @@ -203,7 +207,7 @@ namespace CGAL_MINIBALL_NAMESPACE { Subtract_and_square_to_double()); const double r = CGAL_MINIBALL_NTS to_double(t.radius(*l[k])); - if (compare(max,maxp,r,dist)) { + if (Bounding_volumes::compare(max,maxp,r,dist)) { max = r; maxp = dist; i = k; From a4c57e6f66cc6b603c546ea2dda4c4ac211f112f Mon Sep 17 00:00:00 2001 From: Andreas Fabri Date: Sun, 21 Mar 2021 19:35:41 +0100 Subject: [PATCH 023/171] Keep the old solve() --- Cartesian_kernel/include/CGAL/Cartesian/solve_3.h | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/Cartesian_kernel/include/CGAL/Cartesian/solve_3.h b/Cartesian_kernel/include/CGAL/Cartesian/solve_3.h index 81d1f422a2d..b6ec10bb023 100644 --- a/Cartesian_kernel/include/CGAL/Cartesian/solve_3.h +++ b/Cartesian_kernel/include/CGAL/Cartesian/solve_3.h @@ -38,6 +38,20 @@ void solve (const VectorC3 &v0, alpha, beta, gamma, denom); } +template +void solve (const VectorC3 &v0, + const VectorC3 &v1, + const VectorC3 &v2, + const VectorC3 &d, + typename R::FT &alpha, typename R::FT &beta, typename R::FT &gamma) +{ + CGAL::solve(v0.x(), v0.y(), v0.z(), + v1.x(), v1.y(), v1.z(), + v2.x(), v2.y(), v2.z(), + d.x(), d.y(), d.z(), + alpha, beta, gamma); +} + } // namespace Cartesian_internal } //namespace CGAL From 45909e6d766f01ca30cbdc767bbe1c9866288038 Mon Sep 17 00:00:00 2001 From: Andreas Fabri Date: Mon, 22 Mar 2021 09:01:56 +0100 Subject: [PATCH 024/171] Let's fix it step by step, beginning with Do_intersect_3 --- Kernel_23/include/CGAL/Kernel/interface_macros.h | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Kernel_23/include/CGAL/Kernel/interface_macros.h b/Kernel_23/include/CGAL/Kernel/interface_macros.h index 40836bde411..9ecc05bbd1d 100644 --- a/Kernel_23/include/CGAL/Kernel/interface_macros.h +++ b/Kernel_23/include/CGAL/Kernel/interface_macros.h @@ -494,8 +494,8 @@ CGAL_Kernel_pred_RT(Coplanar_3, coplanar_3_object) CGAL_Kernel_pred(Counterclockwise_in_between_2, counterclockwise_in_between_2_object) -CGAL_Kernel_pred_RT(Do_intersect_2, - do_intersect_2_object) +CGAL_Kernel_pred(Do_intersect_2, + do_intersect_2_object) CGAL_Kernel_pred_RT(Do_intersect_3, do_intersect_3_object) CGAL_Kernel_pred(Equal_xy_3, From 23f1badd8559600b8e81222c4e0d94962740d034 Mon Sep 17 00:00:00 2001 From: Andreas Fabri Date: Mon, 22 Mar 2021 09:03:50 +0100 Subject: [PATCH 025/171] Use is_zero() instead of == FT(0) --- .../CGAL/Intersections_3/internal/intersection_3_1_impl.h | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Intersections_3/include/CGAL/Intersections_3/internal/intersection_3_1_impl.h b/Intersections_3/include/CGAL/Intersections_3/internal/intersection_3_1_impl.h index b06bee78f28..7d8ca152adb 100644 --- a/Intersections_3/include/CGAL/Intersections_3/internal/intersection_3_1_impl.h +++ b/Intersections_3/include/CGAL/Intersections_3/internal/intersection_3_1_impl.h @@ -239,7 +239,7 @@ intersection_point(const typename K::Plane_3 &plane1, const FT den = minor_0*m22 - minor_1*m12 + minor_2*m02; // determinant of M - if(den == FT(0)){ + if(is_zero(den)){ return boost::none; } @@ -379,7 +379,7 @@ intersection(const typename K::Line_3 &l1, const Vector_3 v3v2 = cross_product(v3,v2); const Vector_3 v1v2 = cross_product(v1,v2); const FT sl = v1v2.squared_length(); - if(certainly(sl == FT(0))) + if(certainly(is_zero(sl))) return intersection_return(); const FT t = ((v3v2.x()*v1v2.x()) + (v3v2.y()*v1v2.y()) + (v3v2.z()*v1v2.z())) / sl; From 3448035fc691cbc2259e6115fa17117aa1d94fe1 Mon Sep 17 00:00:00 2001 From: Simon Giraudot Date: Wed, 24 Mar 2021 08:25:29 +0100 Subject: [PATCH 026/171] Fix CC_iterator by making constructor from pointer explicit --- .../Arrangement_2/Arrangement_2_iterators.h | 28 +++++++++++++++++++ HalfedgeDS/include/CGAL/HalfedgeDS_iterator.h | 12 ++++---- .../include/CGAL/Compact_container.h | 2 +- 3 files changed, 35 insertions(+), 7 deletions(-) diff --git a/Arrangement_on_surface_2/include/CGAL/Arrangement_2/Arrangement_2_iterators.h b/Arrangement_on_surface_2/include/CGAL/Arrangement_2/Arrangement_2_iterators.h index e210813d47f..219c445bdc1 100644 --- a/Arrangement_on_surface_2/include/CGAL/Arrangement_2/Arrangement_2_iterators.h +++ b/Arrangement_on_surface_2/include/CGAL/Arrangement_2/Arrangement_2_iterators.h @@ -288,6 +288,12 @@ public: iend (nt) {} + template + I_Filtered_iterator (T* p) : + nt (pointer(p)), + iend (nt) + {} + I_Filtered_iterator (Iterator it, Iterator end) : nt (it), iend (end) @@ -305,6 +311,14 @@ public: ++nt; } + template + I_Filtered_iterator& operator= (const P* p) + { + nt = pointer(p); + iend =nt; + return *this; + } + /*! Access operations. */ Iterator current_iterator() const { @@ -439,6 +453,12 @@ public: iend (it) {} + template + I_Filtered_const_iterator (T* p) : + nt (pointer(p)), + iend (nt) + {} + I_Filtered_const_iterator (Iterator it, Iterator end) : nt (it), iend (end) @@ -465,6 +485,14 @@ public: // ++nt; } + template + I_Filtered_const_iterator& operator= (const P* p) + { + nt = pointer(p); + iend =nt; + return *this; + } + /*! Access operations. */ Iterator current_iterator() const { diff --git a/HalfedgeDS/include/CGAL/HalfedgeDS_iterator.h b/HalfedgeDS/include/CGAL/HalfedgeDS_iterator.h index e5aa9493fbf..fe62a26e2c0 100644 --- a/HalfedgeDS/include/CGAL/HalfedgeDS_iterator.h +++ b/HalfedgeDS/include/CGAL/HalfedgeDS_iterator.h @@ -200,7 +200,7 @@ public: bool operator!=( const Self& i) const { return !(*this == i); } Self& operator++() { - this->nt = (*this->nt).next(); + this->nt = typename It::Iterator((*this->nt).next()); return *this; } Self operator++(int) { @@ -266,7 +266,7 @@ public: bool operator!=( const It& i) const { return !(*this == i); } Self& operator++() { - this->nt = (*this->nt).next(); + this->nt = typename It::Iterator((*this->nt).next()); return *this; } Self operator++(int) { @@ -325,7 +325,7 @@ public: bool operator!=( const Self& i) const { return !(*this == i); } Self& operator++() { - this->nt = (*this->nt).next()->opposite(); + this->nt = typename It::Iterator((*this->nt).next()->opposite()); return *this; } Self operator++(int) { @@ -338,7 +338,7 @@ public: // --------------------------------- Self& operator--() { - this->nt = (*this->nt).opposite()->prev(); + this->nt = typename It::Iterator((*this->nt).opposite()->prev()); return *this; } Self operator--(int) { @@ -389,7 +389,7 @@ public: bool operator!=( const Self& i) const { return !(*this == i); } Self& operator++() { - this->nt = (*this->nt).next()->opposite(); + this->nt = typename It::Iterator((*this->nt).next()->opposite()); return *this; } Self operator++(int) { @@ -402,7 +402,7 @@ public: // --------------------------------- Self& operator--() { - this->nt = (*this->nt).opposite()->prev(); + this->nt = typename It::Iterator((*this->nt).opposite()->prev()); return *this; } Self operator--(int) { diff --git a/STL_Extension/include/CGAL/Compact_container.h b/STL_Extension/include/CGAL/Compact_container.h index 9273df1556e..470918b5f80 100644 --- a/STL_Extension/include/CGAL/Compact_container.h +++ b/STL_Extension/include/CGAL/Compact_container.h @@ -875,7 +875,7 @@ namespace internal { m_ptr = nullptr; } - CC_iterator(pointer ptr) : m_ptr(ptr) { } + explicit CC_iterator(pointer ptr) : m_ptr(ptr) { } // Converting constructor from mutable to constant iterator template From afc6e4cae60d3285924534910ed887bf115bf5af Mon Sep 17 00:00:00 2001 From: Simon Giraudot Date: Wed, 24 Mar 2021 09:13:29 +0100 Subject: [PATCH 027/171] Use nullptr instead of NULL to fix ambiguous construction --- Linear_cell_complex/demo/Linear_cell_complex/import_moka.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Linear_cell_complex/demo/Linear_cell_complex/import_moka.h b/Linear_cell_complex/demo/Linear_cell_complex/import_moka.h index b375423d4fb..f838c085b8a 100644 --- a/Linear_cell_complex/demo/Linear_cell_complex/import_moka.h +++ b/Linear_cell_complex/demo/Linear_cell_complex/import_moka.h @@ -20,7 +20,7 @@ struct GDart Dart_handle dh; LCC::Vertex_attribute_handle vh; - GDart() : dh(NULL), vh(NULL) + GDart() : dh(nullptr), vh(nullptr) {} GDart(const GDart& adart) : dh(adart.dh), From 2923ea4a2b3d9c9ec62bbc710e9393db9a7b0ccd Mon Sep 17 00:00:00 2001 From: Simon Giraudot Date: Thu, 25 Mar 2021 10:34:21 +0100 Subject: [PATCH 028/171] Fix errors with iterator conversions --- HalfedgeDS/include/CGAL/HalfedgeDS_iterator.h | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/HalfedgeDS/include/CGAL/HalfedgeDS_iterator.h b/HalfedgeDS/include/CGAL/HalfedgeDS_iterator.h index fe62a26e2c0..0eb0856a890 100644 --- a/HalfedgeDS/include/CGAL/HalfedgeDS_iterator.h +++ b/HalfedgeDS/include/CGAL/HalfedgeDS_iterator.h @@ -213,7 +213,7 @@ public: // --------------------------------- Self& operator--() { - this->nt = (*this->nt).prev(); + this->nt = typename It::Iterator((*this->nt).prev()); return *this; } Self operator--(int) { @@ -279,7 +279,7 @@ public: // --------------------------------- Self& operator--() { - this->nt = (*this->nt).prev(); + this->nt = typename It::Iterator((*this->nt).prev()); return *this; } Self operator--(int) { From 016717e120ecafbfedcf3651132e0d889d3e6419 Mon Sep 17 00:00:00 2001 From: Maxime Gimeno Date: Thu, 25 Mar 2021 11:44:02 +0100 Subject: [PATCH 029/171] Don't copy dlls from system32 and Visual --- Scripts/developer_scripts/cgal_demo_copy_all_dlls_cygwin.sh | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/Scripts/developer_scripts/cgal_demo_copy_all_dlls_cygwin.sh b/Scripts/developer_scripts/cgal_demo_copy_all_dlls_cygwin.sh index 610b09a9e39..fec32e0d3f3 100644 --- a/Scripts/developer_scripts/cgal_demo_copy_all_dlls_cygwin.sh +++ b/Scripts/developer_scripts/cgal_demo_copy_all_dlls_cygwin.sh @@ -19,7 +19,10 @@ copy_dll() { local dll_full_path=$(cygpath --unix --absolute "$1") echo "copy $dll_full_path to $2" - cp "$dll_full_path" "$2" + #remove all dlls from system and Visual + if ! [[ "$dll_full_path" =~ "Visual" ]] && ! [[ "$dll_full_path" =~ "system32" ]]; then + cp "$dll_full_path" "$2" + fi } From c11d6316b1518fe7e068b1983a068c6dc3fe27ab Mon Sep 17 00:00:00 2001 From: Simon Giraudot Date: Mon, 29 Mar 2021 15:00:44 +0200 Subject: [PATCH 030/171] Fix example (avoid incrementing end()) --- .../examples/Arrangement_on_surface_2/isolated_vertices.cpp | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/Arrangement_on_surface_2/examples/Arrangement_on_surface_2/isolated_vertices.cpp b/Arrangement_on_surface_2/examples/Arrangement_on_surface_2/isolated_vertices.cpp index 9568b33952f..b8a53d7d784 100644 --- a/Arrangement_on_surface_2/examples/Arrangement_on_surface_2/isolated_vertices.cpp +++ b/Arrangement_on_surface_2/examples/Arrangement_on_surface_2/isolated_vertices.cpp @@ -27,9 +27,10 @@ int main() arr.insert_at_vertices(s4, v4, v1); // Remove the isolated vertices located in the unbounded face. - Arrangement::Vertex_iterator curr, next = arr.vertices_begin(); - for (curr = next++; curr != arr.vertices_end(); curr = next++) { + Arrangement::Vertex_iterator iter = arr.vertices_begin(); + while (iter != arr.vertices_end()) { // Keep an iterator to the next vertex, as curr might be deleted. + Arrangement::Vertex_iterator curr = iter ++; if (curr->is_isolated() && curr->face() == uf) arr.remove_isolated_vertex(curr); } From 6c7f05e0be07d81b6291a0b0bc5841eabf747835 Mon Sep 17 00:00:00 2001 From: Andreas Fabri Date: Mon, 29 Mar 2021 16:03:06 +0100 Subject: [PATCH 031/171] rank written by Sebastien --- Kernel_23/include/CGAL/rank.h | 164 ++++++++++++++++++++++++++++++ Kernel_23/test/Kernel_23/rank.cpp | 115 +++++++++++++++++++++ 2 files changed, 279 insertions(+) create mode 100644 Kernel_23/include/CGAL/rank.h create mode 100644 Kernel_23/test/Kernel_23/rank.cpp diff --git a/Kernel_23/include/CGAL/rank.h b/Kernel_23/include/CGAL/rank.h new file mode 100644 index 00000000000..58c2c5ac09a --- /dev/null +++ b/Kernel_23/include/CGAL/rank.h @@ -0,0 +1,164 @@ +// Copyright (c) 2021 +// GeometryFactory (France), +// +// This file is part of CGAL (www.cgal.org) +// +// $URL$ +// $Id$ +// SPDX-License-Identifier: LGPL-3.0-or-later OR LicenseRef-Commercial +// +// +// Author(s) : Sebastien Loriot + +#ifndef CGAL_RANK_H +#define CGAL_RANK_H + +namespace CGAL { + +template +int rank_11(const RT& a0) +{ + return a0!=0 ? 1 : 0; +} + +template +int rank_21(const RT& a0, const RT& a1) +{ + return (a0!=0 || a1 !=0) ? 1 : 0; +} + +template +int rank_12(const RT& a0, const RT& a1) +{ + return (a0!=0 || a1 !=0) ? 1 : 0; +} + +template +int rank_31(const RT& a0, const RT& a1, const RT& a2) +{ + return (a0!=0 || a1 !=0 || a2 !=0) ? 1 : 0; +} + +template +int rank_32(const RT& a0, const RT& b0, + const RT& a1, const RT& b1, + const RT& a2, const RT& b2) +{ + if (a0==0) + { + if (a1==0) + { + if (a2==0) + { + return rank_31(b0,b1,b2); + } + else + { + return 1 + rank_21(b0, b1); + } + } + else + { + return 1 + rank_21(b0, a1*b2-a2*b1); + } + } + else + { + return 1 + rank_21(a0*b1-a1*b0, a0*b2-a2*b0); + } +} + +template +int rank_22(const RT& a0, const RT& b0, + const RT& a1, const RT& b1) +{ + if (a0==0) + { + if (a1==0) + { + return rank_21(b0,b1); + } + else + return 1 + rank_11(b0); + } + return 1 + rank_11(a0*b1-a1*b0); +} + +template +int rank_33(const RT& a0, const RT& b0, const RT& c0, + const RT& a1, const RT& b1, const RT& c1, + const RT& a2, const RT& b2, const RT& c2) +{ + if (a0==0) + { + if (a1==0) + { + if (a2==0) + { + return rank_32(b0, c0, b1, c1, b2, c2); + } + else + { + return 1 + rank_22(b0, c0, b1, c1); + } + } + else + return 1 + rank_22(b0, c0, a1*b2-a2*b1, a1*c2-a2*c1); + } + else + { + return 1 + rank_22(a0*b1-a1*b0, a0*c1-a1*c0, a0*b2-a2*b0, a0*c2-a2*c0); + } +} + + +template +int rank_23(const RT& a0, const RT& b0, const RT& c0, + const RT& a1, const RT& b1, const RT& c1) +{ + if (a0==0) + { + if (a1==0) + { + return rank_22(b0, c0, b1, c1); + } + else + return 1 + rank_12(b0,c0); + } + else + { + return 1 + rank_12(a0*b1-a1*b0,a0*c1-a1*c0); + } +} + + +template +int rank_34(const RT& a0, const RT& b0, const RT& c0, const RT& d0, + const RT& a1, const RT& b1, const RT& c1, const RT& d1, + const RT& a2, const RT& b2, const RT& c2, const RT& d2) +{ + if (a0==0) + { + if (a1==0) + { + if (a2==0) + { + return rank_33(b0, c0, d0, b1, c1, d1, b2, c2, d2); + } + else + { + return 1 + rank_23(b0, c0, d0, b1, c1, d1); + } + } + else + return 1 + rank_23(b0, c0, d0,a1*b2-a2*b1, a1*c2-a2*c1, a1*d2 - a2*d1); + } + else + { + return 1 + rank_23(a0*b1-a1*b0, a0*c1-a1*c0, a0*d1-a1*d0, a0*b2-a2*b0, a0*c2-a2*c0, a0*d2-a2*d0); + } +} + +} // namespace CGAL + +#endif // CGAL_RANK_H diff --git a/Kernel_23/test/Kernel_23/rank.cpp b/Kernel_23/test/Kernel_23/rank.cpp new file mode 100644 index 00000000000..5856d9e86ab --- /dev/null +++ b/Kernel_23/test/Kernel_23/rank.cpp @@ -0,0 +1,115 @@ +#include +#include +#include + +typedef int FT; + + +void test_rank_33(FT a0, FT b0, FT c0, + FT a1, FT b1, FT c1, + FT a2, FT b2, FT c2, + int expected) +{ + std::cout << "testing:\n" + << "\t " << a0 << "\t" << b0 << "\t" << c0 << "\n" + << "\t " << a1 << "\t" << b1 << "\t" << c1 << "\n" + << "\t " << a2 << "\t" << b2 << "\t" << c2 << "\n"; + + assert(CGAL::rank_33(a0,b0,c0,a1,b1,c1,a2,b2,c2)==expected); + assert(CGAL::rank_33(a0,b0,c0,a2,b2,c2,a1,b1,c1)==expected); + assert(CGAL::rank_33(a1,b1,c1,a0,b0,c0,a2,b2,c2)==expected); + assert(CGAL::rank_33(a1,b1,c1,a2,b2,c2,a0,b0,c0)==expected); + assert(CGAL::rank_33(a2,b2,c2,a0,b0,c0,a1,b1,c1)==expected); + assert(CGAL::rank_33(a2,b2,c2,a1,b1,c1,a0,b0,c0)==expected); +} + +void test_rank_34(FT a0, FT b0, FT c0, FT d0, + FT a1, FT b1, FT c1, FT d1, + FT a2, FT b2, FT c2, FT d2, + int expected) +{ + std::cout << "testing:\n" + << "\t " << a0 << "\t" << b0 << "\t" << c0 << "\t" << d0 << "\n" + << "\t " << a1 << "\t" << b1 << "\t" << c1 << "\t" << d1 << "\n" + << "\t " << a2 << "\t" << b2 << "\t" << c2 << "\t" << d2 << "\n"; + + assert(CGAL::rank_34(a0,b0,c0,d0,a1,b1,c1,d1,a2,b2,c2,d2)==expected); + assert(CGAL::rank_34(a0,b0,c0,d0,a2,b2,c2,d2,a1,b1,c1,d1)==expected); + assert(CGAL::rank_34(a1,b1,c1,d1,a0,b0,c0,d0,a2,b2,c2,d2)==expected); + assert(CGAL::rank_34(a1,b1,c1,d1,a2,b2,c2,d2,a0,b0,c0,d0)==expected); + assert(CGAL::rank_34(a2,b2,c2,d2,a0,b0,c0,d0,a1,b1,c1,d1)==expected); + assert(CGAL::rank_34(a2,b2,c2,d2,a1,b1,c1,d1,a0,b0,c0,d0)==expected); +} + + + +int main() +{ + test_rank_33(1,0,0, + 0,1,0, + 0,0,1, 3); + test_rank_33(1,0,0, + 0,1,0, + 1,0,1, 3); + test_rank_33(1,0,0, + 1,1,1, + 1,0,1, 3); + test_rank_33(1,0,0, + 1,1,1, + 1,0,1, 3); + test_rank_33(1,0,0, + 1,1,0, + 1,5,0, 2); + test_rank_33(0,0,0, + 0,0,0, + 0,0,0, 0); + test_rank_33(1,2,3, + 1,2,3, + 1,2,3, 1); + test_rank_33(1,2,3, + 2,4,6, + 4,8,12, 1); + test_rank_33(1,2,3, + 2,4,6, + 4,8,11, 2); + test_rank_33(1,0,1, + 1,0,1, + 1,0,1, 1); + test_rank_33(1,1,1, + 1,0,1, + 1,0,1, 2); + + test_rank_33(0,1,1, + 0,0,1, + 0,0,1, 2); + + test_rank_34(1,0,0,0, + 0,1,0,0, + 0,0,1,0, 3); + + test_rank_34(1,0,0,0, + 0,1,0,0, + 1,1,0,0, 2); + + test_rank_34(1,0,0,0, + 0,1,0,0, + 1,1,0,1, 3); + + test_rank_34(0,1,0,0, + 0,0,1,0, + 0,1,1,0, 2); + + test_rank_34(0,1,0,0, + 0,0,1,0, + 0,1,1,1, 3); + + test_rank_34(1,0,0,0, + 0,0,1,0, + 1,0,1,0, 2); + + test_rank_34(1,0,0,0, + 0,0,1,0, + 1,0,1,1, 3); + + return 0; +} From 99a52959c33ae6fbe480b277d215869d8abc8c49 Mon Sep 17 00:00:00 2001 From: Andreas Fabri Date: Mon, 29 Mar 2021 17:15:53 +0100 Subject: [PATCH 032/171] Add the do_intersect for 3 planes using the rank() written by Sebastien --- .../internal/intersection_3_1_impl.h | 32 ++++- .../test/Intersections_3/do_intersect.cpp | 114 ++++++++++++++++++ 2 files changed, 142 insertions(+), 4 deletions(-) create mode 100644 Intersections_3/test/Intersections_3/do_intersect.cpp diff --git a/Intersections_3/include/CGAL/Intersections_3/internal/intersection_3_1_impl.h b/Intersections_3/include/CGAL/Intersections_3/internal/intersection_3_1_impl.h index 7d8ca152adb..f07569dc229 100644 --- a/Intersections_3/include/CGAL/Intersections_3/internal/intersection_3_1_impl.h +++ b/Intersections_3/include/CGAL/Intersections_3/internal/intersection_3_1_impl.h @@ -26,7 +26,7 @@ #include #include #include - +#include #include namespace CGAL { @@ -1681,9 +1681,33 @@ inline bool do_intersect(const Plane_3 &plane1, const Plane_3 &plane2, const Plane_3 &plane3, const R& r) { - return ! is_zero(determinant(plane1.a(), plane1.b(), plane1.c(), - plane2.a(), plane2.b(), plane2.c(), - plane3.a(), plane3.b(), plane3.c())); + if(! is_zero(determinant(plane1.a(), plane1.b(), plane1.c(), + plane2.a(), plane2.b(), plane2.c(), + plane3.a(), plane3.b(), plane3.c()))){ + return true; + } + + int pcount = 0; + bool b12, b13,b23; + if(b12 = parallel(plane1,plane2)) pcount++; + if(b13 = parallel(plane1,plane3)) pcount++; + if(b23 = parallel(plane2,plane3)) pcount++; + + if(pcount == 3){ + return (( (plane1 == plane2) || (plane1 == plane2.opposite())) && ( (plane1 == plane3) || (plane1 == plane3.opposite()))); + } + + if(pcount == 1){ + if(b12 && ((plane1 == plane2)||(plane1 == plane2.opposite() ))) return true; + if(b13 && ((plane1 == plane3)||(plane1 == plane3.opposite() ))) return true; + if(b23 && ((plane2 == plane3)||(plane2 == plane3.opposite() ))) return true; + } + + int rd = rank_34(plane1.a(), plane1.b(), plane1.c(), plane1.d(), + plane2.a(), plane2.b(), plane2.c(), plane2.d(), + plane3.a(), plane3.b(), plane3.c(), plane3.d()); + + return rd == 2; } diff --git a/Intersections_3/test/Intersections_3/do_intersect.cpp b/Intersections_3/test/Intersections_3/do_intersect.cpp new file mode 100644 index 00000000000..60a583ad484 --- /dev/null +++ b/Intersections_3/test/Intersections_3/do_intersect.cpp @@ -0,0 +1,114 @@ +#include + +typedef CGAL::Exact_predicates_inexact_constructions_kernel K; +typedef K::Triangle_3 Triangle_3; +typedef K::Segment_3 Segment_3; +typedef K::Ray_3 Ray_3; +typedef K::Line_3 Line_3; +typedef K::Tetrahedron_3 Tetrahedron_3; +typedef K::Point_3 Point_3; +typedef K::Plane_3 Plane_3; +typedef K::Iso_cuboid_3 Iso_cuboid_3; +typedef K::Sphere_3 Sphere_3; + +int main() +{ + Point_3 p(0,0,0), q(1,1,1), r(1,0,0), s(1,1,0); + Segment_3 s0(p,q),s1(p,q); + Ray_3 ray(p,q); + Line_3 lin(p,q); + Triangle_3 t0(p,q,r), t1(p,q,r); + Tetrahedron_3 tet(p,q,r,s); + Plane_3 pla(p,q,r); + Iso_cuboid_3 ic(p,q); + Sphere_3 sp(p,1); + CGAL::Bbox_3 bb; + + do_intersect(p,sp); + do_intersect(bb,t0); + do_intersect(t0,t1); + do_intersect(t0,s0); + do_intersect(t0,ray); + do_intersect(t0,lin); + + do_intersect(s0,s1); + do_intersect(pla,s0); + do_intersect(pla,lin); + do_intersect(pla,ray); + do_intersect(pla,pla); + do_intersect(pla,pla,pla); + do_intersect(tet,p); + do_intersect(ic,s0); + do_intersect(ic,ray); + do_intersect(ic,ic); + do_intersect(ic,lin); + do_intersect(ic,pla); + do_intersect(ic,ic); + do_intersect(sp,sp); + + + { + Plane_3 p0(Point_3(0,0,0), Point_3(1,0,0), Point_3(1,1,0)); + Plane_3 p1(Point_3(0,0,1), Point_3(1,0,1), Point_3(1,1,1)); + Plane_3 p2(Point_3(0,0,2), Point_3(1,0,2), Point_3(1,1,2)); + + assert(do_intersect(p0,p1,p2) == false); // three parallel + } + + { + Plane_3 p0(Point_3(0,0,0), Point_3(1,0,0), Point_3(1,1,0)); + Plane_3 p2(Point_3(2,2,0), Point_3(4,2,0), Point_3(4,4,0)); + Plane_3 p1(Point_3(10,10,0), Point_3(10,20,0), Point_3(20,20,0)); + + assert(do_intersect(p0,p1,p2) == true); // three equal + } + + { + Plane_3 p0(Point_3(0,0,0), Point_3(1,0,0), Point_3(1,1,0)); + Plane_3 p2(Point_3(2,2,0), Point_3(4,2,0), Point_3(4,4,0)); + Plane_3 p1(Point_3(10,10,1), Point_3(10,20,1), Point_3(20,20,1)); + + assert(do_intersect(p0,p1,p2) == false); // two equal, one parallel + } + + { + Plane_3 p0(Point_3(0,0,0), Point_3(0,1,0), Point_3(0,0,1)); + + Plane_3 p2(Point_3(2,2,0), Point_3(4,2,0), Point_3(4,4,0)); + Plane_3 p1(Point_3(10,10,1), Point_3(10,20,1), Point_3(20,20,1)); + + assert(do_intersect(p0,p1,p2) == false); // two parallel, one intersecting both + } + + { + Plane_3 p0(Point_3(0,0,0), Point_3(0,1,0), Point_3(0,0,1)); + Plane_3 p1(Point_3(0,0,0), Point_3(1,0,0), Point_3(1,1,0)); + Plane_3 p2(Point_3(2,2,0), Point_3(4,2,0), Point_3(4,4,0)); + assert(do_intersect(p0,p1,p2) == true); // two equal, one intersecting + } + { + Plane_3 p0(Point_3(0,0,0), Point_3(1,1,1), Point_3(0,0,1)); + Plane_3 p1(Point_3(2,2,2), Point_3(6,6,6), Point_3(0,1,0)); + Plane_3 p2(Point_3(3,3,3), Point_3(5,5,5), Point_3(1,0,0)); + + assert(do_intersect(p0,p1,p2) == true); // three in a line + } + + + { + Plane_3 p0(Point_3(0,0,0), Point_3(1,0,0), Point_3(0,1,0)); // xy + Plane_3 p1(Point_3(0,0,0), Point_3(0,0,1), Point_3(0,1,1)); // yz + Plane_3 p2(Point_3(0,0,10), Point_3(0,1,10), Point_3(1,0,0)); // + + assert(do_intersect(p0,p1,p2) == false); // pairwise intersections, i.e. 3 lines + } + + { + Plane_3 p0(Point_3(0,0,0), Point_3(1,0,0), Point_3(0,1,0)); + Plane_3 p1(Point_3(0,0,0), Point_3(1,1,1), Point_3(1,1,0)); + Plane_3 p2(Point_3(1,0,1), Point_3(1,1,5), Point_3(0,1,1)); + + assert(do_intersect(p0,p1,p2) == true); // three in a point + } + return 0; +} From c6b20383531cc390b0529dbe6f1b855fbdf92313 Mon Sep 17 00:00:00 2001 From: Andreas Fabri Date: Mon, 29 Mar 2021 17:40:46 +0100 Subject: [PATCH 033/171] Rename test --- .../test/Intersections_3/{do_intersect.cpp => do_intersect_3.cpp} | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename Intersections_3/test/Intersections_3/{do_intersect.cpp => do_intersect_3.cpp} (100%) diff --git a/Intersections_3/test/Intersections_3/do_intersect.cpp b/Intersections_3/test/Intersections_3/do_intersect_3.cpp similarity index 100% rename from Intersections_3/test/Intersections_3/do_intersect.cpp rename to Intersections_3/test/Intersections_3/do_intersect_3.cpp From 618fe5cb6259fd370f2800de9499620d68332c4e Mon Sep 17 00:00:00 2001 From: Maxime Gimeno Date: Tue, 30 Mar 2021 10:08:33 +0200 Subject: [PATCH 034/171] EWxplicitely ban api-ms-win, as those dlls can come from different places. --- Scripts/developer_scripts/cgal_demo_copy_all_dlls_cygwin.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Scripts/developer_scripts/cgal_demo_copy_all_dlls_cygwin.sh b/Scripts/developer_scripts/cgal_demo_copy_all_dlls_cygwin.sh index fec32e0d3f3..58b1b906fd2 100644 --- a/Scripts/developer_scripts/cgal_demo_copy_all_dlls_cygwin.sh +++ b/Scripts/developer_scripts/cgal_demo_copy_all_dlls_cygwin.sh @@ -20,7 +20,7 @@ copy_dll() local dll_full_path=$(cygpath --unix --absolute "$1") echo "copy $dll_full_path to $2" #remove all dlls from system and Visual - if ! [[ "$dll_full_path" =~ "Visual" ]] && ! [[ "$dll_full_path" =~ "system32" ]]; then + if ! [[ "$dll_full_path" =~ "api-ms-win" ]] && ! [[ "$dll_full_path" =~ "system32" ]]; then cp "$dll_full_path" "$2" fi } From dbfb7157bbb7f4d4d383a3642c447cac3f680552 Mon Sep 17 00:00:00 2001 From: Andreas Fabri Date: Tue, 30 Mar 2021 10:14:02 +0100 Subject: [PATCH 035/171] Rename compare() to compare_quotients() --- Algebraic_foundations/include/CGAL/number_utils.h | 4 ++-- .../CGAL/Intersections_3/internal/intersection_3_1_impl.h | 6 +++--- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/Algebraic_foundations/include/CGAL/number_utils.h b/Algebraic_foundations/include/CGAL/number_utils.h index 7195f057cef..298f2708e23 100644 --- a/Algebraic_foundations/include/CGAL/number_utils.h +++ b/Algebraic_foundations/include/CGAL/number_utils.h @@ -326,8 +326,8 @@ NT approximate_sqrt(const NT& nt) template Comparison_result -compare(const NT& xnum, const NT& xden, - const NT& ynum, const NT& yden) +compare_quotients(const NT& xnum, const NT& xden, + const NT& ynum, const NT& yden) { // No assumptions on the sign of den are made diff --git a/Intersections_3/include/CGAL/Intersections_3/internal/intersection_3_1_impl.h b/Intersections_3/include/CGAL/Intersections_3/internal/intersection_3_1_impl.h index f07569dc229..9b2ff958e8d 100644 --- a/Intersections_3/include/CGAL/Intersections_3/internal/intersection_3_1_impl.h +++ b/Intersections_3/include/CGAL/Intersections_3/internal/intersection_3_1_impl.h @@ -1781,11 +1781,11 @@ do_intersect(const Line_3 &line, const Iso_cuboid_3 &box, const R&) _denum = newdenum; } else { - if (compare(newmin, newdenum, _min, _denum) == LARGER) + if (compare_quotients(newmin, newdenum, _min, _denum) == LARGER) _min = newmin; - if (compare(newmax, newdenum, _max, _denum) == LARGER) + if (compare_quotients(newmax, newdenum, _max, _denum) == LARGER) _max = newmax; - if (compare(_max, _denum, _min, _denum) == SMALLER) { + if (compare_quotients(_max, _denum, _min, _denum) == SMALLER) { return false; } _denum = newdenum; From 7ebdd07a4c406758a13697d4287c566169f00e8f Mon Sep 17 00:00:00 2001 From: Andreas Fabri Date: Tue, 30 Mar 2021 14:28:55 +0100 Subject: [PATCH 036/171] Add to rank as expression templates don't match --- .../internal/intersection_3_1_impl.h | 8 +++-- Kernel_23/include/CGAL/rank.h | 36 +++++++++---------- 2 files changed, 23 insertions(+), 21 deletions(-) diff --git a/Intersections_3/include/CGAL/Intersections_3/internal/intersection_3_1_impl.h b/Intersections_3/include/CGAL/Intersections_3/internal/intersection_3_1_impl.h index 9b2ff958e8d..8ac11d3310f 100644 --- a/Intersections_3/include/CGAL/Intersections_3/internal/intersection_3_1_impl.h +++ b/Intersections_3/include/CGAL/Intersections_3/internal/intersection_3_1_impl.h @@ -1681,6 +1681,8 @@ inline bool do_intersect(const Plane_3 &plane1, const Plane_3 &plane2, const Plane_3 &plane3, const R& r) { + typedef typename R::RT RT; + if(! is_zero(determinant(plane1.a(), plane1.b(), plane1.c(), plane2.a(), plane2.b(), plane2.c(), plane3.a(), plane3.b(), plane3.c()))){ @@ -1703,9 +1705,9 @@ do_intersect(const Plane_3 &plane1, const Plane_3 &plane2, if(b23 && ((plane2 == plane3)||(plane2 == plane3.opposite() ))) return true; } - int rd = rank_34(plane1.a(), plane1.b(), plane1.c(), plane1.d(), - plane2.a(), plane2.b(), plane2.c(), plane2.d(), - plane3.a(), plane3.b(), plane3.c(), plane3.d()); + int rd = rank_34(plane1.a(), plane1.b(), plane1.c(), plane1.d(), + plane2.a(), plane2.b(), plane2.c(), plane2.d(), + plane3.a(), plane3.b(), plane3.c(), plane3.d()); return rd == 2; } diff --git a/Kernel_23/include/CGAL/rank.h b/Kernel_23/include/CGAL/rank.h index 58c2c5ac09a..2951e92c562 100644 --- a/Kernel_23/include/CGAL/rank.h +++ b/Kernel_23/include/CGAL/rank.h @@ -50,21 +50,21 @@ int rank_32(const RT& a0, const RT& b0, { if (a2==0) { - return rank_31(b0,b1,b2); + return rank_31(b0,b1,b2); } else { - return 1 + rank_21(b0, b1); + return 1 + rank_21(b0, b1); } } else { - return 1 + rank_21(b0, a1*b2-a2*b1); + return 1 + rank_21(b0, a1*b2-a2*b1); } } else { - return 1 + rank_21(a0*b1-a1*b0, a0*b2-a2*b0); + return 1 + rank_21(a0*b1-a1*b0, a0*b2-a2*b0); } } @@ -76,12 +76,12 @@ int rank_22(const RT& a0, const RT& b0, { if (a1==0) { - return rank_21(b0,b1); + return rank_21(b0,b1); } else - return 1 + rank_11(b0); + return 1 + rank_11(b0); } - return 1 + rank_11(a0*b1-a1*b0); + return 1 + rank_11(a0*b1-a1*b0); } template @@ -95,19 +95,19 @@ int rank_33(const RT& a0, const RT& b0, const RT& c0, { if (a2==0) { - return rank_32(b0, c0, b1, c1, b2, c2); + return rank_32(b0, c0, b1, c1, b2, c2); } else { - return 1 + rank_22(b0, c0, b1, c1); + return 1 + rank_22(b0, c0, b1, c1); } } else - return 1 + rank_22(b0, c0, a1*b2-a2*b1, a1*c2-a2*c1); + return 1 + rank_22(b0, c0, a1*b2-a2*b1, a1*c2-a2*c1); } else { - return 1 + rank_22(a0*b1-a1*b0, a0*c1-a1*c0, a0*b2-a2*b0, a0*c2-a2*c0); + return 1 + rank_22(a0*b1-a1*b0, a0*c1-a1*c0, a0*b2-a2*b0, a0*c2-a2*c0); } } @@ -120,14 +120,14 @@ int rank_23(const RT& a0, const RT& b0, const RT& c0, { if (a1==0) { - return rank_22(b0, c0, b1, c1); + return rank_22(b0, c0, b1, c1); } else - return 1 + rank_12(b0,c0); + return 1 + rank_12(b0,c0); } else { - return 1 + rank_12(a0*b1-a1*b0,a0*c1-a1*c0); + return 1 + rank_12(a0*b1-a1*b0,a0*c1-a1*c0); } } @@ -143,19 +143,19 @@ int rank_34(const RT& a0, const RT& b0, const RT& c0, const RT& d0, { if (a2==0) { - return rank_33(b0, c0, d0, b1, c1, d1, b2, c2, d2); + return rank_33(b0, c0, d0, b1, c1, d1, b2, c2, d2); } else { - return 1 + rank_23(b0, c0, d0, b1, c1, d1); + return 1 + rank_23(b0, c0, d0, b1, c1, d1); } } else - return 1 + rank_23(b0, c0, d0,a1*b2-a2*b1, a1*c2-a2*c1, a1*d2 - a2*d1); + return 1 + rank_23(b0, c0, d0,a1*b2-a2*b1, a1*c2-a2*c1, a1*d2 - a2*d1); } else { - return 1 + rank_23(a0*b1-a1*b0, a0*c1-a1*c0, a0*d1-a1*d0, a0*b2-a2*b0, a0*c2-a2*c0, a0*d2-a2*d0); + return 1 + rank_23(a0*b1-a1*b0, a0*c1-a1*c0, a0*d1-a1*d0, a0*b2-a2*b0, a0*c2-a2*c0, a0*d2-a2*d0); } } From 6ac2ee54db3edcf03c3d3079a42b256a142adf4a Mon Sep 17 00:00:00 2001 From: Andreas Fabri Date: Tue, 30 Mar 2021 14:39:27 +0100 Subject: [PATCH 037/171] Remove a test file as it adds nothing new --- .../test/Intersections_3/do_intersect_3.cpp | 114 ------------------ 1 file changed, 114 deletions(-) delete mode 100644 Intersections_3/test/Intersections_3/do_intersect_3.cpp diff --git a/Intersections_3/test/Intersections_3/do_intersect_3.cpp b/Intersections_3/test/Intersections_3/do_intersect_3.cpp deleted file mode 100644 index 60a583ad484..00000000000 --- a/Intersections_3/test/Intersections_3/do_intersect_3.cpp +++ /dev/null @@ -1,114 +0,0 @@ -#include - -typedef CGAL::Exact_predicates_inexact_constructions_kernel K; -typedef K::Triangle_3 Triangle_3; -typedef K::Segment_3 Segment_3; -typedef K::Ray_3 Ray_3; -typedef K::Line_3 Line_3; -typedef K::Tetrahedron_3 Tetrahedron_3; -typedef K::Point_3 Point_3; -typedef K::Plane_3 Plane_3; -typedef K::Iso_cuboid_3 Iso_cuboid_3; -typedef K::Sphere_3 Sphere_3; - -int main() -{ - Point_3 p(0,0,0), q(1,1,1), r(1,0,0), s(1,1,0); - Segment_3 s0(p,q),s1(p,q); - Ray_3 ray(p,q); - Line_3 lin(p,q); - Triangle_3 t0(p,q,r), t1(p,q,r); - Tetrahedron_3 tet(p,q,r,s); - Plane_3 pla(p,q,r); - Iso_cuboid_3 ic(p,q); - Sphere_3 sp(p,1); - CGAL::Bbox_3 bb; - - do_intersect(p,sp); - do_intersect(bb,t0); - do_intersect(t0,t1); - do_intersect(t0,s0); - do_intersect(t0,ray); - do_intersect(t0,lin); - - do_intersect(s0,s1); - do_intersect(pla,s0); - do_intersect(pla,lin); - do_intersect(pla,ray); - do_intersect(pla,pla); - do_intersect(pla,pla,pla); - do_intersect(tet,p); - do_intersect(ic,s0); - do_intersect(ic,ray); - do_intersect(ic,ic); - do_intersect(ic,lin); - do_intersect(ic,pla); - do_intersect(ic,ic); - do_intersect(sp,sp); - - - { - Plane_3 p0(Point_3(0,0,0), Point_3(1,0,0), Point_3(1,1,0)); - Plane_3 p1(Point_3(0,0,1), Point_3(1,0,1), Point_3(1,1,1)); - Plane_3 p2(Point_3(0,0,2), Point_3(1,0,2), Point_3(1,1,2)); - - assert(do_intersect(p0,p1,p2) == false); // three parallel - } - - { - Plane_3 p0(Point_3(0,0,0), Point_3(1,0,0), Point_3(1,1,0)); - Plane_3 p2(Point_3(2,2,0), Point_3(4,2,0), Point_3(4,4,0)); - Plane_3 p1(Point_3(10,10,0), Point_3(10,20,0), Point_3(20,20,0)); - - assert(do_intersect(p0,p1,p2) == true); // three equal - } - - { - Plane_3 p0(Point_3(0,0,0), Point_3(1,0,0), Point_3(1,1,0)); - Plane_3 p2(Point_3(2,2,0), Point_3(4,2,0), Point_3(4,4,0)); - Plane_3 p1(Point_3(10,10,1), Point_3(10,20,1), Point_3(20,20,1)); - - assert(do_intersect(p0,p1,p2) == false); // two equal, one parallel - } - - { - Plane_3 p0(Point_3(0,0,0), Point_3(0,1,0), Point_3(0,0,1)); - - Plane_3 p2(Point_3(2,2,0), Point_3(4,2,0), Point_3(4,4,0)); - Plane_3 p1(Point_3(10,10,1), Point_3(10,20,1), Point_3(20,20,1)); - - assert(do_intersect(p0,p1,p2) == false); // two parallel, one intersecting both - } - - { - Plane_3 p0(Point_3(0,0,0), Point_3(0,1,0), Point_3(0,0,1)); - Plane_3 p1(Point_3(0,0,0), Point_3(1,0,0), Point_3(1,1,0)); - Plane_3 p2(Point_3(2,2,0), Point_3(4,2,0), Point_3(4,4,0)); - assert(do_intersect(p0,p1,p2) == true); // two equal, one intersecting - } - { - Plane_3 p0(Point_3(0,0,0), Point_3(1,1,1), Point_3(0,0,1)); - Plane_3 p1(Point_3(2,2,2), Point_3(6,6,6), Point_3(0,1,0)); - Plane_3 p2(Point_3(3,3,3), Point_3(5,5,5), Point_3(1,0,0)); - - assert(do_intersect(p0,p1,p2) == true); // three in a line - } - - - { - Plane_3 p0(Point_3(0,0,0), Point_3(1,0,0), Point_3(0,1,0)); // xy - Plane_3 p1(Point_3(0,0,0), Point_3(0,0,1), Point_3(0,1,1)); // yz - Plane_3 p2(Point_3(0,0,10), Point_3(0,1,10), Point_3(1,0,0)); // - - assert(do_intersect(p0,p1,p2) == false); // pairwise intersections, i.e. 3 lines - } - - { - Plane_3 p0(Point_3(0,0,0), Point_3(1,0,0), Point_3(0,1,0)); - Plane_3 p1(Point_3(0,0,0), Point_3(1,1,1), Point_3(1,1,0)); - Plane_3 p2(Point_3(1,0,1), Point_3(1,1,5), Point_3(0,1,1)); - - assert(do_intersect(p0,p1,p2) == true); // three in a point - } - return 0; -} From 4e4a93de3720ceafe1795b1307e8ea43ef87a8b8 Mon Sep 17 00:00:00 2001 From: Simon Giraudot Date: Wed, 31 Mar 2021 15:48:05 +0200 Subject: [PATCH 038/171] Resolve ambiguous call to operator== by overloading it with base type --- HalfedgeDS/include/CGAL/HalfedgeDS_iterator.h | 1 + 1 file changed, 1 insertion(+) diff --git a/HalfedgeDS/include/CGAL/HalfedgeDS_iterator.h b/HalfedgeDS/include/CGAL/HalfedgeDS_iterator.h index 0eb0856a890..b2bcac25a33 100644 --- a/HalfedgeDS/include/CGAL/HalfedgeDS_iterator.h +++ b/HalfedgeDS/include/CGAL/HalfedgeDS_iterator.h @@ -321,6 +321,7 @@ public: return It::operator==( It(nullptr)); } bool operator!=( std::nullptr_t p) const { return !(*this == p); } + bool operator==( const It& i) const { return It::operator==(i); } bool operator==( const Self& i) const { return It::operator==(i); } bool operator!=( const Self& i) const { return !(*this == i); } From ab75cbea461e7b4573460510068a1cf2e497bc72 Mon Sep 17 00:00:00 2001 From: Andreas Fabri Date: Thu, 1 Apr 2021 18:42:05 +0100 Subject: [PATCH 039/171] Add data set that shows the performance gain when running self_intersections_example.cpp (4.6 sec master, 0.6 sec this PR when run sequentially --- .../Polygon_mesh_processing/data/blade.off | 24455 ++++++++++++++++ 1 file changed, 24455 insertions(+) create mode 100644 Polygon_mesh_processing/examples/Polygon_mesh_processing/data/blade.off diff --git a/Polygon_mesh_processing/examples/Polygon_mesh_processing/data/blade.off b/Polygon_mesh_processing/examples/Polygon_mesh_processing/data/blade.off new file mode 100644 index 00000000000..1837922eeaf --- /dev/null +++ b/Polygon_mesh_processing/examples/Polygon_mesh_processing/data/blade.off @@ -0,0 +1,24455 @@ +OFF +8231 16222 0 +1.2725200000000001 12.995900000000001 2.0417200000000002 +2.1514899999999999 14.8637 2.0087600000000001 +1.9427300000000001 12.995900000000001 2.0197400000000001 +2.3492600000000001 14.8637 1.99777 +2.1514899999999999 12.995900000000001 2.0087600000000001 +2.72282 12.995900000000001 1.9758 +3.0524300000000002 12.995900000000001 1.9428300000000001 +3.3380899999999998 14.8637 1.92086 +3.4589500000000002 14.8637 1.90987 +3.3380899999999998 12.995900000000001 1.92086 +3.7555999999999998 12.995900000000001 1.85494 +3.9753400000000001 14.8637 1.7890200000000001 +3.94238 12.995900000000001 1.8109900000000001 +3.9753400000000001 12.995900000000001 1.7890200000000001 +4.0083000000000002 12.995900000000001 1.7560500000000001 +-5.9899199999999997 14.8637 1.77803 +-5.1878700000000002 14.8637 1.9318500000000001 +1.50325 16.7425 2.0417200000000002 +2.72282 14.8637 1.9758 +3.1952600000000002 14.8637 1.9318500000000001 +3.3380899999999998 16.7425 1.92086 +3.4589500000000002 16.7425 1.90987 +3.5688200000000001 14.8637 1.8878999999999999 +3.9973100000000001 16.7425 1.77803 +3.9753400000000001 16.7425 1.7890200000000001 +4.0083000000000002 14.8637 1.7560500000000001 +3.9973100000000001 14.8637 1.7450699999999999 +3.9753400000000001 12.995900000000001 1.72309 +3.8984299999999998 12.995900000000001 1.6901299999999999 +-5.8800499999999998 14.8637 1.6901299999999999 +-5.9679500000000001 16.7425 1.72309 +-5.9899199999999997 16.7425 1.7450699999999999 +-5.93499 16.7425 1.8109900000000001 +-5.8251200000000001 18.610299999999999 1.84395 +-4.1440999999999999 16.7425 2.0087600000000001 +-3.49586 18.610299999999999 2.0417200000000002 +-3.49586 16.7425 2.0417200000000002 +0.54737800000000003 12.995900000000001 2.0636899999999998 +1.04179 14.8637 2.0527000000000002 +1.2725200000000001 16.7425 2.0417200000000002 +2.1514899999999999 18.610299999999999 2.0087600000000001 +2.3492600000000001 16.7425 1.99777 +3.1952600000000002 18.610299999999999 1.9318500000000001 +3.4589500000000002 18.610299999999999 1.90987 +3.9753400000000001 18.610299999999999 1.7890200000000001 +3.9973100000000001 18.610299999999999 1.77803 +3.9973100000000001 18.610299999999999 1.7450699999999999 +3.94238 16.7425 1.71211 +3.9753400000000001 16.7425 1.72309 +3.8325100000000001 16.7425 1.6791400000000001 +3.67869 14.8637 1.64618 +3.7555999999999998 12.995900000000001 1.65717 +-5.9899199999999997 18.610299999999999 1.77803 +-5.9899199999999997 18.610299999999999 1.7450699999999999 +-5.9899199999999997 16.7425 1.77803 +-5.9679500000000001 16.7425 1.7890200000000001 +-5.9679500000000001 18.610299999999999 1.7890200000000001 +-5.5614299999999997 18.610299999999999 1.8878999999999999 +-5.4515599999999997 18.610299999999999 1.90987 +-5.1878700000000002 18.610299999999999 1.9318500000000001 +-3.0234200000000002 20.489100000000001 2.0527000000000002 +-3.2651300000000001 18.610299999999999 2.0417200000000002 +-3.2651300000000001 16.7425 2.0417200000000002 +0.29467500000000002 12.995900000000001 2.0746799999999999 +0.54737800000000003 14.8637 2.0636899999999998 +0.80008000000000001 14.8637 2.0636899999999998 +0.80008000000000001 16.7425 2.0636899999999998 +1.04179 16.7425 2.0527000000000002 +1.9427300000000001 18.610299999999999 2.0197400000000001 +2.3492600000000001 20.489100000000001 1.99777 +3.3380899999999998 18.610299999999999 1.92086 +3.5688200000000001 18.610299999999999 1.8878999999999999 +3.5688200000000001 16.7425 1.8878999999999999 +3.67869 20.489100000000001 1.8769100000000001 +3.7555999999999998 20.489100000000001 1.85494 +3.8325100000000001 18.610299999999999 1.84395 +3.94238 16.7425 1.8109900000000001 +4.0083000000000002 18.610299999999999 1.7560500000000001 +3.9753400000000001 18.610299999999999 1.72309 +3.8325100000000001 20.489100000000001 1.6791400000000001 +3.67869 18.610299999999999 1.64618 +-5.0450400000000002 16.7425 1.9428300000000001 +-5.8800499999999998 16.7425 1.6901299999999999 +-5.8800499999999998 18.610299999999999 1.6901299999999999 +-5.9679500000000001 20.489100000000001 1.72309 +-5.9679500000000001 18.610299999999999 1.72309 +-5.9899199999999997 20.489100000000001 1.7450699999999999 +-5.8251200000000001 20.489100000000001 1.84395 +-5.7482100000000003 18.610299999999999 1.85494 +-5.66031 18.610299999999999 1.8769100000000001 +-5.7482100000000003 20.489100000000001 1.85494 +-5.5614299999999997 20.489100000000001 1.8878999999999999 +-3.0234200000000002 22.3569 2.0527000000000002 +-3.2651300000000001 20.489100000000001 2.0417200000000002 +-3.0234200000000002 16.7425 2.0527000000000002 +-2.7816999999999998 16.7425 2.0636899999999998 +-3.0234200000000002 14.8637 2.0527000000000002 +0.041973099999999999 12.995900000000001 2.0746799999999999 +1.50325 22.3569 2.0417200000000002 +2.1514899999999999 20.489100000000001 2.0087600000000001 +3.1952600000000002 20.489100000000001 1.9318500000000001 +3.4589500000000002 20.489100000000001 1.90987 +3.94238 18.610299999999999 1.8109900000000001 +3.94238 22.3569 1.8109900000000001 +3.9753400000000001 22.3569 1.7890200000000001 +3.9753400000000001 20.489100000000001 1.7890200000000001 +4.0083000000000002 22.3569 1.7560500000000001 +3.9973100000000001 22.3569 1.7450699999999999 +3.94238 22.3569 1.71211 +3.9753400000000001 20.489100000000001 1.72309 +3.8984299999999998 22.3569 1.6901299999999999 +-5.93499 22.3569 1.71211 +-5.9899199999999997 24.224699999999999 1.77803 +-5.9899199999999997 22.3569 1.7450699999999999 +-5.9679500000000001 22.3569 1.7890200000000001 +-5.7482100000000003 24.224699999999999 1.85494 +-5.7482100000000003 22.3569 1.85494 +-5.8251200000000001 22.3569 1.84395 +-5.5614299999999997 22.3569 1.8878999999999999 +-5.4515599999999997 24.224699999999999 1.90987 +-3.9353400000000001 22.3569 2.0197400000000001 +-3.2651300000000001 24.224699999999999 2.0417200000000002 +-3.2651300000000001 22.3569 2.0417200000000002 +-3.0234200000000002 24.224699999999999 2.0527000000000002 +-2.53999 20.489100000000001 2.0636899999999998 +-2.7816999999999998 18.610299999999999 2.0636899999999998 +-2.53999 16.7425 2.0636899999999998 +-2.7816999999999998 14.8637 2.0636899999999998 +0.041973099999999999 14.8637 2.0746799999999999 +0.54737800000000003 16.7425 2.0636899999999998 +0.80008000000000001 20.489100000000001 2.0636899999999998 +0.80008000000000001 18.610299999999999 2.0636899999999998 +1.2725200000000001 24.224699999999999 2.0417200000000002 +1.2725200000000001 22.3569 2.0417200000000002 +2.72282 22.3569 1.9758 +3.1952600000000002 22.3569 1.9318500000000001 +3.4589500000000002 22.3569 1.90987 +3.5688200000000001 20.489100000000001 1.8878999999999999 +3.67869 22.3569 1.8769100000000001 +3.5688200000000001 22.3569 1.8878999999999999 +3.67869 24.224699999999999 1.8769100000000001 +3.9753400000000001 24.224699999999999 1.7890200000000001 +3.9973100000000001 22.3569 1.77803 +3.9973100000000001 24.224699999999999 1.7450699999999999 +3.5688200000000001 18.610299999999999 1.6242099999999999 +3.5688200000000001 16.7425 1.6242099999999999 +3.3380899999999998 18.610299999999999 1.6022400000000001 +3.3380899999999998 16.7425 1.6022400000000001 +3.4589500000000002 12.995900000000001 1.6132200000000001 +3.5688200000000001 12.995900000000001 1.8878999999999999 +-5.4515599999999997 14.8637 1.6132200000000001 +-5.8251200000000001 18.610299999999999 1.6791400000000001 +-5.8800499999999998 20.489100000000001 1.6901299999999999 +-5.9679500000000001 24.224699999999999 1.7890200000000001 +-5.93499 24.224699999999999 1.8109900000000001 +-5.7482100000000003 26.1035 1.85494 +-4.1440999999999999 26.1035 2.0087600000000001 +-3.9353400000000001 24.224699999999999 2.0197400000000001 +-3.2651300000000001 26.1035 2.0417200000000002 +-2.7816999999999998 24.224699999999999 2.0636899999999998 +-2.53999 26.1035 2.0636899999999998 +-2.28728 24.224699999999999 2.0746799999999999 +-2.53999 22.3569 2.0636899999999998 +-2.28728 20.489100000000001 2.0746799999999999 +-2.53999 18.610299999999999 2.0636899999999998 +-2.28728 18.610299999999999 2.0746799999999999 +-2.53999 14.8637 2.0636899999999998 +-0.47442000000000001 12.995900000000001 2.0746799999999999 +0.29467500000000002 16.7425 2.0746799999999999 +0.54737800000000003 18.610299999999999 2.0636899999999998 +0.29467500000000002 18.610299999999999 2.0746799999999999 +0.80008000000000001 22.3569 2.0636899999999998 +3.1952600000000002 26.1035 1.9318500000000001 +3.0524300000000002 26.1035 1.9428300000000001 +3.4589500000000002 24.224699999999999 1.90987 +3.7555999999999998 24.224699999999999 1.85494 +3.9973100000000001 24.224699999999999 1.77803 +4.0083000000000002 26.1035 1.7560500000000001 +4.0083000000000002 24.224699999999999 1.7560500000000001 +3.8984299999999998 26.1035 1.6901299999999999 +3.8984299999999998 24.224699999999999 1.6901299999999999 +3.8325100000000001 24.224699999999999 1.6791400000000001 +3.67869 24.224699999999999 1.64618 +3.5688200000000001 24.224699999999999 1.6242099999999999 +3.5688200000000001 22.3569 1.6242099999999999 +3.3380899999999998 22.3569 1.6022400000000001 +3.1952600000000002 12.995900000000001 1.58026 +-4.1440999999999999 24.224699999999999 2.0087600000000001 +-5.1878700000000002 14.8637 1.58026 +-5.5614299999999997 18.610299999999999 1.6242099999999999 +-5.7482100000000003 20.489100000000001 1.65717 +-5.8251200000000001 20.489100000000001 1.6791400000000001 +-5.8800499999999998 22.3569 1.6901299999999999 +-5.93499 26.1035 1.71211 +-5.9679500000000001 27.971299999999999 1.7890200000000001 +-5.1878700000000002 27.971299999999999 1.9318500000000001 +-3.0234200000000002 26.1035 2.0527000000000002 +-2.7816999999999998 26.1035 2.0636899999999998 +-2.28728 22.3569 2.0746799999999999 +-2.0345800000000001 18.610299999999999 2.0746799999999999 +-2.28728 16.7425 2.0746799999999999 +-2.28728 14.8637 2.0746799999999999 +-0.73810900000000002 12.995900000000001 2.0746799999999999 +-0.47442000000000001 14.8637 2.0746799999999999 +-0.21073 14.8637 2.0746799999999999 +0.041973099999999999 18.610299999999999 2.0746799999999999 +0.29467500000000002 20.489100000000001 2.0746799999999999 +0.54737800000000003 22.3569 2.0636899999999998 +0.80008000000000001 24.224699999999999 2.0636899999999998 +1.04179 24.224699999999999 2.0527000000000002 +2.3492600000000001 26.1035 1.99777 +3.8325100000000001 27.971299999999999 1.84395 +3.9973100000000001 26.1035 1.77803 +3.9973100000000001 27.971299999999999 1.77803 +3.9753400000000001 27.971299999999999 1.72309 +3.94238 27.971299999999999 1.71211 +3.94238 26.1035 1.71211 +3.7555999999999998 26.1035 1.65717 +3.4589500000000002 27.971299999999999 1.6132200000000001 +3.4589500000000002 26.1035 1.6132200000000001 +3.0524300000000002 24.224699999999999 1.5692699999999999 +3.1952600000000002 20.489100000000001 1.58026 +3.1952600000000002 16.7425 1.58026 +3.1952600000000002 18.610299999999999 1.58026 +-5.4515599999999997 18.610299999999999 1.6132200000000001 +-5.66031 20.489100000000001 1.64618 +-5.8251200000000001 22.3569 1.6791400000000001 +-5.9899199999999997 29.850100000000001 1.7450699999999999 +-5.9899199999999997 27.971299999999999 1.77803 +-5.66031 27.971299999999999 1.8769100000000001 +-3.2651300000000001 29.850100000000001 2.0417200000000002 +-3.0234200000000002 29.850100000000001 2.0527000000000002 +-2.7816999999999998 29.850100000000001 2.0636899999999998 +-3.0234200000000002 27.971299999999999 2.0527000000000002 +-2.7816999999999998 27.971299999999999 2.0636899999999998 +-1.7818799999999999 29.850100000000001 2.0746799999999999 +-2.0345800000000001 27.971299999999999 2.0746799999999999 +-1.7818799999999999 26.1035 2.0746799999999999 +-2.0345800000000001 22.3569 2.0746799999999999 +-1.7818799999999999 20.489100000000001 2.0746799999999999 +-0.990811 12.995900000000001 2.0856699999999999 +-0.47442000000000001 16.7425 2.0746799999999999 +-0.21073 16.7425 2.0746799999999999 +0.041973099999999999 20.489100000000001 2.0746799999999999 +0.80008000000000001 26.1035 2.0636899999999998 +1.9427300000000001 29.850100000000001 2.0197400000000001 +1.9427300000000001 27.971299999999999 2.0197400000000001 +3.1952600000000002 24.224699999999999 1.9318500000000001 +3.3380899999999998 27.971299999999999 1.92086 +3.4589500000000002 27.971299999999999 1.90987 +3.4589500000000002 29.850100000000001 1.90987 +3.5688200000000001 27.971299999999999 1.8878999999999999 +3.7555999999999998 29.850100000000001 1.85494 +3.9753400000000001 29.850100000000001 1.7890200000000001 +3.94238 26.1035 1.8109900000000001 +3.9973100000000001 29.850100000000001 1.77803 +3.9753400000000001 27.971299999999999 1.7890200000000001 +3.9973100000000001 29.850100000000001 1.7450699999999999 +3.9973100000000001 27.971299999999999 1.7450699999999999 +3.8984299999999998 29.850100000000001 1.6901299999999999 +3.8984299999999998 27.971299999999999 1.6901299999999999 +3.7555999999999998 29.850100000000001 1.65717 +-5.5614299999999997 22.3569 1.6242099999999999 +-5.8251200000000001 26.1035 1.6791400000000001 +-5.8251200000000001 24.224699999999999 1.6791400000000001 +-5.8800499999999998 26.1035 1.6901299999999999 +-5.7482100000000003 31.7179 1.85494 +-5.8251200000000001 31.7179 1.84395 +-3.9353400000000001 31.7179 2.0197400000000001 +-3.9353400000000001 29.850100000000001 2.0197400000000001 +-3.49586 31.7179 2.0417200000000002 +-3.49586 29.850100000000001 2.0417200000000002 +-3.2651300000000001 31.7179 2.0417200000000002 +-2.53999 31.7179 2.0636899999999998 +-2.7816999999999998 31.7179 2.0636899999999998 +-2.0345800000000001 31.7179 2.0746799999999999 +-2.0345800000000001 29.850100000000001 2.0746799999999999 +-1.7818799999999999 24.224699999999999 2.0746799999999999 +-1.5181899999999999 18.610299999999999 2.0746799999999999 +-1.7818799999999999 18.610299999999999 2.0746799999999999 +-1.5181899999999999 16.7425 2.0746799999999999 +-1.7818799999999999 14.8637 2.0746799999999999 +-1.2544999999999999 12.995900000000001 2.0746799999999999 +-0.73810900000000002 14.8637 2.0746799999999999 +0.29467500000000002 24.224699999999999 2.0746799999999999 +0.80008000000000001 27.971299999999999 2.0636899999999998 +1.50325 31.7179 2.0417200000000002 +2.1514899999999999 29.850100000000001 2.0087600000000001 +3.1952600000000002 29.850100000000001 1.9318500000000001 +4.0083000000000002 29.850100000000001 1.7560500000000001 +3.9973100000000001 31.7179 1.7450699999999999 +3.67869 29.850100000000001 1.64618 +-5.66031 24.224699999999999 1.64618 +-5.7482100000000003 26.1035 1.65717 +-5.8800499999999998 27.971299999999999 1.6901299999999999 +-5.9899199999999997 33.585700000000003 1.7450699999999999 +-5.8251200000000001 33.585700000000003 1.84395 +-2.7816999999999998 33.585700000000003 2.0636899999999998 +-2.53999 33.585700000000003 2.0636899999999998 +-2.28728 33.585700000000003 2.0746799999999999 +-1.5181899999999999 31.7179 2.0746799999999999 +-1.5181899999999999 26.1035 2.0746799999999999 +-1.5181899999999999 24.224699999999999 2.0746799999999999 +-1.5181899999999999 20.489100000000001 2.0746799999999999 +-1.2544999999999999 18.610299999999999 2.0746799999999999 +-1.2544999999999999 20.489100000000001 2.0746799999999999 +-1.2544999999999999 16.7425 2.0746799999999999 +-1.5181899999999999 14.8637 2.0746799999999999 +-1.2544999999999999 14.8637 2.0746799999999999 +-0.990811 14.8637 2.0856699999999999 +-0.990811 16.7425 2.0856699999999999 +-0.47442000000000001 18.610299999999999 2.0746799999999999 +-0.21073 20.489100000000001 2.0746799999999999 +0.29467500000000002 26.1035 2.0746799999999999 +0.54737800000000003 26.1035 2.0636899999999998 +0.54737800000000003 27.971299999999999 2.0636899999999998 +1.2725200000000001 31.7179 2.0417200000000002 +2.1514899999999999 33.585700000000003 2.0087600000000001 +1.9427300000000001 31.7179 2.0197400000000001 +2.8876200000000001 33.585700000000003 1.9648099999999999 +3.8325100000000001 33.585700000000003 1.84395 +3.9973100000000001 33.585700000000003 1.77803 +3.9753400000000001 33.585700000000003 1.7890200000000001 +3.9973100000000001 31.7179 1.77803 +4.0083000000000002 33.585700000000003 1.7560500000000001 +3.8984299999999998 33.585700000000003 1.6901299999999999 +3.94238 31.7179 1.71211 +3.67869 31.7179 1.64618 +3.4589500000000002 31.7179 1.6132200000000001 +2.1514899999999999 22.3569 1.50335 +2.1514899999999999 18.610299999999999 1.50335 +2.1514899999999999 20.489100000000001 1.50335 +-5.3197099999999997 20.489100000000001 1.6022400000000001 +-5.1878700000000002 20.489100000000001 1.58026 +-5.4515599999999997 20.489100000000001 1.6132200000000001 +-4.7154199999999999 16.7425 1.5472999999999999 +-4.5286400000000002 16.7425 1.5253300000000001 +-4.7154199999999999 18.610299999999999 1.5472999999999999 +-5.4515599999999997 24.224699999999999 1.6132200000000001 +-5.5614299999999997 26.1035 1.6242099999999999 +-5.9899199999999997 33.585700000000003 1.77803 +-5.9679500000000001 33.585700000000003 1.7890200000000001 +-5.8800499999999998 35.464500000000001 1.8219799999999999 +-5.8800499999999998 33.585700000000003 1.8219799999999999 +-3.0234200000000002 33.585700000000003 2.0527000000000002 +-2.53999 35.464500000000001 2.0636899999999998 +-2.0345800000000001 35.464500000000001 2.0746799999999999 +-2.0345800000000001 33.585700000000003 2.0746799999999999 +-1.5181899999999999 35.464500000000001 2.0746799999999999 +-1.7818799999999999 35.464500000000001 2.0746799999999999 +-1.2544999999999999 33.585700000000003 2.0746799999999999 +-1.2544999999999999 29.850100000000001 2.0746799999999999 +-1.2544999999999999 27.971299999999999 2.0746799999999999 +-0.73810900000000002 20.489100000000001 2.0746799999999999 +-0.73810900000000002 18.610299999999999 2.0746799999999999 +-0.47442000000000001 20.489100000000001 2.0746799999999999 +-0.21073 24.224699999999999 2.0746799999999999 +0.041973099999999999 24.224699999999999 2.0746799999999999 +0.29467500000000002 27.971299999999999 2.0746799999999999 +0.80008000000000001 31.7179 2.0636899999999998 +0.80008000000000001 29.850100000000001 2.0636899999999998 +1.2725200000000001 33.585700000000003 2.0417200000000002 +2.1514899999999999 35.464500000000001 2.0087600000000001 +2.3492600000000001 33.585700000000003 1.99777 +2.72282 35.464500000000001 1.9758 +2.72282 33.585700000000003 1.9758 +3.5688200000000001 35.464500000000001 1.8878999999999999 +3.67869 33.585700000000003 1.8769100000000001 +3.8325100000000001 35.464500000000001 1.84395 +3.7555999999999998 33.585700000000003 1.85494 +3.94238 31.7179 1.8109900000000001 +3.9753400000000001 35.464500000000001 1.7890200000000001 +4.0083000000000002 35.464500000000001 1.7560500000000001 +3.8325100000000001 33.585700000000003 1.6791400000000001 +3.67869 35.464500000000001 1.64618 +3.4589500000000002 33.585700000000003 1.6132200000000001 +3.1952600000000002 31.7179 1.58026 +2.1514899999999999 26.1035 1.50335 +2.1514899999999999 24.224699999999999 1.50335 +2.3492600000000001 24.224699999999999 1.51434 +2.1514899999999999 16.7425 1.50335 +1.9427300000000001 16.7425 1.50335 +1.04179 14.8637 1.4594 +1.2725200000000001 12.995900000000001 1.4703900000000001 +1.04179 12.995900000000001 1.4594 +0.54737800000000003 12.995900000000001 1.44842 +0.29467500000000002 12.995900000000001 1.44842 +0.041973099999999999 12.995900000000001 1.44842 +-0.21073 12.995900000000001 1.43743 +-0.47442000000000001 12.995900000000001 1.43743 +-0.73810900000000002 12.995900000000001 1.43743 +-5.8251200000000001 27.971299999999999 1.84395 +-1.5181899999999999 33.585700000000003 2.0746799999999999 +3.8984299999999998 14.8637 1.6901299999999999 +-4.3418599999999996 16.7425 1.51434 +-4.1440999999999999 14.8637 1.50335 +-5.0450400000000002 24.224699999999999 1.5692699999999999 +-5.0450400000000002 22.3569 1.5692699999999999 +-5.3197099999999997 24.224699999999999 1.6022400000000001 +-5.1878700000000002 24.224699999999999 1.58026 +-5.4515599999999997 27.971299999999999 1.6132200000000001 +-5.7482100000000003 29.850100000000001 1.65717 +-5.8800499999999998 31.7179 1.6901299999999999 +-5.8800499999999998 29.850100000000001 1.6901299999999999 +-5.93499 33.585700000000003 1.71211 +-5.8800499999999998 33.585700000000003 1.6901299999999999 +-5.8251200000000001 37.332299999999996 1.84395 +-5.8251200000000001 35.464500000000001 1.84395 +-5.5614299999999997 35.464500000000001 1.8878999999999999 +-5.5614299999999997 33.585700000000003 1.8878999999999999 +-5.0450400000000002 37.332299999999996 1.9428300000000001 +-4.1440999999999999 35.464500000000001 2.0087600000000001 +-3.0234200000000002 37.332299999999996 2.0527000000000002 +-2.7816999999999998 35.464500000000001 2.0636899999999998 +-0.990811 35.464500000000001 2.0856699999999999 +-1.2544999999999999 35.464500000000001 2.0746799999999999 +-0.73810900000000002 37.332299999999996 2.0746799999999999 +-0.73810900000000002 26.1035 2.0746799999999999 +-0.990811 24.224699999999999 2.0856699999999999 +-0.990811 22.3569 2.0856699999999999 +-0.990811 20.489100000000001 2.0856699999999999 +-0.47442000000000001 22.3569 2.0746799999999999 +-0.47442000000000001 24.224699999999999 2.0746799999999999 +0.041973099999999999 26.1035 2.0746799999999999 +0.041973099999999999 27.971299999999999 2.0746799999999999 +0.54737800000000003 31.7179 2.0636899999999998 +1.04179 35.464500000000001 2.0527000000000002 +1.2725200000000001 35.464500000000001 2.0417200000000002 +2.3492600000000001 37.332299999999996 1.99777 +2.8876200000000001 37.332299999999996 1.9648099999999999 +2.8876200000000001 35.464500000000001 1.9648099999999999 +3.4589500000000002 37.332299999999996 1.90987 +3.3380899999999998 35.464500000000001 1.92086 +3.94238 35.464500000000001 1.8109900000000001 +3.9973100000000001 37.332299999999996 1.77803 +2.3492600000000001 29.850100000000001 1.51434 +2.3492600000000001 27.971299999999999 1.51434 +1.9427300000000001 24.224699999999999 1.50335 +1.2725200000000001 14.8637 1.4703900000000001 +0.80008000000000001 14.8637 1.4594 +0.54737800000000003 16.7425 1.44842 +0.54737800000000003 14.8637 1.44842 +0.29467500000000002 16.7425 1.44842 +0.041973099999999999 14.8637 1.44842 +-0.21073 14.8637 1.43743 +-0.47442000000000001 14.8637 1.43743 +-0.47442000000000001 16.7425 1.43743 +-0.990811 16.7425 1.43743 +-0.73810900000000002 14.8637 1.43743 +-0.990811 14.8637 1.43743 +-1.5181899999999999 16.7425 1.43743 +-1.2544999999999999 14.8637 1.43743 +-2.0345800000000001 16.7425 1.44842 +-1.7818799999999999 14.8637 1.43743 +-2.0345800000000001 14.8637 1.44842 +-5.5614299999999997 29.850100000000001 1.6242099999999999 +-5.8251200000000001 33.585700000000003 1.6791400000000001 +-5.8251200000000001 31.7179 1.6791400000000001 +-5.9679500000000001 22.3569 1.72309 +-5.9679500000000001 26.1035 1.72309 +-5.9679500000000001 24.224699999999999 1.72309 +-5.9679500000000001 29.850100000000001 1.72309 +-5.9899199999999997 31.7179 1.7450699999999999 +-5.9899199999999997 35.464500000000001 1.7450699999999999 +-5.8251200000000001 39.210999999999999 1.84395 +-5.7482100000000003 37.332299999999996 1.85494 +-5.66031 22.3569 1.8769100000000001 +-5.66031 24.224699999999999 1.8769100000000001 +1.2725200000000001 14.8637 2.0417200000000002 +-5.7482100000000003 27.971299999999999 1.85494 +-5.7482100000000003 29.850100000000001 1.85494 +-5.66031 37.332299999999996 1.8769100000000001 +-5.4515599999999997 37.332299999999996 1.90987 +-5.5614299999999997 37.332299999999996 1.8878999999999999 +-5.1878700000000002 39.210999999999999 1.9318500000000001 +-3.0234200000000002 39.210999999999999 2.0527000000000002 +-3.2651300000000001 37.332299999999996 2.0417200000000002 +3.8984299999999998 16.7425 1.8219799999999999 +-2.7816999999999998 37.332299999999996 2.0636899999999998 +-2.0345800000000001 37.332299999999996 2.0746799999999999 +-1.7818799999999999 37.332299999999996 2.0746799999999999 +-1.7818799999999999 39.210999999999999 2.0746799999999999 +-0.73810900000000002 27.971299999999999 2.0746799999999999 +-0.73810900000000002 24.224699999999999 2.0746799999999999 +-0.73810900000000002 22.3569 2.0746799999999999 +-0.21073 27.971299999999999 2.0746799999999999 +-0.21073 26.1035 2.0746799999999999 +0.29467500000000002 31.7179 2.0746799999999999 +0.29467500000000002 29.850100000000001 2.0746799999999999 +0.80008000000000001 33.585700000000003 2.0636899999999998 +2.1514899999999999 39.210999999999999 2.0087600000000001 +2.1514899999999999 37.332299999999996 2.0087600000000001 +3.1952600000000002 37.332299999999996 1.9318500000000001 +3.4589500000000002 39.210999999999999 1.90987 +3.3380899999999998 37.332299999999996 1.92086 +3.5688200000000001 37.332299999999996 1.8878999999999999 +3.8984299999999998 22.3569 1.8219799999999999 +3.94238 24.224699999999999 1.8109900000000001 +3.94238 27.971299999999999 1.8109900000000001 +3.94238 33.585700000000003 1.8109900000000001 +3.8984299999999998 33.585700000000003 1.8219799999999999 +3.9753400000000001 39.210999999999999 1.7890200000000001 +3.94238 37.332299999999996 1.8109900000000001 +3.9753400000000001 37.332299999999996 1.7890200000000001 +3.9973100000000001 37.332299999999996 1.7450699999999999 +3.8984299999999998 39.210999999999999 1.6901299999999999 +3.8325100000000001 37.332299999999996 1.6791400000000001 +3.3380899999999998 39.210999999999999 1.6022400000000001 +2.1514899999999999 35.464500000000001 1.50335 +2.1514899999999999 33.585700000000003 1.50335 +1.9427300000000001 29.850100000000001 1.50335 +1.04179 16.7425 1.4594 +0.80008000000000001 18.610299999999999 1.4594 +0.80008000000000001 16.7425 1.4594 +-5.9899199999999997 20.489100000000001 1.77803 +0.041973099999999999 16.7425 1.44842 +-0.47442000000000001 18.610299999999999 1.43743 +-1.7818799999999999 16.7425 1.43743 +-2.28728 16.7425 1.44842 +-2.53999 16.7425 1.44842 +-2.28728 14.8637 1.44842 +-1.7818799999999999 27.971299999999999 2.0746799999999999 +-5.0450400000000002 33.585700000000003 1.9428300000000001 +3.4589500000000002 26.1035 1.90987 +-3.49586 24.224699999999999 2.0417200000000002 +-0.21073 22.3569 2.0746799999999999 +-2.53999 24.224699999999999 2.0636899999999998 +-2.7816999999999998 22.3569 2.0636899999999998 +-0.47442000000000001 27.971299999999999 2.0746799999999999 +3.94238 20.489100000000001 1.8109900000000001 +-0.47442000000000001 31.7179 2.0746799999999999 +3.9973100000000001 20.489100000000001 1.7450699999999999 +-5.0450400000000002 29.850100000000001 1.9428300000000001 +-5.4515599999999997 29.850100000000001 1.90987 +-5.1878700000000002 16.7425 1.58026 +3.94238 39.210999999999999 1.8109900000000001 +-3.0234200000000002 31.7179 2.0527000000000002 +2.3492600000000001 16.7425 1.51434 +3.9973100000000001 39.210999999999999 1.77803 +-5.5614299999999997 26.1035 1.8878999999999999 +3.5688200000000001 24.224699999999999 1.8878999999999999 +-1.5181899999999999 14.8637 1.43743 +-5.5614299999999997 16.7425 1.8878999999999999 +2.1514899999999999 31.7179 1.50335 +3.67869 16.7425 1.64618 +3.7555999999999998 16.7425 1.65717 +3.0524300000000002 27.971299999999999 1.9428300000000001 +3.9753400000000001 33.585700000000003 1.72309 +3.4589500000000002 22.3569 1.6132200000000001 +3.4589500000000002 20.489100000000001 1.6132200000000001 +3.1952600000000002 16.7425 1.9318500000000001 +3.7555999999999998 22.3569 1.65717 +-1.5181899999999999 29.850100000000001 2.0746799999999999 +3.8984299999999998 31.7179 1.6901299999999999 +-5.5614299999999997 27.971299999999999 1.6242099999999999 +2.72282 37.332299999999996 1.9758 +-1.5181899999999999 22.3569 2.0746799999999999 +-1.7818799999999999 22.3569 2.0746799999999999 +-5.3197099999999997 18.610299999999999 1.6022400000000001 +2.1514899999999999 31.7179 2.0087600000000001 +3.1952600000000002 14.8637 1.58026 +-0.990811 26.1035 2.0856699999999999 +-1.2544999999999999 26.1035 2.0746799999999999 +2.3492600000000001 12.995900000000001 1.51434 +2.3492600000000001 22.3569 1.51434 +-3.49586 27.971299999999999 2.0417200000000002 +3.7555999999999998 37.332299999999996 1.65717 +3.7555999999999998 35.464500000000001 1.65717 +3.3380899999999998 26.1035 1.92086 +4.0083000000000002 37.332299999999996 1.7560500000000001 +2.1514899999999999 24.224699999999999 2.0087600000000001 +-5.3197099999999997 27.971299999999999 1.6022400000000001 +3.4589500000000002 14.8637 1.6132200000000001 +3.1952600000000002 29.850100000000001 1.58026 +-0.73810900000000002 29.850100000000001 2.0746799999999999 +3.9973100000000001 35.464500000000001 1.77803 +3.8984299999999998 37.332299999999996 1.6901299999999999 +-0.47442000000000001 39.210999999999999 2.0746799999999999 +-0.73810900000000002 39.210999999999999 2.0746799999999999 +3.9753400000000001 31.7179 1.7890200000000001 +3.94238 29.850100000000001 1.8109900000000001 +-5.7482100000000003 14.8637 1.65717 +3.8984299999999998 20.489100000000001 1.6901299999999999 +3.94238 18.610299999999999 1.71211 +-3.0234200000000002 18.610299999999999 2.0527000000000002 +4.0083000000000002 27.971299999999999 1.7560500000000001 +-5.8251200000000001 140.31399999999999 1.6791400000000001 +-5.8800499999999998 142.18199999999999 1.6901299999999999 +-5.8251200000000001 142.18199999999999 1.6791400000000001 +-5.66031 142.18199999999999 1.64618 +-5.3197099999999997 142.18199999999999 1.6022400000000001 +-4.3418599999999996 142.18199999999999 1.51434 +-3.0234200000000002 140.31399999999999 1.4594 +-1.7818799999999999 140.31399999999999 1.43743 +-1.2544999999999999 140.31399999999999 1.43743 +-1.2544999999999999 142.18199999999999 1.43743 +-0.47442000000000001 140.31399999999999 1.43743 +-0.73810900000000002 142.18199999999999 1.43743 +-0.21073 140.31399999999999 1.43743 +-0.47442000000000001 142.18199999999999 1.43743 +0.54737800000000003 140.31399999999999 1.44842 +0.29467500000000002 142.18199999999999 1.44842 +0.80008000000000001 142.18199999999999 1.4594 +2.3492600000000001 140.31399999999999 1.51434 +2.1514899999999999 142.18199999999999 1.50335 +4.0083000000000002 140.31399999999999 1.7560500000000001 +3.9973100000000001 142.18199999999999 1.7450699999999999 +3.9973100000000001 142.18199999999999 1.77803 +-5.8251200000000001 142.18199999999999 1.84395 +-5.9899199999999997 140.31399999999999 1.7450699999999999 +-5.9679500000000001 138.435 1.72309 +-5.8800499999999998 140.31399999999999 1.6901299999999999 +-5.5614299999999997 140.31399999999999 1.6242099999999999 +-5.5614299999999997 138.435 1.6242099999999999 +-5.1878700000000002 142.18199999999999 1.58026 +-5.0450400000000002 138.435 1.5692699999999999 +-3.2651300000000001 140.31399999999999 1.4703900000000001 +-2.7816999999999998 140.31399999999999 1.4594 +-2.28728 140.31399999999999 1.44842 +-0.21073 138.435 1.43743 +0.29467500000000002 138.435 1.44842 +0.29467500000000002 140.31399999999999 1.44842 +0.80008000000000001 138.435 1.4594 +1.9427300000000001 138.435 1.4923599999999999 +1.9427300000000001 140.31399999999999 1.4923599999999999 +2.1514899999999999 140.31399999999999 1.50335 +3.0524300000000002 142.18199999999999 1.5692699999999999 +3.94238 138.435 1.71211 +3.9973100000000001 140.31399999999999 1.7450699999999999 +3.9753400000000001 140.31399999999999 1.7890200000000001 +3.9973100000000001 140.31399999999999 1.77803 +-3.9353400000000001 140.31399999999999 2.0197400000000001 +-5.7482100000000003 140.31399999999999 1.85494 +-5.8800499999999998 136.56700000000001 1.6901299999999999 +-5.8251200000000001 136.56700000000001 1.6791400000000001 +-5.8800499999999998 20.489100000000001 1.8219799999999999 +-5.66031 138.435 1.64618 +-4.7154199999999999 138.435 1.5472999999999999 +-4.5286400000000002 138.435 1.5253300000000001 +-4.3418599999999996 138.435 1.51434 +-2.7816999999999998 138.435 1.4594 +-2.0345800000000001 138.435 1.44842 +-0.990811 136.56700000000001 1.43743 +-0.47442000000000001 136.56700000000001 1.43743 +-0.47442000000000001 138.435 1.43743 +0.29467500000000002 136.56700000000001 1.44842 +1.04179 138.435 1.4594 +1.04179 136.56700000000001 1.4594 +1.7339800000000001 138.435 1.4923599999999999 +2.1514899999999999 138.435 1.50335 +3.3380899999999998 136.56700000000001 1.6022400000000001 +3.3380899999999998 138.435 1.6022400000000001 +3.67869 136.56700000000001 1.64618 +3.9973100000000001 138.435 1.77803 +3.9753400000000001 136.56700000000001 1.7890200000000001 +3.8325100000000001 138.435 1.84395 +3.4589500000000002 138.435 1.89889 +3.4589500000000002 140.31399999999999 1.89889 +2.8876200000000001 140.31399999999999 1.9648099999999999 +2.1514899999999999 140.31399999999999 2.0087600000000001 +1.04179 140.31399999999999 2.0527000000000002 +0.29467500000000002 138.435 2.0636899999999998 +0.54737800000000003 140.31399999999999 2.0636899999999998 +-5.4515599999999997 136.56700000000001 1.90987 +-5.5614299999999997 138.435 1.8878999999999999 +-5.7482100000000003 138.435 1.85494 +-5.7482100000000003 134.69999999999999 1.65717 +-4.5286400000000002 134.69999999999999 1.5253300000000001 +-4.7154199999999999 136.56700000000001 1.5472999999999999 +-3.0234200000000002 134.69999999999999 1.4594 +-2.53999 134.69999999999999 1.44842 +-1.2544999999999999 136.56700000000001 1.43743 +-0.47442000000000001 134.69999999999999 1.43743 +0.041973099999999999 136.56700000000001 1.44842 +0.80008000000000001 136.56700000000001 1.4594 +0.80008000000000001 134.69999999999999 1.4594 +1.9427300000000001 136.56700000000001 1.4923599999999999 +1.9427300000000001 134.69999999999999 1.4923599999999999 +2.1514899999999999 136.56700000000001 1.50335 +2.1514899999999999 134.69999999999999 1.50335 +3.7555999999999998 136.56700000000001 1.65717 +0.54737800000000003 29.850100000000001 2.0636899999999998 +3.8984299999999998 134.69999999999999 1.6901299999999999 +3.9753400000000001 134.69999999999999 1.72309 +3.1952600000000002 138.435 1.9318500000000001 +2.3492600000000001 136.56700000000001 1.99777 +0.80008000000000001 136.56700000000001 2.0636899999999998 +0.80008000000000001 138.435 2.0636899999999998 +-0.21073 138.435 2.0746799999999999 +0.041973099999999999 140.31399999999999 2.0746799999999999 +-3.9353400000000001 138.435 2.0197400000000001 +-4.1440999999999999 136.56700000000001 2.0087600000000001 +-5.1878700000000002 134.69999999999999 1.9318500000000001 +-5.0450400000000002 136.56700000000001 1.9428300000000001 +-5.5614299999999997 134.69999999999999 1.8878999999999999 +-5.66031 134.69999999999999 1.8769100000000001 +-5.9679500000000001 134.69999999999999 1.72309 +-5.9679500000000001 136.56700000000001 1.72309 +-5.8800499999999998 138.435 1.6901299999999999 +-5.93499 136.56700000000001 1.71211 +-5.8800499999999998 134.69999999999999 1.6901299999999999 +-5.5614299999999997 132.821 1.6242099999999999 +-5.66031 134.69999999999999 1.64618 +-5.5614299999999997 136.56700000000001 1.6242099999999999 +-5.3197099999999997 134.69999999999999 1.6022400000000001 +-5.1878700000000002 138.435 1.58026 +-4.7154199999999999 134.69999999999999 1.5472999999999999 +-3.2651300000000001 134.69999999999999 1.4703900000000001 +-2.53999 132.821 1.44842 +-2.7816999999999998 132.821 1.4594 +-2.0345800000000001 132.821 1.44842 +-1.2544999999999999 134.69999999999999 1.43743 +-0.21073 134.69999999999999 1.43743 +0.041973099999999999 134.69999999999999 1.44842 +0.29467500000000002 132.821 1.44842 +0.54737800000000003 134.69999999999999 1.44842 +1.7339800000000001 132.821 1.4923599999999999 +1.7339800000000001 134.69999999999999 1.4923599999999999 +2.3492600000000001 132.821 1.51434 +3.4589500000000002 136.56700000000001 1.6132200000000001 +3.5688200000000001 136.56700000000001 1.6242099999999999 +3.9973100000000001 134.69999999999999 1.7450699999999999 +3.9753400000000001 132.821 1.7890200000000001 +3.94238 134.69999999999999 1.8109900000000001 +3.8325100000000001 134.69999999999999 1.84395 +3.5688200000000001 138.435 1.8878999999999999 +3.67869 140.31399999999999 1.8769100000000001 +2.8876200000000001 136.56700000000001 1.9648099999999999 +1.2725200000000001 134.69999999999999 2.0417200000000002 +0.80008000000000001 134.69999999999999 2.0636899999999998 +0.041973099999999999 136.56700000000001 2.0746799999999999 +-0.21073 134.69999999999999 2.0746799999999999 +-0.21073 136.56700000000001 2.0746799999999999 +-0.21073 140.31399999999999 2.0746799999999999 +-5.4515599999999997 132.821 1.90987 +-5.4515599999999997 134.69999999999999 1.90987 +-5.5614299999999997 132.821 1.8878999999999999 +-5.66031 138.435 1.8769100000000001 +-5.66031 136.56700000000001 1.8769100000000001 +-5.7482100000000003 134.69999999999999 1.85494 +-5.9899199999999997 134.69999999999999 1.77803 +3.4589500000000002 29.850100000000001 1.6132200000000001 +3.5688200000000001 27.971299999999999 1.6242099999999999 +-3.9353400000000001 130.953 1.50335 +-3.0234200000000002 132.821 1.4594 +-2.28728 130.953 1.44842 +-2.28728 132.821 1.44842 +-0.990811 130.953 1.43743 +-0.990811 132.821 1.43743 +0.041973099999999999 130.953 1.44842 +-0.21073 130.953 1.43743 +0.54737800000000003 130.953 1.44842 +0.54737800000000003 132.821 1.44842 +1.04179 132.821 1.4594 +1.9427300000000001 132.821 1.4923599999999999 +3.4589500000000002 130.953 1.6132200000000001 +-2.28728 35.464500000000001 2.0746799999999999 +3.67869 132.821 1.64618 +3.8984299999999998 130.953 1.6901299999999999 +3.4589500000000002 130.953 1.89889 +3.1952600000000002 136.56700000000001 1.9318500000000001 +3.1952600000000002 134.69999999999999 1.9318500000000001 +3.3380899999999998 136.56700000000001 1.92086 +3.3380899999999998 138.435 1.92086 +2.8876200000000001 132.821 1.9648099999999999 +1.04179 132.821 2.0527000000000002 +0.29467500000000002 132.821 2.0636899999999998 +0.54737800000000003 134.69999999999999 2.0636899999999998 +0.041973099999999999 134.69999999999999 2.0746799999999999 +-0.47442000000000001 134.69999999999999 2.0746799999999999 +-0.47442000000000001 138.435 2.0746799999999999 +-3.2651300000000001 138.435 2.0417200000000002 +-5.1878700000000002 130.953 1.9318500000000001 +-5.5614299999999997 130.953 1.8878999999999999 +-5.9899199999999997 130.953 1.7450699999999999 +-5.9899199999999997 132.821 1.77803 +-5.8800499999999998 129.07400000000001 1.6901299999999999 +-5.8251200000000001 130.953 1.6791400000000001 +-4.7154199999999999 129.07400000000001 1.5472999999999999 +-3.9353400000000001 129.07400000000001 1.50335 +-4.1440999999999999 130.953 1.50335 +-3.0234200000000002 130.953 1.4594 +-2.53999 129.07400000000001 1.44842 +-1.7818799999999999 130.953 1.43743 +-0.73810900000000002 129.07400000000001 1.43743 +-0.73810900000000002 130.953 1.43743 +0.041973099999999999 129.07400000000001 1.44842 +0.80008000000000001 129.07400000000001 1.4594 +1.9427300000000001 130.953 1.4923599999999999 +2.1514899999999999 129.07400000000001 1.50335 +3.3380899999999998 129.07400000000001 1.6022400000000001 +3.3380899999999998 130.953 1.6022400000000001 +3.7555999999999998 129.07400000000001 1.65717 +3.8325100000000001 130.953 1.6791400000000001 +3.94238 130.953 1.71211 +3.9973100000000001 129.07400000000001 1.7450699999999999 +3.9753400000000001 129.07400000000001 1.7890200000000001 +3.8984299999999998 130.953 1.8219799999999999 +3.8325100000000001 130.953 1.84395 +3.4589500000000002 129.07400000000001 1.89889 +3.3380899999999998 129.07400000000001 1.92086 +3.4589500000000002 132.821 1.89889 +2.1514899999999999 130.953 2.0087600000000001 +2.1514899999999999 132.821 2.0087600000000001 +1.2725200000000001 130.953 2.0417200000000002 +1.50325 132.821 2.0417200000000002 +0.80008000000000001 132.821 2.0636899999999998 +0.54737800000000003 130.953 2.0636899999999998 +-0.47442000000000001 132.821 2.0746799999999999 +-0.73810900000000002 132.821 2.0746799999999999 +-0.990811 134.69999999999999 2.0746799999999999 +-0.73810900000000002 136.56700000000001 2.0746799999999999 +-2.7816999999999998 140.31399999999999 2.0636899999999998 +-5.66031 130.953 1.8769100000000001 +-5.7482100000000003 132.821 1.85494 +-5.5614299999999997 127.206 1.6242099999999999 +-4.7154199999999999 127.206 1.5472999999999999 +-4.8802300000000001 129.07400000000001 1.55829 +-4.1440999999999999 127.206 1.50335 +-3.0234200000000002 127.206 1.4594 +-2.7816999999999998 127.206 1.4594 +-2.28728 129.07400000000001 1.44842 +-2.0345800000000001 129.07400000000001 1.44842 +-1.2544999999999999 127.206 1.43743 +-0.73810900000000002 127.206 1.43743 +-0.21073 129.07400000000001 1.43743 +0.54737800000000003 127.206 1.44842 +0.54737800000000003 129.07400000000001 1.44842 +0.80008000000000001 127.206 1.4594 +1.04179 129.07400000000001 1.4594 +2.1514899999999999 127.206 1.50335 +2.3492600000000001 129.07400000000001 1.51434 +2.3492600000000001 127.206 1.51434 +3.9753400000000001 129.07400000000001 1.72309 +4.0083000000000002 129.07400000000001 1.7560500000000001 +3.3380899999999998 127.206 1.92086 +3.4589500000000002 127.206 1.89889 +2.72282 130.953 1.9758 +0.80008000000000001 140.31399999999999 1.4594 +1.9427300000000001 130.953 2.0197400000000001 +1.50325 130.953 2.0417200000000002 +0.80008000000000001 130.953 2.0636899999999998 +-0.21073 130.953 2.0746799999999999 +-0.47442000000000001 129.07400000000001 2.0746799999999999 +-3.0234200000000002 138.435 2.0527000000000002 +-5.66031 129.07400000000001 1.8769100000000001 +-5.8251200000000001 127.206 1.84395 +-5.8251200000000001 129.07400000000001 1.84395 +-5.9899199999999997 127.206 1.7450699999999999 +-5.9899199999999997 129.07400000000001 1.77803 +-5.66031 127.206 1.64618 +-3.9353400000000001 125.339 1.50335 +-2.0345800000000001 127.206 1.44842 +-1.2544999999999999 125.339 1.43743 +-0.73810900000000002 125.339 1.43743 +1.04179 127.206 1.4594 +3.7555999999999998 127.206 1.65717 +3.8325100000000001 127.206 1.6791400000000001 +4.0083000000000002 127.206 1.7560500000000001 +3.1952600000000002 127.206 1.9318500000000001 +1.50325 129.07400000000001 2.0417200000000002 +-0.73810900000000002 129.07400000000001 2.0746799999999999 +-1.2544999999999999 127.206 2.0746799999999999 +-1.2544999999999999 129.07400000000001 2.0746799999999999 +-1.5181899999999999 130.953 2.0746799999999999 +-1.2544999999999999 136.56700000000001 2.0746799999999999 +-1.5181899999999999 136.56700000000001 2.0746799999999999 +-1.2544999999999999 138.435 2.0746799999999999 +-2.28728 140.31399999999999 2.0636899999999998 +-2.7816999999999998 136.56700000000001 2.0636899999999998 +-3.2651300000000001 134.69999999999999 2.0417200000000002 +-3.49586 132.821 2.0417200000000002 +-4.1440999999999999 127.206 2.0087600000000001 +-3.9353400000000001 129.07400000000001 2.0197400000000001 +-5.1878700000000002 125.339 1.9318500000000001 +-5.5614299999999997 127.206 1.8878999999999999 +-5.7482100000000003 127.206 1.85494 +-5.8800499999999998 125.339 1.8219799999999999 +-5.9899199999999997 125.339 1.77803 +-5.9899199999999997 127.206 1.77803 +-5.93499 127.206 1.71211 +-5.8800499999999998 125.339 1.6901299999999999 +-5.5614299999999997 125.339 1.6242099999999999 +-5.3197099999999997 125.339 1.6022400000000001 +-5.1878700000000002 129.07400000000001 1.58026 +1.2725200000000001 39.210999999999999 2.0417200000000002 +-4.7154199999999999 125.339 1.5472999999999999 +-4.5286400000000002 125.339 1.5253300000000001 +-4.3418599999999996 125.339 1.51434 +-3.9353400000000001 123.45999999999999 1.50335 +-3.0234200000000002 123.45999999999999 1.4594 +-3.2651300000000001 125.339 1.4703900000000001 +-1.7818799999999999 31.7179 2.0746799999999999 +-0.990811 125.339 1.43743 +-0.47442000000000001 123.45999999999999 1.43743 +-0.47442000000000001 125.339 1.43743 +0.041973099999999999 125.339 1.44842 +0.80008000000000001 123.45999999999999 1.4594 +-5.0450400000000002 134.69999999999999 1.9428300000000001 +2.1514899999999999 123.45999999999999 1.50335 +2.1514899999999999 125.339 1.50335 +3.1952600000000002 127.206 1.58026 +3.0524300000000002 127.206 1.5692699999999999 +3.1952600000000002 123.45999999999999 1.58026 +3.3380899999999998 125.339 1.6022400000000001 +3.8984299999999998 125.339 1.6901299999999999 +3.94238 123.45999999999999 1.71211 +3.9753400000000001 125.339 1.72309 +3.8984299999999998 123.45999999999999 1.8219799999999999 +3.3380899999999998 125.339 1.92086 +3.0524300000000002 125.339 1.9428300000000001 +3.1952600000000002 125.339 1.9318500000000001 +3.1952600000000002 123.45999999999999 1.9318500000000001 +2.3492600000000001 125.339 1.99777 +2.1514899999999999 127.206 2.0087600000000001 +1.50325 125.339 2.0417200000000002 +1.04179 125.339 2.0527000000000002 +0.54737800000000003 125.339 2.0636899999999998 +0.041973099999999999 125.339 2.0746799999999999 +0.041973099999999999 127.206 2.0746799999999999 +-0.47442000000000001 127.206 2.0746799999999999 +-1.5181899999999999 127.206 2.0746799999999999 +-1.7818799999999999 127.206 2.0746799999999999 +-1.5181899999999999 132.821 2.0746799999999999 +-1.7818799999999999 132.821 2.0746799999999999 +-2.53999 138.435 2.0636899999999998 +-3.0234200000000002 134.69999999999999 2.0527000000000002 +-5.1878700000000002 123.45999999999999 1.9318500000000001 +-5.8251200000000001 123.45999999999999 1.84395 +-5.9899199999999997 123.45999999999999 1.7450699999999999 +-5.7482100000000003 121.581 1.65717 +-5.5614299999999997 129.07400000000001 1.6242099999999999 +-5.4515599999999997 127.206 1.6132200000000001 +-5.4515599999999997 123.45999999999999 1.6132200000000001 +-5.5614299999999997 123.45999999999999 1.6242099999999999 +-5.1878700000000002 121.592 1.58026 +-4.7154199999999999 123.45999999999999 1.5472999999999999 +-4.1440999999999999 121.592 1.50335 +-3.2651300000000001 123.45999999999999 1.4703900000000001 +-2.7816999999999998 121.592 1.4594 +-3.0234200000000002 121.592 1.4594 +-1.2544999999999999 123.45999999999999 1.43743 +-0.990811 121.592 1.43743 +-0.990811 123.45999999999999 1.43743 +0.54737800000000003 121.592 1.44842 +0.80008000000000001 121.592 1.4594 +1.2725200000000001 121.592 1.4703900000000001 +3.4589500000000002 123.45999999999999 1.6132200000000001 +3.4589500000000002 129.07400000000001 1.6132200000000001 +3.5688200000000001 127.206 1.6242099999999999 +3.5688200000000001 125.339 1.6242099999999999 +3.4589500000000002 125.339 1.6132200000000001 +3.94238 121.581 1.71211 +3.8984299999999998 123.45999999999999 1.6901299999999999 +3.9973100000000001 121.581 1.7450699999999999 +3.9973100000000001 123.45999999999999 1.7450699999999999 +3.9973100000000001 123.45999999999999 1.77803 +3.8325100000000001 123.45999999999999 1.84395 +3.67869 129.07400000000001 1.8769100000000001 +3.67869 125.339 1.8769100000000001 +3.67869 123.45999999999999 1.8769100000000001 +3.67869 121.581 1.8769100000000001 +3.5688200000000001 121.581 1.8878999999999999 +3.4589500000000002 123.45999999999999 1.90987 +3.5688200000000001 123.45999999999999 1.8878999999999999 +3.1952600000000002 121.581 1.9318500000000001 +2.8876200000000001 123.45999999999999 1.9648099999999999 +2.1514899999999999 125.339 2.0087600000000001 +0.80008000000000001 123.45999999999999 2.0636899999999998 +0.80008000000000001 125.339 2.0636899999999998 +0.29467500000000002 123.45999999999999 2.0636899999999998 +0.29467500000000002 125.339 2.0636899999999998 +-0.47442000000000001 123.45999999999999 2.0746799999999999 +-0.990811 125.339 2.0746799999999999 +-1.5181899999999999 123.45999999999999 2.0746799999999999 +-1.2544999999999999 125.339 2.0746799999999999 +-1.7818799999999999 125.339 2.0746799999999999 +-1.5181899999999999 125.339 2.0746799999999999 +-1.7818799999999999 130.953 2.0746799999999999 +-2.0345800000000001 134.69999999999999 2.0746799999999999 +-1.7818799999999999 138.435 2.0746799999999999 +-1.7818799999999999 136.56700000000001 2.0746799999999999 +-3.2651300000000001 130.953 2.0417200000000002 +-5.0450400000000002 123.45999999999999 1.9428300000000001 +-5.4515599999999997 121.581 1.90987 +-5.8800499999999998 121.581 1.8219799999999999 +-5.4515599999999997 121.581 1.6132200000000001 +-5.5614299999999997 121.581 1.6242099999999999 +-5.1878700000000002 123.45999999999999 1.58026 +-2.28728 121.592 1.44842 +-0.21073 121.592 1.43743 +0.54737800000000003 119.71299999999999 1.44842 +0.29467500000000002 121.592 1.44842 +1.04179 119.71299999999999 1.4594 +2.3492600000000001 121.581 1.51434 +2.1514899999999999 121.581 1.50335 +3.7555999999999998 119.71299999999999 1.65717 +3.8984299999999998 119.71299999999999 1.6901299999999999 +3.8984299999999998 121.581 1.6901299999999999 +3.9753400000000001 121.581 1.72309 +4.0083000000000002 119.71299999999999 1.7560500000000001 +4.0083000000000002 121.581 1.7560500000000001 +3.9973100000000001 119.71299999999999 1.77803 +3.9973100000000001 121.581 1.77803 +3.4589500000000002 119.71299999999999 1.90987 +2.1514899999999999 123.45999999999999 2.0087600000000001 +2.3492600000000001 123.45999999999999 1.99777 +1.50325 123.45999999999999 2.0417200000000002 +0.80008000000000001 121.581 2.0636899999999998 +0.54737800000000003 123.45999999999999 2.0636899999999998 +0.041973099999999999 121.581 2.0746799999999999 +3.8984299999999998 138.435 1.6901299999999999 +0.041973099999999999 123.45999999999999 2.0746799999999999 +-5.9679500000000001 125.339 1.72309 +-5.9679500000000001 127.206 1.72309 +-0.21073 123.45999999999999 2.0746799999999999 +-5.8251200000000001 119.71299999999999 1.6791400000000001 +-0.73810900000000002 123.45999999999999 2.0746799999999999 +-0.990811 121.581 2.0746799999999999 +-1.7818799999999999 123.45999999999999 2.0746799999999999 +-2.28728 123.45999999999999 2.0636899999999998 +-2.0345800000000001 130.953 2.0746799999999999 +-2.0345800000000001 132.821 2.0746799999999999 +-3.49586 127.206 2.0417200000000002 +-5.5614299999999997 121.581 1.8878999999999999 +2.1514899999999999 138.435 2.0087600000000001 +-5.8800499999999998 119.71299999999999 1.6901299999999999 +-5.7482100000000003 117.845 1.65717 +-5.66031 119.71299999999999 1.64618 +-3.2651300000000001 117.845 1.4703900000000001 +-2.53999 119.71299999999999 1.44842 +-1.7818799999999999 117.845 1.43743 +-2.0345800000000001 119.71299999999999 1.44842 +-1.5181899999999999 117.845 1.43743 +-5.93499 14.8637 1.71211 +-1.2544999999999999 117.845 1.43743 +-0.73810900000000002 119.71299999999999 1.43743 +-0.73810900000000002 117.845 1.43743 +-0.73810900000000002 121.592 1.43743 +0.041973099999999999 117.845 1.44842 +-0.21073 117.845 1.43743 +0.041973099999999999 119.71299999999999 1.44842 +0.80008000000000001 119.71299999999999 1.4594 +1.2725200000000001 117.845 1.4703900000000001 +1.04179 117.845 1.4594 +1.9427300000000001 119.71299999999999 1.4923599999999999 +3.7555999999999998 117.845 1.65717 +3.8325100000000001 119.71299999999999 1.6791400000000001 +3.8984299999999998 117.845 1.6901299999999999 +3.94238 119.71299999999999 1.71211 +3.9973100000000001 119.71299999999999 1.7450699999999999 +4.0083000000000002 117.845 1.7560500000000001 +3.0524300000000002 119.71299999999999 1.9428300000000001 +2.3492600000000001 121.581 1.99777 +-0.21073 119.71299999999999 2.0746799999999999 +-0.21073 121.581 2.0746799999999999 +-2.0345800000000001 119.71299999999999 2.0746799999999999 +-2.0345800000000001 121.581 2.0746799999999999 +-2.28728 119.71299999999999 2.0746799999999999 +-2.53999 121.581 2.0636899999999998 +-2.53999 127.206 2.0636899999999998 +-2.28728 129.07400000000001 2.0636899999999998 +-2.53999 130.953 2.0636899999999998 +-2.28728 134.69999999999999 2.0636899999999998 +-2.7816999999999998 129.07400000000001 2.0636899999999998 +-3.0234200000000002 129.07400000000001 2.0527000000000002 +-3.49586 125.339 2.0417200000000002 +-5.0450400000000002 117.845 1.9428300000000001 +-5.8251200000000001 117.845 1.84395 +-5.9899199999999997 117.845 1.7450699999999999 +-5.8251200000000001 115.97799999999999 1.6791400000000001 +-5.66031 117.845 1.64618 +-5.3197099999999997 115.97799999999999 1.6022400000000001 +-3.0234200000000002 115.97799999999999 1.4594 +-3.0234200000000002 117.845 1.4594 +-2.28728 115.97799999999999 1.44842 +-2.53999 117.845 1.44842 +-2.0345800000000001 115.97799999999999 1.44842 +-1.5181899999999999 115.97799999999999 1.43743 +-0.990811 115.97799999999999 1.43743 +-0.73810900000000002 115.97799999999999 1.43743 +-0.990811 117.845 1.43743 +-0.21073 115.97799999999999 1.43743 +-0.47442000000000001 117.845 1.43743 +0.80008000000000001 115.97799999999999 1.4594 +3.67869 117.845 1.64618 +3.8984299999999998 115.97799999999999 1.6901299999999999 +3.8325100000000001 117.845 1.6791400000000001 +3.7555999999999998 117.845 1.85494 +2.1514899999999999 119.71299999999999 2.0087600000000001 +2.1514899999999999 117.845 2.0087600000000001 +1.04179 119.71299999999999 2.0527000000000002 +0.29467500000000002 117.845 2.0636899999999998 +0.54737800000000003 119.71299999999999 2.0636899999999998 +-0.990811 117.845 2.0746799999999999 +-0.73810900000000002 117.845 2.0746799999999999 +-1.2544999999999999 119.71299999999999 2.0746799999999999 +-1.7818799999999999 117.845 2.0746799999999999 +-1.7818799999999999 119.71299999999999 2.0746799999999999 +-2.53999 117.845 2.0636899999999998 +-2.53999 119.71299999999999 2.0636899999999998 +-2.7816999999999998 121.581 2.0636899999999998 +-2.53999 123.45999999999999 2.0636899999999998 +-2.7816999999999998 127.206 2.0636899999999998 +-3.0234200000000002 125.339 2.0527000000000002 +-5.1878700000000002 115.97799999999999 1.9318500000000001 +-5.1878700000000002 117.845 1.9318500000000001 +-5.66031 115.97799999999999 1.8769100000000001 +-5.8800499999999998 115.97799999999999 1.8219799999999999 +-5.9679500000000001 114.099 1.72309 +-5.9899199999999997 114.099 1.7450699999999999 +-5.9679500000000001 121.581 1.72309 +-5.9899199999999997 121.581 1.7450699999999999 +-5.93499 121.581 1.71211 +-5.8800499999999998 117.845 1.6901299999999999 +-5.66031 115.97799999999999 1.64618 +-5.1878700000000002 115.97799999999999 1.58026 +-5.1878700000000002 119.71299999999999 1.58026 +-3.9353400000000001 114.099 1.50335 +-2.28728 37.332299999999996 2.0746799999999999 +-2.53999 114.099 1.44842 +-2.28728 114.099 1.44842 +-1.7818799999999999 115.97799999999999 1.43743 +3.1952600000000002 121.581 1.58026 +3.1952600000000002 114.099 1.58026 +3.4589500000000002 114.099 1.6132200000000001 +3.8325100000000001 115.97799999999999 1.6791400000000001 +3.94238 114.099 1.71211 +3.9973100000000001 115.97799999999999 1.7450699999999999 +4.0083000000000002 114.099 1.7560500000000001 +3.94238 119.71299999999999 1.8109900000000001 +3.8984299999999998 117.845 1.8219799999999999 +3.7555999999999998 114.099 1.85494 +3.3380899999999998 114.099 1.92086 +3.3380899999999998 115.97799999999999 1.92086 +3.1952600000000002 115.97799999999999 1.9318500000000001 +3.1952600000000002 117.845 1.9318500000000001 +3.3380899999999998 123.45999999999999 1.92086 +3.0524300000000002 117.845 1.9428300000000001 +2.1514899999999999 115.97799999999999 2.0087600000000001 +1.9427300000000001 117.845 2.0197400000000001 +0.80008000000000001 115.97799999999999 2.0636899999999998 +-0.21073 115.97799999999999 2.0746799999999999 +-1.2544999999999999 115.97799999999999 2.0746799999999999 +-1.7818799999999999 115.97799999999999 2.0746799999999999 +-2.28728 115.97799999999999 2.0746799999999999 +-2.7816999999999998 117.845 2.0636899999999998 +-3.0234200000000002 121.581 2.0527000000000002 +-3.0234200000000002 123.45999999999999 2.0527000000000002 +-3.2651300000000001 121.581 2.0417200000000002 +-3.49586 121.581 2.0417200000000002 +-5.7482100000000003 114.099 1.85494 +-5.7482100000000003 119.71299999999999 1.85494 +-5.66031 117.845 1.8769100000000001 +-5.8251200000000001 115.97799999999999 1.84395 +-5.7482100000000003 115.97799999999999 1.85494 +-5.8251200000000001 114.099 1.6791400000000001 +-4.1440999999999999 114.099 1.50335 +-3.0234200000000002 114.099 1.4594 +-2.53999 112.22 1.44842 +-1.7818799999999999 114.099 1.43743 +-0.47442000000000001 114.099 1.43743 +-0.21073 114.099 1.43743 +3.8984299999999998 112.22 1.6901299999999999 +3.8325100000000001 114.099 1.6791400000000001 +3.8984299999999998 114.099 1.6901299999999999 +4.0083000000000002 112.22 1.7560500000000001 +3.9973100000000001 114.099 1.7450699999999999 +3.9753400000000001 114.099 1.7890200000000001 +3.9973100000000001 114.099 1.77803 +3.5688200000000001 112.22 1.8878999999999999 +3.4589500000000002 114.099 1.90987 +3.3380899999999998 112.22 1.92086 +3.0524300000000002 112.22 1.9428300000000001 +1.50325 115.97799999999999 2.0417200000000002 +0.29467500000000002 115.97799999999999 2.0636899999999998 +-0.73810900000000002 114.099 2.0746799999999999 +-0.73810900000000002 115.97799999999999 2.0746799999999999 +-0.990811 115.97799999999999 2.0746799999999999 +-1.5181899999999999 115.97799999999999 2.0746799999999999 +-2.0345800000000001 114.099 2.0746799999999999 +-2.0345800000000001 115.97799999999999 2.0746799999999999 +-2.53999 115.97799999999999 2.0636899999999998 +3.8984299999999998 119.71299999999999 1.8219799999999999 +-3.0234200000000002 114.099 2.0527000000000002 +-0.990811 130.953 2.0746799999999999 +-3.0234200000000002 115.97799999999999 2.0527000000000002 +-3.0234200000000002 117.845 2.0527000000000002 +-5.1878700000000002 114.099 1.9318500000000001 +-5.66031 112.22 1.8769100000000001 +-5.5614299999999997 114.099 1.8878999999999999 +-5.8800499999999998 110.363 1.6901299999999999 +-5.7482100000000003 110.363 1.65717 +-4.5286400000000002 110.363 1.5253300000000001 +-3.9353400000000001 110.363 1.50335 +-4.1440999999999999 112.22 1.50335 +-3.0234200000000002 110.363 1.4594 +-3.2651300000000001 112.22 1.4703900000000001 +-3.0234200000000002 112.22 1.4594 +-2.0345800000000001 112.22 1.44842 +-1.7818799999999999 110.363 1.43743 +-1.2544999999999999 112.22 1.43743 +-0.21073 112.22 1.43743 +-0.21073 110.363 1.43743 +0.041973099999999999 112.22 1.44842 +-1.2544999999999999 129.07400000000001 1.43743 +0.29467500000000002 110.363 1.44842 +0.54737800000000003 112.22 1.44842 +0.80008000000000001 112.22 1.4594 +2.1514899999999999 110.363 1.50335 +2.3492600000000001 112.22 1.51434 +2.1514899999999999 112.22 1.50335 +3.8325100000000001 110.363 1.6791400000000001 +3.8325100000000001 112.22 1.6791400000000001 +0.54737800000000003 142.18199999999999 1.44842 +3.9973100000000001 112.22 1.7450699999999999 +3.9753400000000001 138.435 1.7890200000000001 +3.94238 138.435 1.8109900000000001 +3.94238 132.821 1.8109900000000001 +3.9753400000000001 130.953 1.7890200000000001 +3.94238 130.953 1.8109900000000001 +3.94238 129.07400000000001 1.8109900000000001 +3.9753400000000001 119.71299999999999 1.7890200000000001 +3.9753400000000001 121.581 1.7890200000000001 +3.94238 117.845 1.8109900000000001 +3.9753400000000001 112.22 1.7890200000000001 +3.94238 112.22 1.8109900000000001 +3.8325100000000001 110.363 1.84395 +3.1952600000000002 110.363 1.9318500000000001 +2.1514899999999999 110.363 2.0087600000000001 +1.04179 114.099 2.0527000000000002 +0.54737800000000003 112.22 2.0636899999999998 +0.29467500000000002 112.22 2.0636899999999998 +0.29467500000000002 114.099 2.0636899999999998 +-0.21073 112.22 2.0746799999999999 +-1.2544999999999999 112.22 2.0746799999999999 +-1.7818799999999999 114.099 2.0746799999999999 +-1.7818799999999999 112.22 2.0746799999999999 +-2.28728 114.099 2.0746799999999999 +-3.2651300000000001 112.22 2.0417200000000002 +-3.2651300000000001 114.099 2.0417200000000002 +-3.2651300000000001 115.97799999999999 2.0417200000000002 +-5.5614299999999997 110.363 1.8878999999999999 +-5.5614299999999997 112.22 1.8878999999999999 +-5.7482100000000003 110.363 1.85494 +-5.8800499999999998 110.363 1.8219799999999999 +-5.9899199999999997 108.48399999999999 1.7450699999999999 +-5.8251200000000001 110.363 1.6791400000000001 +-5.66031 110.363 1.64618 +-5.3197099999999997 110.363 1.6022400000000001 +-5.0450400000000002 110.363 1.5692699999999999 +-4.7154199999999999 108.48399999999999 1.5472999999999999 +-4.3418599999999996 108.48399999999999 1.51434 +-3.2651300000000001 110.363 1.4703900000000001 +-3.0234200000000002 108.48399999999999 1.4594 +-2.7816999999999998 110.363 1.4594 +-2.53999 108.48399999999999 1.44842 +-2.0345800000000001 110.363 1.44842 +-1.7818799999999999 108.48399999999999 1.43743 +-0.73810900000000002 108.48399999999999 1.43743 +-0.990811 108.48399999999999 1.43743 +-0.47442000000000001 110.363 1.43743 +1.2725200000000001 108.48399999999999 1.4703900000000001 +2.3492600000000001 108.48399999999999 1.51434 +2.1514899999999999 108.48399999999999 1.50335 +3.8325100000000001 108.48399999999999 1.6791400000000001 +4.0083000000000002 110.363 1.7560500000000001 +3.9753400000000001 108.48399999999999 1.7890200000000001 +3.9973100000000001 108.48399999999999 1.77803 +3.8325100000000001 108.48399999999999 1.84395 +3.4589500000000002 110.363 1.90987 +3.3380899999999998 110.363 1.92086 +3.1952600000000002 108.48399999999999 1.9318500000000001 +1.9427300000000001 110.363 2.0197400000000001 +1.2725200000000001 110.363 2.0417200000000002 +1.04179 112.22 2.0527000000000002 +-0.73810900000000002 112.22 2.0746799999999999 +-0.990811 112.22 2.0746799999999999 +-2.28728 112.22 2.0746799999999999 +-3.49586 110.363 2.0417200000000002 +-3.9353400000000001 110.363 2.0197400000000001 +-5.1878700000000002 110.363 1.9318500000000001 +-5.4515599999999997 108.48399999999999 1.90987 +-5.66031 110.363 1.8769100000000001 +-5.9679500000000001 108.48399999999999 1.72309 +-5.7482100000000003 108.48399999999999 1.65717 +-4.5286400000000002 108.48399999999999 1.5253300000000001 +-4.1440999999999999 108.48399999999999 1.50335 +-2.53999 106.60599999999999 1.44842 +-2.28728 108.48399999999999 1.44842 +-1.2544999999999999 108.48399999999999 1.43743 +3.3380899999999998 114.099 1.6022400000000001 +0.29467500000000002 108.48399999999999 1.44842 +0.80008000000000001 106.60599999999999 1.4594 +1.9427300000000001 106.60599999999999 1.50335 +2.3492600000000001 134.69999999999999 1.51434 +3.3380899999999998 106.60599999999999 1.6022400000000001 +3.7555999999999998 108.48399999999999 1.65717 +3.8984299999999998 108.48399999999999 1.6901299999999999 +3.7555999999999998 108.48399999999999 1.85494 +3.4589500000000002 108.48399999999999 1.90987 +2.72282 106.60599999999999 1.9758 +2.1514899999999999 106.60599999999999 2.0087600000000001 +1.9427300000000001 108.48399999999999 2.0197400000000001 +1.2725200000000001 108.48399999999999 2.0417200000000002 +1.04179 110.363 2.0527000000000002 +-0.990811 110.363 2.0746799999999999 +-1.2544999999999999 110.363 2.0746799999999999 +-1.7818799999999999 110.363 2.0746799999999999 +-2.53999 110.363 2.0636899999999998 +-3.2651300000000001 110.363 2.0417200000000002 +-4.1440999999999999 108.48399999999999 2.0087600000000001 +-5.0450400000000002 108.48399999999999 1.9428300000000001 +-5.5614299999999997 108.48399999999999 1.8878999999999999 +-5.7482100000000003 106.60599999999999 1.85494 +-5.9899199999999997 106.60599999999999 1.7450699999999999 +-5.8251200000000001 106.60599999999999 1.6791400000000001 +-5.66031 104.738 1.64618 +-5.1878700000000002 104.738 1.58026 +-4.1440999999999999 104.738 1.50335 +-3.0234200000000002 106.60599999999999 1.4594 +-2.7816999999999998 106.60599999999999 1.4594 +-1.7818799999999999 104.738 1.43743 +-1.2544999999999999 104.738 1.43743 +-0.990811 104.738 1.43743 +-0.73810900000000002 106.60599999999999 1.43743 +-0.47442000000000001 104.738 1.43743 +0.041973099999999999 104.738 1.44842 +0.041973099999999999 106.60599999999999 1.44842 +0.29467500000000002 104.738 1.44842 +2.3492600000000001 106.60599999999999 1.51434 +2.1514899999999999 106.60599999999999 1.50335 +3.4589500000000002 104.738 1.6132200000000001 +3.9973100000000001 127.206 1.7450699999999999 +3.9973100000000001 125.339 1.7450699999999999 +3.8984299999999998 106.60599999999999 1.6901299999999999 +4.0083000000000002 106.60599999999999 1.7560500000000001 +3.9753400000000001 104.738 1.7890200000000001 +3.9973100000000001 104.738 1.77803 +3.8325100000000001 104.738 1.84395 +2.8876200000000001 106.60599999999999 1.9648099999999999 +2.1514899999999999 104.738 2.0087600000000001 +0.80008000000000001 108.48399999999999 2.0636899999999998 +0.54737800000000003 108.48399999999999 2.0636899999999998 +-0.21073 108.48399999999999 2.0746799999999999 +-0.47442000000000001 108.48399999999999 2.0746799999999999 +-0.990811 108.48399999999999 2.0746799999999999 +-1.7818799999999999 108.48399999999999 2.0746799999999999 +-2.7816999999999998 106.60599999999999 2.0636899999999998 +-3.9353400000000001 106.60599999999999 2.0197400000000001 +-4.1440999999999999 106.60599999999999 2.0087600000000001 +-5.1878700000000002 104.738 1.9318500000000001 +-5.5614299999999997 106.60599999999999 1.8878999999999999 +-5.0450400000000002 104.738 1.5692699999999999 +-4.7154199999999999 102.85899999999999 1.5472999999999999 +-4.1440999999999999 102.85899999999999 1.50335 +-2.7816999999999998 104.738 1.4594 +-2.53999 104.738 1.44842 +-1.5181899999999999 104.738 1.43743 +-0.73810900000000002 104.738 1.43743 +-0.21073 102.85899999999999 1.43743 +-0.21073 104.738 1.43743 +0.80008000000000001 104.738 1.4594 +3.94238 102.85899999999999 1.71211 +3.9753400000000001 140.31399999999999 1.72309 +3.94238 136.56700000000001 1.71211 +3.94238 134.69999999999999 1.71211 +3.9753400000000001 132.821 1.72309 +3.94238 132.821 1.71211 +3.94238 125.339 1.71211 +3.9753400000000001 123.45999999999999 1.72309 +3.9753400000000001 119.71299999999999 1.72309 +3.94238 117.845 1.71211 +3.9753400000000001 110.363 1.72309 +3.9753400000000001 108.48399999999999 1.72309 +3.94238 104.738 1.71211 +3.9753400000000001 102.85899999999999 1.72309 +3.9973100000000001 102.85899999999999 1.7450699999999999 +3.8984299999999998 104.738 1.8219799999999999 +3.8984299999999998 102.85899999999999 1.8219799999999999 +3.5688200000000001 104.738 1.8878999999999999 +3.1952600000000002 102.85899999999999 1.9318500000000001 +0.29467500000000002 117.845 1.44842 +2.72282 102.85899999999999 1.9758 +1.9427300000000001 102.85899999999999 2.0197400000000001 +-1.5181899999999999 121.592 1.43743 +0.80008000000000001 102.85899999999999 2.0636899999999998 +1.04179 102.85899999999999 2.0527000000000002 +0.80008000000000001 104.738 2.0636899999999998 +0.80008000000000001 106.60599999999999 2.0636899999999998 +0.54737800000000003 106.60599999999999 2.0636899999999998 +-0.73810900000000002 104.738 2.0746799999999999 +-0.990811 106.60599999999999 2.0746799999999999 +-2.0345800000000001 104.738 2.0746799999999999 +-3.0234200000000002 106.60599999999999 2.0527000000000002 +-2.7816999999999998 129.07400000000001 1.4594 +-5.4515599999999997 102.85899999999999 1.90987 +-5.66031 106.60599999999999 1.8769100000000001 +-5.7482100000000003 104.738 1.85494 +-5.8251200000000001 104.738 1.84395 +-5.9899199999999997 102.85899999999999 1.7450699999999999 +-5.8800499999999998 101.002 1.6901299999999999 +-5.7482100000000003 101.002 1.65717 +-5.1878700000000002 101.002 1.58026 +-5.5614299999999997 129.07400000000001 1.8878999999999999 +-5.4515599999999997 130.953 1.90987 +-2.28728 102.85899999999999 1.44842 +-2.53999 102.85899999999999 1.44842 +-2.0345800000000001 101.002 1.44842 +-2.0345800000000001 102.85899999999999 1.44842 +-1.5181899999999999 101.002 1.43743 +-0.73810900000000002 102.85899999999999 1.43743 +-0.21073 101.002 1.43743 +-0.47442000000000001 102.85899999999999 1.43743 +-1.2544999999999999 37.332299999999996 2.0746799999999999 +-1.5181899999999999 37.332299999999996 2.0746799999999999 +0.80008000000000001 101.002 1.4594 +1.04179 102.85899999999999 1.4594 +2.1514899999999999 101.002 1.50335 +3.67869 101.002 1.64618 +3.67869 102.85899999999999 1.64618 +3.8325100000000001 102.85899999999999 1.6791400000000001 +3.8984299999999998 102.85899999999999 1.6901299999999999 +3.9753400000000001 101.002 1.72309 +3.9753400000000001 101.002 1.7890200000000001 +3.7555999999999998 101.002 1.85494 +3.0524300000000002 102.85899999999999 1.9428300000000001 +2.8876200000000001 102.85899999999999 1.9648099999999999 +4.0083000000000002 108.48399999999999 1.7560500000000001 +2.1514899999999999 102.85899999999999 2.0087600000000001 +-3.2651300000000001 117.845 2.0417200000000002 +-1.2544999999999999 104.738 2.0746799999999999 +-1.7818799999999999 102.85899999999999 2.0746799999999999 +-1.7818799999999999 104.738 2.0746799999999999 +-3.49586 102.85899999999999 2.0417200000000002 +-3.2651300000000001 102.85899999999999 2.0417200000000002 +-5.0450400000000002 102.85899999999999 1.9428300000000001 +-5.7482100000000003 101.002 1.85494 +-5.8251200000000001 101.002 1.84395 +-5.3197099999999997 138.435 1.6022400000000001 +-5.9679500000000001 140.31399999999999 1.7890200000000001 +-5.93499 134.69999999999999 1.8109900000000001 +-5.9679500000000001 129.07400000000001 1.7890200000000001 +-5.9679500000000001 125.339 1.7890200000000001 +-5.93499 121.581 1.8109900000000001 +-5.9679500000000001 121.581 1.7890200000000001 +-5.9679500000000001 117.845 1.7890200000000001 +-5.93499 117.845 1.8109900000000001 +-5.9679500000000001 108.48399999999999 1.7890200000000001 +-5.9679500000000001 110.363 1.7890200000000001 +-5.93499 106.60599999999999 1.8109900000000001 +-5.9679500000000001 106.60599999999999 1.7890200000000001 +-5.8800499999999998 99.123500000000007 1.6901299999999999 +-5.8251200000000001 99.123500000000007 1.6791400000000001 +-5.8251200000000001 101.002 1.6791400000000001 +-4.8802300000000001 101.002 1.55829 +-4.1440999999999999 99.123500000000007 1.50335 +-2.53999 101.002 1.44842 +-2.28728 99.123500000000007 1.44842 +-2.28728 101.002 1.44842 +-0.990811 99.123500000000007 1.43743 +-0.73810900000000002 101.002 1.43743 +0.80008000000000001 99.123500000000007 1.4594 +0.54737800000000003 101.002 1.44842 +3.9973100000000001 101.002 1.7450699999999999 +4.0083000000000002 101.002 1.7560500000000001 +0.54737800000000003 136.56700000000001 1.44842 +3.8325100000000001 101.002 1.84395 +3.1952600000000002 99.123500000000007 1.9318500000000001 +1.9427300000000001 99.123500000000007 2.0197400000000001 +2.1514899999999999 101.002 2.0087600000000001 +0.80008000000000001 99.123500000000007 2.0636899999999998 +1.04179 101.002 2.0527000000000002 +0.54737800000000003 101.002 2.0636899999999998 +0.29467500000000002 101.002 2.0746799999999999 +0.29467500000000002 102.85899999999999 2.0746799999999999 +-0.73810900000000002 102.85899999999999 2.0746799999999999 +-0.990811 102.85899999999999 2.0746799999999999 +-0.990811 101.002 2.0746799999999999 +-2.0345800000000001 102.85899999999999 2.0746799999999999 +-3.0234200000000002 101.002 2.0527000000000002 +-2.7816999999999998 102.85899999999999 2.0636899999999998 +-3.2651300000000001 101.002 2.0417200000000002 +-5.7482100000000003 99.123500000000007 1.85494 +-5.9899199999999997 99.123500000000007 1.7450699999999999 +-5.93499 99.123500000000007 1.71211 +-5.7482100000000003 99.123500000000007 1.65717 +-5.4515599999999997 117.845 1.6132200000000001 +-5.4515599999999997 112.22 1.6132200000000001 +-5.5614299999999997 114.099 1.6242099999999999 +-5.5614299999999997 108.48399999999999 1.6242099999999999 +-5.4515599999999997 101.002 1.6132200000000001 +-2.7816999999999998 99.123500000000007 1.4594 +-2.53999 99.123500000000007 1.44842 +-2.0345800000000001 97.244699999999995 1.44842 +-1.2544999999999999 97.244699999999995 1.43743 +-1.5181899999999999 99.123500000000007 1.43743 +0.041973099999999999 99.123500000000007 1.44842 +0.29467500000000002 99.123500000000007 1.44842 +0.29467500000000002 97.244699999999995 1.44842 +2.3492600000000001 99.123500000000007 1.51434 +3.4589500000000002 119.71299999999999 1.6132200000000001 +3.4589500000000002 117.845 1.6132200000000001 +3.4589500000000002 115.97799999999999 1.6132200000000001 +3.5688200000000001 114.099 1.6242099999999999 +3.4589500000000002 110.363 1.6132200000000001 +3.4589500000000002 106.60599999999999 1.6132200000000001 +-4.5286400000000002 115.97799999999999 1.5253300000000001 +3.5688200000000001 99.123500000000007 1.6242099999999999 +3.8325100000000001 97.244699999999995 1.6791400000000001 +3.9753400000000001 97.244699999999995 1.72309 +4.0083000000000002 99.123500000000007 1.7560500000000001 +3.9973100000000001 97.244699999999995 1.77803 +3.9753400000000001 99.123500000000007 1.7890200000000001 +3.7555999999999998 97.244699999999995 1.85494 +3.5688200000000001 119.71299999999999 1.8878999999999999 +3.5688200000000001 114.099 1.8878999999999999 +3.67869 112.22 1.8769100000000001 +-2.28728 112.22 1.44842 +3.5688200000000001 110.363 1.8878999999999999 +3.5688200000000001 108.48399999999999 1.8878999999999999 +3.67869 104.738 1.8769100000000001 +3.5688200000000001 102.85899999999999 1.8878999999999999 +3.67869 102.85899999999999 1.8769100000000001 +3.5688200000000001 101.002 1.8878999999999999 +3.67869 97.244699999999995 1.8769100000000001 +3.5688200000000001 97.244699999999995 1.8878999999999999 +3.3380899999999998 99.123500000000007 1.92086 +-2.53999 127.206 1.44842 +2.72282 99.123500000000007 1.9758 +2.8876200000000001 99.123500000000007 1.9648099999999999 +2.1514899999999999 99.123500000000007 2.0087600000000001 +0.80008000000000001 97.244699999999995 2.0636899999999998 +1.04179 99.123500000000007 2.0527000000000002 +0.041973099999999999 97.244699999999995 2.0746799999999999 +0.041973099999999999 101.002 2.0746799999999999 +-0.21073 101.002 2.0746799999999999 +-0.73810900000000002 99.123500000000007 2.0746799999999999 +-0.990811 99.123500000000007 2.0746799999999999 +-1.5181899999999999 101.002 2.0746799999999999 +-5.8251200000000001 121.581 1.84395 +-1.7818799999999999 101.002 2.0746799999999999 +-2.0345800000000001 101.002 2.0746799999999999 +-3.2651300000000001 99.123500000000007 2.0417200000000002 +-4.1440999999999999 99.123500000000007 2.0087600000000001 +-5.4515599999999997 99.123500000000007 1.90987 +-5.66031 97.244699999999995 1.8769100000000001 +-0.21073 106.60599999999999 2.0746799999999999 +-5.8800499999999998 97.244699999999995 1.8219799999999999 +-5.66031 97.244699999999995 1.64618 +-5.1878700000000002 97.244699999999995 1.58026 +-5.1878700000000002 95.376900000000006 1.58026 +-2.53999 97.244699999999995 1.44842 +-0.990811 97.244699999999995 1.43743 +-0.73810900000000002 97.244699999999995 1.43743 +0.041973099999999999 95.376900000000006 1.44842 +0.80008000000000001 97.244699999999995 1.4594 +-0.47442000000000001 101.002 2.0746799999999999 +2.3492600000000001 95.376900000000006 1.51434 +3.7555999999999998 95.376900000000006 1.65717 +3.67869 97.244699999999995 1.64618 +3.8984299999999998 97.244699999999995 1.6901299999999999 +3.8984299999999998 95.376900000000006 1.6901299999999999 +3.94238 95.376900000000006 1.71211 +3.9973100000000001 97.244699999999995 1.7450699999999999 +4.0083000000000002 97.244699999999995 1.7560500000000001 +3.8325100000000001 97.244699999999995 1.84395 +3.1952600000000002 95.376900000000006 1.9318500000000001 +2.1514899999999999 95.376900000000006 2.0087600000000001 +2.3492600000000001 97.244699999999995 1.99777 +1.04179 95.376900000000006 2.0527000000000002 +0.29467500000000002 97.244699999999995 2.0746799999999999 +-0.21073 97.244699999999995 2.0746799999999999 +-0.47442000000000001 97.244699999999995 2.0746799999999999 +-1.5181899999999999 99.123500000000007 2.0746799999999999 +-2.53999 99.123500000000007 2.0636899999999998 +-2.28728 99.123500000000007 2.0746799999999999 +-2.7816999999999998 97.244699999999995 2.0636899999999998 +-3.9353400000000001 99.123500000000007 2.0197400000000001 +-5.0450400000000002 95.376900000000006 1.9428300000000001 +-5.9679500000000001 97.244699999999995 1.7890200000000001 +-5.9899199999999997 97.244699999999995 1.77803 +-5.9899199999999997 93.498099999999994 1.7450699999999999 +-5.9679500000000001 97.244699999999995 1.72309 +-5.7482100000000003 95.376900000000006 1.65717 +-5.66031 95.376900000000006 1.64618 +-5.1878700000000002 93.498099999999994 1.58026 +-4.7154199999999999 95.376900000000006 1.5472999999999999 +-3.2651300000000001 93.498099999999994 1.4703900000000001 +-2.0345800000000001 93.498099999999994 1.44842 +-1.7818799999999999 93.498099999999994 1.43743 +-0.21073 93.498099999999994 1.43743 +0.29467500000000002 95.376900000000006 1.44842 +1.04179 95.376900000000006 1.4594 +2.1514899999999999 93.498099999999994 1.50335 +2.3492600000000001 93.498099999999994 1.51434 +3.9973100000000001 93.498099999999994 1.7450699999999999 +3.9753400000000001 93.498099999999994 1.7890200000000001 +3.8984299999999998 95.376900000000006 1.8219799999999999 +3.4589500000000002 95.376900000000006 1.90987 +2.8876200000000001 93.498099999999994 1.9648099999999999 +1.9427300000000001 93.498099999999994 2.0197400000000001 +0.29467500000000002 93.498099999999994 2.0746799999999999 +0.54737800000000003 95.376900000000006 2.0636899999999998 +0.29467500000000002 95.376900000000006 2.0746799999999999 +-0.47442000000000001 95.376900000000006 2.0746799999999999 +-1.5181899999999999 97.244699999999995 2.0746799999999999 +-2.28728 95.376900000000006 2.0746799999999999 +-2.28728 97.244699999999995 2.0746799999999999 +-2.53999 97.244699999999995 2.0636899999999998 +-3.0234200000000002 95.376900000000006 2.0527000000000002 +-3.49586 97.244699999999995 2.0417200000000002 +-3.9353400000000001 97.244699999999995 2.0197400000000001 +-5.1878700000000002 93.498099999999994 1.9318500000000001 +-5.5614299999999997 93.498099999999994 1.8878999999999999 +-5.7482100000000003 93.498099999999994 1.85494 +-5.7482100000000003 95.376900000000006 1.85494 +-5.8251200000000001 95.376900000000006 1.84395 +-5.8251200000000001 91.630300000000005 1.6791400000000001 +-5.5614299999999997 91.630300000000005 1.6242099999999999 +-5.5614299999999997 95.376900000000006 1.6242099999999999 +-5.5614299999999997 93.498099999999994 1.6242099999999999 +-4.3418599999999996 91.630300000000005 1.51434 +-3.9353400000000001 93.498099999999994 1.50335 +-3.0234200000000002 91.630300000000005 1.4594 +-3.0234200000000002 93.498099999999994 1.4594 +-1.5181899999999999 93.498099999999994 1.43743 +-0.47442000000000001 91.630300000000005 1.43743 +-0.47442000000000001 93.498099999999994 1.43743 +0.80008000000000001 91.630300000000005 1.4594 +1.04179 91.630300000000005 1.4594 +1.9427300000000001 93.498099999999994 1.50335 +3.4589500000000002 91.630300000000005 1.6132200000000001 +3.8984299999999998 91.630300000000005 1.6901299999999999 +3.9753400000000001 93.498099999999994 1.72309 +4.0083000000000002 93.498099999999994 1.7560500000000001 +3.9753400000000001 91.630300000000005 1.7890200000000001 +3.9973100000000001 93.498099999999994 1.77803 +3.8325100000000001 93.498099999999994 1.84395 +3.67869 93.498099999999994 1.8769100000000001 +3.5688200000000001 91.630300000000005 1.8878999999999999 +3.4589500000000002 91.630300000000005 1.90987 +3.3380899999999998 91.630300000000005 1.92086 +3.4589500000000002 93.498099999999994 1.90987 +2.1514899999999999 93.498099999999994 2.0087600000000001 +1.50325 93.498099999999994 2.0417200000000002 +1.04179 91.630300000000005 2.0527000000000002 +0.54737800000000003 93.498099999999994 2.0636899999999998 +0.041973099999999999 93.498099999999994 2.0746799999999999 +-0.21073 91.630300000000005 2.0746799999999999 +-0.47442000000000001 93.498099999999994 2.0746799999999999 +-0.21073 93.498099999999994 2.0746799999999999 +-0.990811 91.630300000000005 2.0746799999999999 +-0.73810900000000002 93.498099999999994 2.0746799999999999 +-1.2544999999999999 95.376900000000006 2.0746799999999999 +-1.7818799999999999 93.498099999999994 2.0746799999999999 +-2.28728 93.498099999999994 2.0746799999999999 +-2.0345800000000001 95.376900000000006 2.0746799999999999 +-2.7816999999999998 93.498099999999994 2.0636899999999998 +-3.0234200000000002 93.498099999999994 2.0527000000000002 +-5.4515599999999997 91.630300000000005 1.90987 +-5.8251200000000001 93.498099999999994 1.84395 +-5.9899199999999997 91.630300000000005 1.7450699999999999 +-5.9899199999999997 89.762500000000003 1.7450699999999999 +-5.93499 95.376900000000006 1.71211 +-5.5614299999999997 89.762500000000003 1.6242099999999999 +-5.1878700000000002 89.762500000000003 1.58026 +-5.3197099999999997 91.630300000000005 1.6022400000000001 +-5.0450400000000002 91.630300000000005 1.5692699999999999 +-3.9353400000000001 89.762500000000003 1.50335 +-2.7816999999999998 91.630300000000005 1.4594 +-2.53999 89.762500000000003 1.44842 +-2.0345800000000001 91.630300000000005 1.44842 +-2.0345800000000001 89.762500000000003 1.44842 +-1.2544999999999999 91.630300000000005 1.43743 +-0.73810900000000002 89.762500000000003 1.43743 +0.54737800000000003 91.630300000000005 1.44842 +2.1514899999999999 89.762500000000003 1.50335 +3.1952600000000002 89.762500000000003 1.58026 +3.0524300000000002 95.376900000000006 1.5692699999999999 +3.0524300000000002 91.630300000000005 1.5692699999999999 +3.3380899999999998 89.762500000000003 1.6022400000000001 +3.5688200000000001 89.762500000000003 1.6242099999999999 +3.5688200000000001 91.630300000000005 1.6242099999999999 +3.9973100000000001 91.630300000000005 1.7450699999999999 +3.9973100000000001 91.630300000000005 1.77803 +1.2725200000000001 102.85899999999999 2.0417200000000002 +3.67869 91.630300000000005 1.8769100000000001 +3.4589500000000002 89.762500000000003 1.90987 +3.1952600000000002 93.498099999999994 1.9318500000000001 +3.1952600000000002 91.630300000000005 1.9318500000000001 +2.72282 91.630300000000005 1.9758 +2.8876200000000001 91.630300000000005 1.9648099999999999 +1.2725200000000001 91.630300000000005 2.0417200000000002 +0.54737800000000003 91.630300000000005 2.0636899999999998 +0.041973099999999999 91.630300000000005 2.0746799999999999 +-0.47442000000000001 89.762500000000003 2.0746799999999999 +-3.49586 136.56700000000001 2.0417200000000002 +-0.73810900000000002 91.630300000000005 2.0746799999999999 +-0.990811 89.762500000000003 2.0746799999999999 +-1.7818799999999999 91.630300000000005 2.0746799999999999 +-2.53999 91.630300000000005 2.0636899999999998 +-2.28728 91.630300000000005 2.0746799999999999 +-3.9353400000000001 93.498099999999994 2.0197400000000001 +-5.0450400000000002 91.630300000000005 1.9428300000000001 +-5.66031 89.762500000000003 1.8769100000000001 +-5.7482100000000003 89.762500000000003 1.85494 +-5.8251200000000001 91.630300000000005 1.84395 +-5.9679500000000001 93.498099999999994 1.7890200000000001 +-5.9899199999999997 89.762500000000003 1.77803 +-5.9899199999999997 95.376900000000006 1.7450699999999999 +0.54737800000000003 20.489100000000001 2.0636899999999998 +-5.9679500000000001 87.883700000000005 1.72309 +-5.8800499999999998 89.762500000000003 1.6901299999999999 +-5.7482100000000003 87.883700000000005 1.65717 +-5.4515599999999997 87.883700000000005 1.6132200000000001 +-4.7154199999999999 87.883700000000005 1.5472999999999999 +-3.0234200000000002 87.883700000000005 1.4594 +-1.7818799999999999 87.883700000000005 1.43743 +-1.7818799999999999 89.762500000000003 1.43743 +-1.5181899999999999 87.883700000000005 1.43743 +-0.47442000000000001 87.883700000000005 1.43743 +0.041973099999999999 87.883700000000005 1.44842 +-0.21073 89.762500000000003 1.43743 +0.041973099999999999 89.762500000000003 1.44842 +-5.7482100000000003 114.099 1.65717 +0.54737800000000003 89.762500000000003 1.44842 +0.80008000000000001 87.883700000000005 1.4594 +1.04179 89.762500000000003 1.4594 +0.80008000000000001 89.762500000000003 1.4594 +1.9427300000000001 89.762500000000003 1.50335 +2.3492600000000001 89.762500000000003 1.51434 +3.4589500000000002 87.883700000000005 1.6132200000000001 +3.7555999999999998 89.762500000000003 1.65717 +3.94238 87.883700000000005 1.71211 +3.9973100000000001 87.883700000000005 1.7450699999999999 +4.0083000000000002 87.883700000000005 1.7560500000000001 +3.9973100000000001 89.762500000000003 1.77803 +3.9753400000000001 89.762500000000003 1.7890200000000001 +3.94238 91.630300000000005 1.8109900000000001 +3.8984299999999998 89.762500000000003 1.8219799999999999 +3.8984299999999998 91.630300000000005 1.8219799999999999 +3.1952600000000002 89.762500000000003 1.9318500000000001 +1.50325 87.883700000000005 2.0417200000000002 +0.29467500000000002 89.762500000000003 2.0746799999999999 +0.041973099999999999 87.883700000000005 2.0746799999999999 +0.041973099999999999 89.762500000000003 2.0746799999999999 +-0.47442000000000001 87.883700000000005 2.0746799999999999 +-1.2544999999999999 89.762500000000003 2.0746799999999999 +-1.5181899999999999 89.762500000000003 2.0746799999999999 +-3.0234200000000002 91.630300000000005 2.0527000000000002 +-5.1878700000000002 87.883700000000005 1.9318500000000001 +-5.66031 93.498099999999994 1.8769100000000001 +-5.7482100000000003 91.630300000000005 1.85494 +-5.7482100000000003 87.883700000000005 1.85494 +-5.8251200000000001 89.762500000000003 1.84395 +-5.8800499999999998 87.883700000000005 1.8219799999999999 +-4.1440999999999999 87.883700000000005 1.50335 +-3.2651300000000001 87.883700000000005 1.4703900000000001 +-2.7816999999999998 86.015900000000002 1.4594 +-2.28728 87.883700000000005 1.44842 +-1.2544999999999999 87.883700000000005 1.43743 +-0.73810900000000002 87.883700000000005 1.43743 +0.29467500000000002 87.883700000000005 1.44842 +0.80008000000000001 86.015900000000002 1.4594 +2.1514899999999999 87.883700000000005 1.50335 +1.9427300000000001 87.883700000000005 1.50335 +2.3492600000000001 87.883700000000005 1.51434 +3.0524300000000002 87.883700000000005 1.5692699999999999 +3.7555999999999998 102.85899999999999 1.85494 +-5.8800499999999998 108.48399999999999 1.6901299999999999 +3.3380899999999998 87.883700000000005 1.6022400000000001 +3.4589500000000002 86.015900000000002 1.6132200000000001 +3.67869 87.883700000000005 1.64618 +3.8984299999999998 87.883700000000005 1.6901299999999999 +3.67869 87.883700000000005 1.8769100000000001 +3.3380899999999998 87.883700000000005 1.92086 +2.1514899999999999 87.883700000000005 2.0087600000000001 +1.2725200000000001 86.015900000000002 2.0417200000000002 +0.80008000000000001 87.883700000000005 2.0636899999999998 +0.29467500000000002 87.883700000000005 2.0746799999999999 +-0.21073 86.015900000000002 2.0746799999999999 +-0.47442000000000001 86.015900000000002 2.0746799999999999 +-0.73810900000000002 87.883700000000005 2.0746799999999999 +-0.990811 87.883700000000005 2.0746799999999999 +-1.2544999999999999 87.883700000000005 2.0746799999999999 +-1.2544999999999999 86.015900000000002 2.0746799999999999 +-1.5181899999999999 86.015900000000002 2.0746799999999999 +-1.7818799999999999 87.883700000000005 2.0746799999999999 +-1.5181899999999999 87.883700000000005 2.0746799999999999 +-2.28728 89.762500000000003 2.0746799999999999 +-2.53999 87.883700000000005 2.0636899999999998 +-2.7816999999999998 89.762500000000003 2.0636899999999998 +-3.0234200000000002 87.883700000000005 2.0527000000000002 +-5.0450400000000002 87.883700000000005 1.9428300000000001 +-5.4515599999999997 86.015900000000002 1.90987 +-5.5614299999999997 86.015900000000002 1.8878999999999999 +-5.5614299999999997 87.883700000000005 1.8878999999999999 +-5.8800499999999998 86.015900000000002 1.8219799999999999 +-5.9679500000000001 87.883700000000005 1.7890200000000001 +-5.9679500000000001 89.762500000000003 1.7890200000000001 +-4.7154199999999999 86.015900000000002 1.5472999999999999 +2.1514899999999999 26.1035 2.0087600000000001 +1.9427300000000001 26.1035 2.0197400000000001 +-4.5286400000000002 84.148099999999999 1.5253300000000001 +3.67869 101.002 1.8769100000000001 +-4.3418599999999996 84.148099999999999 1.51434 +-4.3418599999999996 86.015900000000002 1.51434 +-4.1440999999999999 84.148099999999999 1.50335 +-2.53999 86.015900000000002 1.44842 +-2.28728 84.148099999999999 1.44842 +-2.28728 86.015900000000002 1.44842 +3.7555999999999998 132.821 1.65717 +-1.2544999999999999 86.015900000000002 1.43743 +-0.73810900000000002 84.148099999999999 1.43743 +-0.21073 84.148099999999999 1.43743 +-1.2544999999999999 110.363 1.43743 +0.29467500000000002 86.015900000000002 1.44842 +0.80008000000000001 84.148099999999999 1.4594 +1.9427300000000001 86.015900000000002 1.50335 +3.3380899999999998 84.148099999999999 1.6022400000000001 +3.9753400000000001 84.148099999999999 1.7890200000000001 +3.9753400000000001 86.015900000000002 1.7890200000000001 +3.9973100000000001 86.015900000000002 1.77803 +3.3380899999999998 84.148099999999999 1.92086 +2.1514899999999999 86.015900000000002 2.0087600000000001 +1.9427300000000001 84.148099999999999 2.0197400000000001 +1.04179 84.148099999999999 2.0527000000000002 +1.04179 86.015900000000002 2.0527000000000002 +0.041973099999999999 84.148099999999999 2.0746799999999999 +-0.73810900000000002 86.015900000000002 2.0746799999999999 +-0.990811 86.015900000000002 2.0746799999999999 +-1.7818799999999999 84.148099999999999 2.0746799999999999 +-5.8251200000000001 97.244699999999995 1.6791400000000001 +-1.7818799999999999 86.015900000000002 2.0746799999999999 +-2.28728 86.015900000000002 2.0746799999999999 +-3.2651300000000001 86.015900000000002 2.0417200000000002 +-5.5614299999999997 84.148099999999999 1.8878999999999999 +-5.66031 84.148099999999999 1.8769100000000001 +-5.1878700000000002 82.269300000000001 1.58026 +-5.1878700000000002 84.148099999999999 1.58026 +-5.1878700000000002 86.015900000000002 1.58026 +-0.47442000000000001 117.845 2.0746799999999999 +-2.53999 84.148099999999999 1.44842 +-2.28728 82.269300000000001 1.44842 +-2.0345800000000001 82.269300000000001 1.44842 +-1.5181899999999999 82.269300000000001 1.43743 +-1.7818799999999999 84.148099999999999 1.43743 +-0.990811 82.269300000000001 1.43743 +-0.47442000000000001 82.269300000000001 1.43743 +-0.47442000000000001 84.148099999999999 1.43743 +0.29467500000000002 82.269300000000001 1.44842 +0.80008000000000001 82.269300000000001 1.4594 +2.1514899999999999 84.148099999999999 1.50335 +3.1952600000000002 82.269300000000001 1.58026 +3.0524300000000002 84.148099999999999 1.5692699999999999 +3.1952600000000002 84.148099999999999 1.58026 +3.5688200000000001 84.148099999999999 1.6242099999999999 +3.7555999999999998 84.148099999999999 1.65717 +3.67869 84.148099999999999 1.64618 +3.8984299999999998 82.269300000000001 1.6901299999999999 +4.0083000000000002 82.269300000000001 1.7560500000000001 +4.0083000000000002 84.148099999999999 1.7560500000000001 +3.5688200000000001 26.1035 1.8878999999999999 +3.9973100000000001 82.269300000000001 1.77803 +3.9973100000000001 84.148099999999999 1.77803 +-1.7818799999999999 121.592 1.43743 +3.94238 87.883700000000005 1.8109900000000001 +3.8984299999999998 82.269300000000001 1.8219799999999999 +3.3380899999999998 82.269300000000001 1.92086 +3.4589500000000002 84.148099999999999 1.90987 +3.3380899999999998 86.015900000000002 1.92086 +3.1952600000000002 86.015900000000002 1.9318500000000001 +2.72282 84.148099999999999 1.9758 +2.1514899999999999 82.269300000000001 2.0087600000000001 +0.54737800000000003 84.148099999999999 2.0636899999999998 +0.041973099999999999 82.269300000000001 2.0746799999999999 +0.29467500000000002 84.148099999999999 2.0746799999999999 +3.9973100000000001 110.363 1.7450699999999999 +-0.21073 84.148099999999999 2.0746799999999999 +-0.47442000000000001 84.148099999999999 2.0746799999999999 +-0.990811 82.269300000000001 2.0746799999999999 +-1.7818799999999999 82.269300000000001 2.0746799999999999 +-2.0345800000000001 84.148099999999999 2.0746799999999999 +-2.7816999999999998 86.015900000000002 2.0636899999999998 +-3.0234200000000002 86.015900000000002 2.0527000000000002 +-3.49586 84.148099999999999 2.0417200000000002 +-3.49586 86.015900000000002 2.0417200000000002 +-5.5614299999999997 82.269300000000001 1.8878999999999999 +-5.4515599999999997 84.148099999999999 1.90987 +-5.7482100000000003 86.015900000000002 1.85494 +-5.66031 86.015900000000002 1.8769100000000001 +-5.8800499999999998 80.401499999999999 1.6901299999999999 +-5.93499 82.269300000000001 1.71211 +-5.5614299999999997 82.269300000000001 1.6242099999999999 +-5.5614299999999997 80.401499999999999 1.6242099999999999 +-5.4515599999999997 80.401499999999999 1.6132200000000001 +-5.0450400000000002 80.401499999999999 1.5692699999999999 +-5.8800499999999998 24.224699999999999 1.6901299999999999 +-4.7154199999999999 80.401499999999999 1.5472999999999999 +-3.0234200000000002 80.401499999999999 1.4594 +-2.7816999999999998 80.401499999999999 1.4594 +-2.28728 80.401499999999999 1.44842 +-1.7818799999999999 80.401499999999999 1.43743 +-1.7818799999999999 82.269300000000001 1.43743 +-0.47442000000000001 80.401499999999999 1.43743 +-0.21073 80.401499999999999 1.43743 +0.041973099999999999 80.401499999999999 1.44842 +-0.21073 82.269300000000001 1.43743 +0.041973099999999999 82.269300000000001 1.44842 +0.54737800000000003 82.269300000000001 1.44842 +0.80008000000000001 80.401499999999999 1.4594 +3.4589500000000002 80.401499999999999 1.6132200000000001 +3.4589500000000002 82.269300000000001 1.6132200000000001 +3.8325100000000001 80.401499999999999 1.6791400000000001 +3.8325100000000001 82.269300000000001 1.6791400000000001 +3.9753400000000001 82.269300000000001 1.72309 +3.9973100000000001 80.401499999999999 1.7450699999999999 +4.0083000000000002 80.401499999999999 1.7560500000000001 +3.7555999999999998 80.401499999999999 1.85494 +2.72282 80.401499999999999 1.9758 +2.8876200000000001 82.269300000000001 1.9648099999999999 +-5.7482100000000003 129.07400000000001 1.85494 +0.54737800000000003 80.401499999999999 2.0636899999999998 +0.54737800000000003 82.269300000000001 2.0636899999999998 +0.29467500000000002 82.269300000000001 2.0746799999999999 +-0.21073 80.401499999999999 2.0746799999999999 +-0.21073 82.269300000000001 2.0746799999999999 +-0.73810900000000002 82.269300000000001 2.0746799999999999 +-1.2544999999999999 80.401499999999999 2.0746799999999999 +-2.28728 82.269300000000001 2.0746799999999999 +-2.53999 80.401499999999999 2.0636899999999998 +-2.7816999999999998 82.269300000000001 2.0636899999999998 +-2.7816999999999998 84.148099999999999 2.0636899999999998 +-3.0234200000000002 84.148099999999999 2.0527000000000002 +3.3380899999999998 130.953 1.92086 +-3.49586 82.269300000000001 2.0417200000000002 +-3.2651300000000001 84.148099999999999 2.0417200000000002 +-5.66031 80.401499999999999 1.8769100000000001 +-5.8800499999999998 80.401499999999999 1.8219799999999999 +-5.93499 86.015900000000002 1.8109900000000001 +-5.9679500000000001 84.148099999999999 1.7890200000000001 +-5.9899199999999997 80.401499999999999 1.77803 +-5.9899199999999997 78.5227 1.7450699999999999 +-5.9679500000000001 80.401499999999999 1.72309 +-5.8800499999999998 78.5227 1.6901299999999999 +-5.8251200000000001 80.401499999999999 1.6791400000000001 +-4.8802300000000001 80.401499999999999 1.55829 +-4.5286400000000002 78.5227 1.5253300000000001 +-3.0234200000000002 78.5227 1.4594 +-2.0345800000000001 80.401499999999999 1.44842 +-0.990811 80.401499999999999 1.43743 +-0.73810900000000002 80.401499999999999 1.43743 +0.29467500000000002 80.401499999999999 1.44842 +2.1514899999999999 78.5227 1.50335 +3.0524300000000002 80.401499999999999 1.5692699999999999 +3.94238 78.5227 1.71211 +3.8984299999999998 80.401499999999999 1.6901299999999999 +3.94238 33.585700000000003 1.71211 +3.9973100000000001 78.5227 1.77803 +3.9973100000000001 80.401499999999999 1.77803 +3.3380899999999998 78.5227 1.92086 +3.1952600000000002 80.401499999999999 1.9318500000000001 +2.3492600000000001 80.401499999999999 1.99777 +1.2725200000000001 80.401499999999999 2.0417200000000002 +1.2725200000000001 78.5227 2.0417200000000002 +1.04179 80.401499999999999 2.0527000000000002 +-0.21073 78.5227 2.0746799999999999 +-0.47442000000000001 80.401499999999999 2.0746799999999999 +-1.2544999999999999 78.5227 2.0746799999999999 +-2.0345800000000001 78.5227 2.0746799999999999 +-2.53999 78.5227 2.0636899999999998 +3.1952600000000002 132.821 1.9318500000000001 +3.1952600000000002 130.953 1.9318500000000001 +-2.28728 80.401499999999999 2.0746799999999999 +3.94238 125.339 1.8109900000000001 +3.94238 127.206 1.8109900000000001 +-2.53999 82.269300000000001 2.0636899999999998 +-3.2651300000000001 80.401499999999999 2.0417200000000002 +-3.0234200000000002 82.269300000000001 2.0527000000000002 +-5.5614299999999997 80.401499999999999 1.8878999999999999 +-5.66031 78.5227 1.8769100000000001 +-5.7482100000000003 82.269300000000001 1.85494 +-5.66031 82.269300000000001 1.8769100000000001 +-5.7482100000000003 80.401499999999999 1.85494 +-5.8251200000000001 78.5227 1.6791400000000001 +-5.8251200000000001 76.654899999999998 1.6791400000000001 +-5.4515599999999997 76.654899999999998 1.6132200000000001 +-4.3418599999999996 78.5227 1.51434 +-3.2651300000000001 78.5227 1.4703900000000001 +-3.0234200000000002 76.654899999999998 1.4594 +-2.7816999999999998 78.5227 1.4594 +-2.28728 78.5227 1.44842 +-1.5181899999999999 76.654899999999998 1.43743 +-4.7154199999999999 121.592 1.5472999999999999 +-0.990811 78.5227 1.43743 +0.041973099999999999 78.5227 1.44842 +0.29467500000000002 78.5227 1.44842 +0.29467500000000002 76.654899999999998 1.44842 +2.1514899999999999 76.654899999999998 1.50335 +2.3492600000000001 76.654899999999998 1.51434 +3.4589500000000002 78.5227 1.6132200000000001 +-1.2544999999999999 134.69999999999999 2.0746799999999999 +3.8984299999999998 78.5227 1.6901299999999999 +3.9973100000000001 101.002 1.77803 +4.0083000000000002 76.654899999999998 1.7560500000000001 +3.9753400000000001 78.5227 1.7890200000000001 +3.4589500000000002 76.654899999999998 1.90987 +3.4589500000000002 78.5227 1.90987 +2.1514899999999999 76.654899999999998 2.0087600000000001 +0.29467500000000002 78.5227 2.0746799999999999 +-0.21073 76.654899999999998 2.0746799999999999 +-1.7818799999999999 76.654899999999998 2.0746799999999999 +-1.7818799999999999 78.5227 2.0746799999999999 +-2.0345800000000001 76.654899999999998 2.0746799999999999 +-2.53999 76.654899999999998 2.0636899999999998 +-3.0234200000000002 78.5227 2.0527000000000002 +-3.0234200000000002 80.401499999999999 2.0527000000000002 +-2.7816999999999998 80.401499999999999 2.0636899999999998 +-5.8800499999999998 76.654899999999998 1.8219799999999999 +-5.8251200000000001 78.5227 1.84395 +-5.93499 80.401499999999999 1.71211 +-5.5614299999999997 74.787099999999995 1.6242099999999999 +-5.0450400000000002 74.787099999999995 1.5692699999999999 +-4.7154199999999999 74.787099999999995 1.5472999999999999 +-2.7816999999999998 74.787099999999995 1.4594 +-0.73810900000000002 33.585700000000003 2.0746799999999999 +-1.7818799999999999 74.787099999999995 1.43743 +-1.5181899999999999 74.787099999999995 1.43743 +-0.990811 76.654899999999998 1.43743 +-0.47442000000000001 74.787099999999995 1.43743 +-0.73810900000000002 76.654899999999998 1.43743 +0.29467500000000002 74.787099999999995 1.44842 +0.041973099999999999 76.654899999999998 1.44842 +-5.3197099999999997 95.376900000000006 1.6022400000000001 +1.04179 74.787099999999995 1.4594 +1.9427300000000001 76.654899999999998 1.50335 +2.1514899999999999 74.787099999999995 1.50335 +3.0524300000000002 74.787099999999995 1.5692699999999999 +3.5688200000000001 74.787099999999995 1.6242099999999999 +3.4589500000000002 76.654899999999998 1.6132200000000001 +3.7555999999999998 74.787099999999995 1.65717 +3.67869 74.787099999999995 1.64618 +3.94238 74.787099999999995 1.71211 +3.9973100000000001 74.787099999999995 1.7450699999999999 +3.9753400000000001 76.654899999999998 1.72309 +4.0083000000000002 74.787099999999995 1.7560500000000001 +3.9973100000000001 76.654899999999998 1.7450699999999999 +3.8325100000000001 76.654899999999998 1.84395 +3.1952600000000002 78.5227 1.9318500000000001 +2.8876200000000001 76.654899999999998 1.9648099999999999 +1.9427300000000001 74.787099999999995 2.0197400000000001 +0.80008000000000001 74.787099999999995 2.0636899999999998 +1.04179 76.654899999999998 2.0527000000000002 +0.54737800000000003 74.787099999999995 2.0636899999999998 +0.29467500000000002 76.654899999999998 2.0746799999999999 +-0.21073 74.787099999999995 2.0746799999999999 +-0.47442000000000001 76.654899999999998 2.0746799999999999 +-0.73810900000000002 76.654899999999998 2.0746799999999999 +-1.2544999999999999 74.787099999999995 2.0746799999999999 +-2.53999 74.787099999999995 2.0636899999999998 +-2.28728 76.654899999999998 2.0746799999999999 +-3.49586 78.5227 2.0417200000000002 +-5.0450400000000002 76.654899999999998 1.9428300000000001 +-5.8251200000000001 74.787099999999995 1.84395 +3.7555999999999998 140.31399999999999 1.85494 +-5.9899199999999997 74.787099999999995 1.7450699999999999 +-5.9679500000000001 74.787099999999995 1.72309 +-5.8800499999999998 72.9084 1.6901299999999999 +-4.5286400000000002 129.07400000000001 1.5253300000000001 +-5.7482100000000003 74.787099999999995 1.65717 +-5.1878700000000002 72.9084 1.58026 +-5.3197099999999997 74.787099999999995 1.6022400000000001 +-4.7154199999999999 72.9084 1.5472999999999999 +-3.2651300000000001 72.9084 1.4703900000000001 +-2.53999 72.9084 1.44842 +-1.7818799999999999 72.9084 1.43743 +-2.0345800000000001 72.9084 1.44842 +-1.2544999999999999 74.787099999999995 1.43743 +-0.990811 74.787099999999995 1.43743 +0.80008000000000001 110.363 1.4594 +0.041973099999999999 74.787099999999995 1.44842 +-5.5614299999999997 97.244699999999995 1.8878999999999999 +0.54737800000000003 74.787099999999995 1.44842 +3.8984299999999998 72.9084 1.6901299999999999 +3.9973100000000001 74.787099999999995 1.77803 +3.9753400000000001 72.9084 1.7890200000000001 +0.80008000000000001 125.339 1.4594 +3.8984299999999998 72.9084 1.8219799999999999 +3.5688200000000001 74.787099999999995 1.8878999999999999 +-2.28728 127.206 1.44842 +3.0524300000000002 74.787099999999995 1.9428300000000001 +3.0524300000000002 72.9084 1.9428300000000001 +1.2725200000000001 74.787099999999995 2.0417200000000002 +1.04179 74.787099999999995 2.0527000000000002 +0.80008000000000001 72.9084 2.0636899999999998 +0.29467500000000002 74.787099999999995 2.0746799999999999 +-0.47442000000000001 74.787099999999995 2.0746799999999999 +-0.990811 127.206 2.0746799999999999 +-5.9899199999999997 142.18199999999999 1.7450699999999999 +-1.7818799999999999 72.9084 2.0746799999999999 +-2.28728 74.787099999999995 2.0746799999999999 +-2.53999 72.9084 2.0636899999999998 +-3.0234200000000002 72.9084 2.0527000000000002 +-4.1440999999999999 74.787099999999995 2.0087600000000001 +-5.9899199999999997 97.244699999999995 1.7450699999999999 +-5.9899199999999997 99.123500000000007 1.77803 +-5.4515599999999997 74.787099999999995 1.90987 +-5.7482100000000003 76.654899999999998 1.85494 +-5.8251200000000001 72.9084 1.6791400000000001 +-5.7482100000000003 71.040599999999998 1.65717 +-5.1878700000000002 71.040599999999998 1.58026 +-5.3197099999999997 72.9084 1.6022400000000001 +-4.8802300000000001 72.9084 1.55829 +-4.5286400000000002 71.040599999999998 1.5253300000000001 +-4.1440999999999999 72.9084 1.50335 +-2.7816999999999998 71.040599999999998 1.4594 +-1.5181899999999999 71.040599999999998 1.43743 +-0.990811 71.040599999999998 1.43743 +-0.990811 72.9084 1.43743 +-0.47442000000000001 72.9084 1.43743 +-0.21073 72.9084 1.43743 +0.29467500000000002 71.040599999999998 1.44842 +0.041973099999999999 71.040599999999998 1.44842 +-5.8800499999999998 99.123500000000007 1.8219799999999999 +0.29467500000000002 72.9084 1.44842 +0.80008000000000001 72.9084 1.4594 +0.54737800000000003 72.9084 1.44842 +1.04179 71.040599999999998 1.4594 +1.9427300000000001 72.9084 1.50335 +2.3492600000000001 71.040599999999998 1.51434 +2.3492600000000001 125.339 1.51434 +3.9973100000000001 71.040599999999998 1.7450699999999999 +4.0083000000000002 71.040599999999998 1.7560500000000001 +3.9973100000000001 72.9084 1.77803 +3.7555999999999998 72.9084 1.85494 +3.4589500000000002 71.040599999999998 1.90987 +3.3380899999999998 74.787099999999995 1.6022400000000001 +2.72282 72.9084 1.9758 +2.72282 71.040599999999998 1.9758 +-5.8251200000000001 123.45999999999999 1.6791400000000001 +2.3492600000000001 72.9084 1.99777 +3.9973100000000001 108.48399999999999 1.7450699999999999 +0.80008000000000001 71.040599999999998 2.0636899999999998 +0.54737800000000003 71.040599999999998 2.0636899999999998 +0.54737800000000003 72.9084 2.0636899999999998 +3.1952600000000002 39.210999999999999 1.9318500000000001 +-0.47442000000000001 71.040599999999998 2.0746799999999999 +-2.7816999999999998 125.339 1.4594 +-0.73810900000000002 71.040599999999998 2.0746799999999999 +-0.990811 71.040599999999998 2.0746799999999999 +-1.2544999999999999 72.9084 2.0746799999999999 +-1.7818799999999999 71.040599999999998 2.0746799999999999 +-2.53999 71.040599999999998 2.0636899999999998 +-2.7816999999999998 72.9084 2.0636899999999998 +-3.2651300000000001 71.040599999999998 2.0417200000000002 +-3.2651300000000001 72.9084 2.0417200000000002 +-3.9353400000000001 74.787099999999995 2.0197400000000001 +-5.1878700000000002 76.654899999999998 1.9318500000000001 +-5.66031 71.040599999999998 1.8769100000000001 +-5.5614299999999997 72.9084 1.8878999999999999 +-5.8251200000000001 72.9084 1.84395 +-5.8251200000000001 71.040599999999998 1.84395 +-5.8800499999999998 72.9084 1.8219799999999999 +-5.9899199999999997 71.040599999999998 1.7450699999999999 +-5.8251200000000001 69.161799999999999 1.6791400000000001 +-5.3197099999999997 69.161799999999999 1.6022400000000001 +-5.3197099999999997 71.040599999999998 1.6022400000000001 +-5.0450400000000002 72.9084 1.5692699999999999 +-3.9353400000000001 69.161799999999999 1.50335 +-3.2651300000000001 69.161799999999999 1.4703900000000001 +-2.28728 69.161799999999999 1.44842 +-1.7818799999999999 69.161799999999999 1.43743 +-1.2544999999999999 71.040599999999998 1.43743 +-0.73810900000000002 71.040599999999998 1.43743 +-0.47442000000000001 71.040599999999998 1.43743 +-0.21073 71.040599999999998 1.43743 +0.041973099999999999 69.161799999999999 1.44842 +0.54737800000000003 71.040599999999998 1.44842 +3.0524300000000002 71.040599999999998 1.5692699999999999 +3.67869 69.161799999999999 1.64618 +3.8325100000000001 69.161799999999999 1.6791400000000001 +4.0083000000000002 69.161799999999999 1.7560500000000001 +3.9753400000000001 69.161799999999999 1.7890200000000001 +3.5688200000000001 71.040599999999998 1.8878999999999999 +3.3380899999999998 69.161799999999999 1.92086 +3.0524300000000002 71.040599999999998 1.9428300000000001 +3.0524300000000002 69.161799999999999 1.9428300000000001 +2.72282 69.161799999999999 1.9758 +2.8876200000000001 71.040599999999998 1.9648099999999999 +2.1514899999999999 71.040599999999998 2.0087600000000001 +1.9427300000000001 69.161799999999999 2.0197400000000001 +1.04179 71.040599999999998 2.0527000000000002 +0.80008000000000001 69.161799999999999 2.0636899999999998 +-0.47442000000000001 69.161799999999999 2.0746799999999999 +-2.0345800000000001 71.040599999999998 2.0746799999999999 +-2.28728 69.161799999999999 2.0746799999999999 +0.29467500000000002 91.630300000000005 1.44842 +-2.28728 71.040599999999998 2.0746799999999999 +-2.53999 69.161799999999999 2.0636899999999998 +3.3380899999999998 20.489100000000001 1.92086 +3.3380899999999998 22.3569 1.92086 +3.4589500000000002 136.56700000000001 1.89889 +-5.5614299999999997 69.161799999999999 1.8878999999999999 +-5.5614299999999997 71.040599999999998 1.8878999999999999 +-5.7482100000000003 72.9084 1.85494 +2.72282 115.97799999999999 1.9758 +2.72282 114.099 1.9758 +-5.9899199999999997 71.040599999999998 1.77803 +-5.93499 69.161799999999999 1.71211 +-5.8251200000000001 67.283000000000001 1.6791400000000001 +-5.8800499999999998 69.161799999999999 1.6901299999999999 +-5.7482100000000003 67.283000000000001 1.65717 +-5.5614299999999997 130.953 1.6242099999999999 +-5.5614299999999997 69.161799999999999 1.6242099999999999 +-5.66031 69.161799999999999 1.64618 +-5.1878700000000002 67.283000000000001 1.58026 +-3.9353400000000001 67.283000000000001 1.50335 +-3.0234200000000002 69.161799999999999 1.4594 +-2.7816999999999998 69.161799999999999 1.4594 +-1.7818799999999999 67.283000000000001 1.43743 +-1.5181899999999999 69.161799999999999 1.43743 +-1.2544999999999999 69.161799999999999 1.43743 +-0.990811 69.161799999999999 1.43743 +-0.73810900000000002 69.161799999999999 1.43743 +-0.47442000000000001 67.283000000000001 1.43743 +-0.21073 69.161799999999999 1.43743 +0.29467500000000002 67.283000000000001 1.44842 +0.29467500000000002 69.161799999999999 1.44842 +0.54737800000000003 67.283000000000001 1.44842 +3.3380899999999998 67.283000000000001 1.6022400000000001 +-3.0234200000000002 95.376900000000006 1.4594 +3.94238 67.283000000000001 1.71211 +4.0083000000000002 67.283000000000001 1.7560500000000001 +3.7555999999999998 69.161799999999999 1.85494 +3.8325100000000001 69.161799999999999 1.84395 +2.3492600000000001 140.31399999999999 1.99777 +3.0524300000000002 67.283000000000001 1.9428300000000001 +3.1952600000000002 69.161799999999999 1.9318500000000001 +2.8876200000000001 69.161799999999999 1.9648099999999999 +0.29467500000000002 69.161799999999999 2.0746799999999999 +-0.21073 69.161799999999999 2.0746799999999999 +-0.73810900000000002 69.161799999999999 2.0746799999999999 +-1.2544999999999999 67.283000000000001 2.0746799999999999 +-1.7818799999999999 67.283000000000001 2.0746799999999999 +-5.4515599999999997 127.206 1.90987 +-5.4515599999999997 129.07400000000001 1.90987 +-1.5181899999999999 69.161799999999999 2.0746799999999999 +-2.0345800000000001 67.283000000000001 2.0746799999999999 +-5.8251200000000001 102.85899999999999 1.6791400000000001 +-2.0345800000000001 69.161799999999999 2.0746799999999999 +-2.53999 67.283000000000001 2.0636899999999998 +-3.2651300000000001 67.283000000000001 2.0417200000000002 +-3.2651300000000001 69.161799999999999 2.0417200000000002 +3.0524300000000002 114.099 1.5692699999999999 +-3.9353400000000001 71.040599999999998 2.0197400000000001 +-5.0450400000000002 67.283000000000001 1.9428300000000001 +-5.66031 67.283000000000001 1.8769100000000001 +-5.8251200000000001 67.283000000000001 1.84395 +-5.8251200000000001 69.161799999999999 1.84395 +-5.0450400000000002 65.426199999999994 1.5692699999999999 +-3.2651300000000001 65.426199999999994 1.4703900000000001 +-3.0234200000000002 67.283000000000001 1.4594 +-2.53999 65.426199999999994 1.44842 +-2.7816999999999998 67.283000000000001 1.4594 +-2.53999 67.283000000000001 1.44842 +-2.28728 65.426199999999994 1.44842 +-2.28728 67.283000000000001 1.44842 +-1.5181899999999999 67.283000000000001 1.43743 +-0.73810900000000002 65.426199999999994 1.43743 +-0.990811 65.426199999999994 1.43743 +-2.7816999999999998 87.883700000000005 1.4594 +-0.21073 67.283000000000001 1.43743 +0.041973099999999999 65.426199999999994 1.44842 +1.9427300000000001 67.283000000000001 1.50335 +2.3492600000000001 65.426199999999994 1.51434 +-5.8251200000000001 86.015900000000002 1.84395 +-5.93499 112.22 1.71211 +3.9973100000000001 65.426199999999994 1.7450699999999999 +3.9753400000000001 67.283000000000001 1.72309 +3.94238 106.60599999999999 1.8109900000000001 +3.9753400000000001 106.60599999999999 1.7890200000000001 +3.94238 102.85899999999999 1.8109900000000001 +3.9753400000000001 102.85899999999999 1.7890200000000001 +3.94238 99.123500000000007 1.8109900000000001 +3.9753400000000001 97.244699999999995 1.7890200000000001 +3.9753400000000001 95.376900000000006 1.7890200000000001 +3.94238 95.376900000000006 1.8109900000000001 +3.94238 93.498099999999994 1.8109900000000001 +3.94238 86.015900000000002 1.8109900000000001 +3.9753400000000001 82.269300000000001 1.7890200000000001 +-2.28728 71.040599999999998 1.44842 +3.9753400000000001 80.401499999999999 1.7890200000000001 +-0.73810900000000002 101.002 2.0746799999999999 +3.9753400000000001 74.787099999999995 1.7890200000000001 +3.94238 74.787099999999995 1.8109900000000001 +3.9753400000000001 71.040599999999998 1.7890200000000001 +3.94238 67.283000000000001 1.8109900000000001 +3.9753400000000001 67.283000000000001 1.7890200000000001 +3.5688200000000001 65.426199999999994 1.8878999999999999 +3.4589500000000002 67.283000000000001 1.90987 +3.1952600000000002 67.283000000000001 1.9318500000000001 +2.1514899999999999 67.283000000000001 2.0087600000000001 +-3.0234200000000002 97.244699999999995 2.0527000000000002 +1.2725200000000001 67.283000000000001 2.0417200000000002 +-3.49586 74.787099999999995 2.0417200000000002 +-3.2651300000000001 74.787099999999995 2.0417200000000002 +0.041973099999999999 67.283000000000001 2.0746799999999999 +-0.21073 65.426199999999994 2.0746799999999999 +-0.21073 67.283000000000001 2.0746799999999999 +-0.990811 65.426199999999994 2.0856699999999999 +-0.990811 67.283000000000001 2.0746799999999999 +-1.5181899999999999 67.283000000000001 2.0746799999999999 +-1.7818799999999999 65.426199999999994 2.0746799999999999 +-2.7816999999999998 67.283000000000001 2.0636899999999998 +-3.2651300000000001 65.426199999999994 2.0417200000000002 +-3.0234200000000002 67.283000000000001 2.0527000000000002 +-3.49586 65.426199999999994 2.0417200000000002 +-4.1440999999999999 65.426199999999994 2.0087600000000001 +-5.5614299999999997 67.283000000000001 1.8878999999999999 +-5.7482100000000003 67.283000000000001 1.85494 +-5.9899199999999997 63.547400000000003 1.7450699999999999 +-5.9679500000000001 65.426199999999994 1.72309 +-5.1878700000000002 63.547400000000003 1.58026 +-5.3197099999999997 65.426199999999994 1.6022400000000001 +-5.0450400000000002 63.547400000000003 1.5692699999999999 +-4.3418599999999996 65.426199999999994 1.51434 +-4.1440999999999999 63.547400000000003 1.50335 +-3.0234200000000002 63.547400000000003 1.4594 +-3.0234200000000002 65.426199999999994 1.4594 +-2.0345800000000001 63.547400000000003 1.44842 +0.041973099999999999 63.547400000000003 1.44842 +0.54737800000000003 63.547400000000003 1.44842 +0.29467500000000002 65.426199999999994 1.44842 +0.80008000000000001 65.426199999999994 1.4594 +1.2725200000000001 63.547400000000003 1.4703900000000001 +2.1514899999999999 63.547400000000003 1.50335 +2.1514899999999999 65.426199999999994 1.50335 +3.0524300000000002 63.547400000000003 1.5692699999999999 +3.3380899999999998 65.426199999999994 1.6022400000000001 +3.9973100000000001 63.547400000000003 1.7450699999999999 +4.0083000000000002 63.547400000000003 1.7560500000000001 +4.0083000000000002 65.426199999999994 1.7560500000000001 +3.9973100000000001 63.547400000000003 1.77803 +3.9973100000000001 65.426199999999994 1.77803 +-4.3418599999999996 89.762500000000003 1.51434 +3.8984299999999998 63.547400000000003 1.8219799999999999 +3.7555999999999998 63.547400000000003 1.85494 +3.4589500000000002 65.426199999999994 1.90987 +3.1952600000000002 65.426199999999994 1.9318500000000001 +3.3380899999999998 65.426199999999994 1.92086 +-5.9679500000000001 29.850100000000001 1.7890200000000001 +3.0524300000000002 65.426199999999994 1.9428300000000001 +3.0524300000000002 63.547400000000003 1.9428300000000001 +2.8876200000000001 65.426199999999994 1.9648099999999999 +1.9427300000000001 65.426199999999994 2.0197400000000001 +0.80008000000000001 65.426199999999994 2.0636899999999998 +-0.21073 63.547400000000003 2.0746799999999999 +-0.47442000000000001 65.426199999999994 2.0746799999999999 +-0.990811 63.547400000000003 2.0856699999999999 +-1.5181899999999999 63.547400000000003 2.0746799999999999 +-1.7818799999999999 63.547400000000003 2.0746799999999999 +-2.0345800000000001 63.547400000000003 2.0746799999999999 +-2.7816999999999998 63.547400000000003 2.0636899999999998 +-2.7816999999999998 65.426199999999994 2.0636899999999998 +-3.0234200000000002 63.547400000000003 2.0527000000000002 +-3.0234200000000002 65.426199999999994 2.0527000000000002 +-3.2651300000000001 63.547400000000003 2.0417200000000002 +-4.1440999999999999 63.547400000000003 2.0087600000000001 +-3.9353400000000001 63.547400000000003 2.0197400000000001 +-5.5614299999999997 63.547400000000003 1.8878999999999999 +-5.8800499999999998 65.426199999999994 1.8219799999999999 +-1.5181899999999999 78.5227 2.0746799999999999 +-5.8251200000000001 63.547400000000003 1.6791400000000001 +-5.3197099999999997 61.668599999999998 1.6022400000000001 +-5.3197099999999997 63.547400000000003 1.6022400000000001 +-4.7154199999999999 61.668599999999998 1.5472999999999999 +-4.7154199999999999 63.547400000000003 1.5472999999999999 +-4.1440999999999999 97.244699999999995 1.50335 +-3.9353400000000001 63.547400000000003 1.50335 +-2.7816999999999998 61.668599999999998 1.4594 +-2.28728 63.547400000000003 1.44842 +-1.7818799999999999 63.547400000000003 1.43743 +-1.5181899999999999 61.668599999999998 1.43743 +-1.5181899999999999 63.547400000000003 1.43743 +-0.47442000000000001 63.547400000000003 1.43743 +0.80008000000000001 61.668599999999998 1.4594 +1.04179 61.668599999999998 1.4594 +0.80008000000000001 63.547400000000003 1.4594 +1.04179 63.547400000000003 1.4594 +1.9427300000000001 61.668599999999998 1.50335 +2.1514899999999999 61.668599999999998 1.50335 +3.3380899999999998 63.547400000000003 1.6022400000000001 +3.94238 61.668599999999998 1.71211 +3.9973100000000001 61.668599999999998 1.7450699999999999 +3.9753400000000001 63.547400000000003 1.72309 +3.9973100000000001 61.668599999999998 1.77803 +3.94238 63.547400000000003 1.8109900000000001 +3.4589500000000002 61.668599999999998 1.90987 +3.3380899999999998 61.668599999999998 1.92086 +3.4589500000000002 63.547400000000003 1.90987 +3.0524300000000002 61.668599999999998 1.9428300000000001 +3.1952600000000002 63.547400000000003 1.9318500000000001 +2.1514899999999999 61.668599999999998 2.0087600000000001 +0.80008000000000001 63.547400000000003 2.0636899999999998 +0.29467500000000002 63.547400000000003 2.0746799999999999 +-0.47442000000000001 63.547400000000003 2.0746799999999999 +-5.7482100000000003 136.56700000000001 1.65717 +-0.73810900000000002 63.547400000000003 2.0746799999999999 +-1.7818799999999999 61.668599999999998 2.0746799999999999 +-1.5181899999999999 61.668599999999998 2.0746799999999999 +-2.28728 63.547400000000003 2.0746799999999999 +-2.53999 63.547400000000003 2.0636899999999998 +-2.53999 61.668599999999998 2.0636899999999998 +-3.2651300000000001 61.668599999999998 2.0417200000000002 +-3.49586 61.668599999999998 2.0417200000000002 +-3.9353400000000001 61.668599999999998 2.0197400000000001 +-5.1878700000000002 61.668599999999998 1.9318500000000001 +-5.0450400000000002 61.668599999999998 1.9428300000000001 +-5.9899199999999997 61.668599999999998 1.77803 +-4.5286400000000002 74.787099999999995 1.5253300000000001 +-5.9899199999999997 61.668599999999998 1.7450699999999999 +-5.8251200000000001 61.668599999999998 1.6791400000000001 +-5.1878700000000002 59.800800000000002 1.58026 +-4.1440999999999999 61.668599999999998 1.50335 +0.29467500000000002 115.97799999999999 1.44842 +-2.0345800000000001 59.800800000000002 1.44842 +-1.7818799999999999 61.668599999999998 1.43743 +-0.73810900000000002 59.800800000000002 1.43743 +-0.73810900000000002 61.668599999999998 1.43743 +-0.21073 59.800800000000002 1.43743 +-0.47442000000000001 61.668599999999998 1.43743 +-2.28728 110.363 2.0746799999999999 +0.041973099999999999 61.668599999999998 1.44842 +0.29467500000000002 59.800800000000002 1.44842 +0.54737800000000003 61.668599999999998 1.44842 +0.80008000000000001 59.800800000000002 1.4594 +3.9973100000000001 112.22 1.77803 +2.3492600000000001 61.668599999999998 1.51434 +-4.1440999999999999 104.738 2.0087600000000001 +3.3380899999999998 59.800800000000002 1.6022400000000001 +3.8984299999999998 59.800800000000002 1.6901299999999999 +3.8984299999999998 61.668599999999998 1.6901299999999999 +4.0083000000000002 61.668599999999998 1.7560500000000001 +3.5688200000000001 59.800800000000002 1.8878999999999999 +3.4589500000000002 59.800800000000002 1.90987 +2.1514899999999999 59.800800000000002 2.0087600000000001 +1.9427300000000001 59.800800000000002 2.0197400000000001 +3.5688200000000001 130.953 1.8878999999999999 +1.50325 59.800800000000002 2.0417200000000002 +0.80008000000000001 59.800800000000002 2.0636899999999998 +1.04179 59.800800000000002 2.0527000000000002 +0.54737800000000003 59.800800000000002 2.0636899999999998 +0.29467500000000002 61.668599999999998 2.0746799999999999 +0.041973099999999999 61.668599999999998 2.0746799999999999 +-0.73810900000000002 59.800800000000002 2.0746799999999999 +-0.990811 59.800800000000002 2.0856699999999999 +-0.990811 61.668599999999998 2.0856699999999999 +-1.2544999999999999 59.800800000000002 2.0746799999999999 +-1.7818799999999999 59.800800000000002 2.0746799999999999 +-2.0345800000000001 61.668599999999998 2.0746799999999999 +-3.0234200000000002 59.800800000000002 2.0527000000000002 +-3.0234200000000002 61.668599999999998 2.0527000000000002 +2.3492600000000001 80.401499999999999 1.51434 +2.1514899999999999 80.401499999999999 1.50335 +-5.8251200000000001 61.668599999999998 1.84395 +-5.9899199999999997 59.800800000000002 1.7450699999999999 +-5.9899199999999997 59.800800000000002 1.77803 +-5.8251200000000001 59.800800000000002 1.6791400000000001 +-5.7482100000000003 57.921999999999997 1.65717 +-5.66031 57.921999999999997 1.64618 +-4.5286400000000002 57.921999999999997 1.5253300000000001 +-3.0234200000000002 57.921999999999997 1.4594 +-2.7816999999999998 59.800800000000002 1.4594 +-2.28728 57.921999999999997 1.44842 +-2.28728 59.800800000000002 1.44842 +-1.5181899999999999 59.800800000000002 1.43743 +-0.990811 57.921999999999997 1.43743 +-0.73810900000000002 57.921999999999997 1.43743 +-0.990811 59.800800000000002 1.43743 +-0.47442000000000001 59.800800000000002 1.43743 +1.9427300000000001 125.339 1.4923599999999999 +0.041973099999999999 57.921999999999997 1.44842 +-0.21073 57.921999999999997 1.43743 +0.54737800000000003 59.800800000000002 1.44842 +1.9427300000000001 59.800800000000002 1.50335 +2.3492600000000001 57.921999999999997 1.51434 +3.8325100000000001 59.800800000000002 1.6791400000000001 +4.0083000000000002 57.921999999999997 1.7560500000000001 +3.94238 59.800800000000002 1.8109900000000001 +3.7555999999999998 57.921999999999997 1.85494 +3.3380899999999998 59.800800000000002 1.92086 +3.3380899999999998 63.547400000000003 1.92086 +3.0524300000000002 57.921999999999997 1.9428300000000001 +2.3492600000000001 59.800800000000002 1.99777 +0.80008000000000001 57.921999999999997 2.0636899999999998 +-3.9353400000000001 91.630300000000005 1.50335 +0.041973099999999999 93.498099999999994 1.44842 +0.041973099999999999 59.800800000000002 2.0746799999999999 +0.29467500000000002 59.800800000000002 2.0746799999999999 +-0.21073 57.921999999999997 2.0746799999999999 +-1.5181899999999999 57.921999999999997 2.0746799999999999 +-1.5181899999999999 59.800800000000002 2.0746799999999999 +-2.0345800000000001 59.800800000000002 2.0746799999999999 +-2.28728 57.921999999999997 2.0746799999999999 +-3.49586 57.921999999999997 2.0417200000000002 +-4.1440999999999999 57.921999999999997 2.0087600000000001 +-5.66031 59.800800000000002 1.8769100000000001 +-5.66031 63.547400000000003 1.8769100000000001 +-5.66031 61.668599999999998 1.8769100000000001 +-5.7482100000000003 59.800800000000002 1.85494 +-5.7482100000000003 123.45999999999999 1.65717 +-5.9899199999999997 57.921999999999997 1.7450699999999999 +-5.93499 63.547400000000003 1.71211 +-5.8251200000000001 57.921999999999997 1.6791400000000001 +-5.5614299999999997 56.065199999999997 1.6242099999999999 +-5.1878700000000002 56.065199999999997 1.58026 +-4.5286400000000002 56.065199999999997 1.5253300000000001 +-4.1440999999999999 56.065199999999997 1.50335 +-2.7816999999999998 57.921999999999997 1.4594 +-2.28728 56.065199999999997 1.44842 +-2.53999 57.921999999999997 1.44842 +-2.0345800000000001 57.921999999999997 1.44842 +3.9973100000000001 35.464500000000001 1.7450699999999999 +-1.5181899999999999 57.921999999999997 1.43743 +-0.47442000000000001 57.921999999999997 1.43743 +0.041973099999999999 56.065199999999997 1.44842 +2.3492600000000001 56.065199999999997 1.51434 +3.4589500000000002 57.921999999999997 1.6132200000000001 +3.8984299999999998 57.921999999999997 1.6901299999999999 +3.9973100000000001 57.921999999999997 1.77803 +3.9753400000000001 63.547400000000003 1.7890200000000001 +3.94238 56.065199999999997 1.8109900000000001 +3.8325100000000001 57.921999999999997 1.84395 +0.29467500000000002 91.630300000000005 2.0746799999999999 +-5.1878700000000002 80.401499999999999 1.9318500000000001 +-5.0450400000000002 80.401499999999999 1.9428300000000001 +3.1952600000000002 56.065199999999997 1.9318500000000001 +2.72282 56.065199999999997 1.9758 +2.1514899999999999 56.065199999999997 2.0087600000000001 +2.3492600000000001 56.065199999999997 1.99777 +0.041973099999999999 56.065199999999997 2.0746799999999999 +0.29467500000000002 57.921999999999997 2.0746799999999999 +-0.21073 56.065199999999997 2.0746799999999999 +0.041973099999999999 57.921999999999997 2.0746799999999999 +-1.2544999999999999 57.921999999999997 2.0746799999999999 +-2.28728 56.065199999999997 2.0746799999999999 +-2.53999 57.921999999999997 2.0636899999999998 +-3.2651300000000001 56.065199999999997 2.0417200000000002 +-3.9353400000000001 57.921999999999997 2.0197400000000001 +-5.0450400000000002 57.921999999999997 1.9428300000000001 +-5.66031 56.065199999999997 1.8769100000000001 +-5.66031 57.921999999999997 1.8769100000000001 +-5.7482100000000003 56.065199999999997 1.85494 +-5.7482100000000003 57.921999999999997 1.85494 +-5.9899199999999997 56.065199999999997 1.7450699999999999 +-5.9899199999999997 54.186399999999999 1.7450699999999999 +-5.8800499999999998 56.065199999999997 1.6901299999999999 +-5.3197099999999997 54.186399999999999 1.6022400000000001 +-5.0450400000000002 54.186399999999999 1.5692699999999999 +-4.3418599999999996 56.065199999999997 1.51434 +-2.7816999999999998 54.186399999999999 1.4594 +-3.0234200000000002 54.186399999999999 1.4594 +-2.0345800000000001 56.065199999999997 1.44842 +-1.7818799999999999 56.065199999999997 1.43743 +-1.2544999999999999 54.186399999999999 1.43743 +-0.73810900000000002 56.065199999999997 1.43743 +-0.47442000000000001 56.065199999999997 1.43743 +0.29467500000000002 56.065199999999997 1.44842 +3.67869 56.065199999999997 1.64618 +3.8984299999999998 54.186399999999999 1.6901299999999999 +3.9753400000000001 54.186399999999999 1.72309 +4.0083000000000002 56.065199999999997 1.7560500000000001 +-0.47442000000000001 115.97799999999999 2.0746799999999999 +3.4589500000000002 54.186399999999999 1.90987 +3.5688200000000001 56.065199999999997 1.8878999999999999 +3.1952600000000002 54.186399999999999 1.9318500000000001 +1.9427300000000001 56.065199999999997 2.0197400000000001 +1.2725200000000001 56.065199999999997 2.0417200000000002 +1.50325 56.065199999999997 2.0417200000000002 +1.04179 56.065199999999997 2.0527000000000002 +0.29467500000000002 54.186399999999999 2.0746799999999999 +0.29467500000000002 56.065199999999997 2.0746799999999999 +-0.21073 54.186399999999999 2.0746799999999999 +-0.47442000000000001 54.186399999999999 2.0746799999999999 +-0.990811 56.065199999999997 2.0856699999999999 +-1.2544999999999999 56.065199999999997 2.0746799999999999 +-1.2544999999999999 54.186399999999999 2.0746799999999999 +-1.5181899999999999 56.065199999999997 2.0746799999999999 +-2.28728 54.186399999999999 2.0746799999999999 +-2.53999 54.186399999999999 2.0636899999999998 +-2.53999 56.065199999999997 2.0636899999999998 +-3.2651300000000001 54.186399999999999 2.0417200000000002 +-4.1440999999999999 54.186399999999999 2.0087600000000001 +-5.1878700000000002 56.065199999999997 1.9318500000000001 +-5.0450400000000002 56.065199999999997 1.9428300000000001 +-5.5614299999999997 54.186399999999999 1.8878999999999999 +-5.8251200000000001 56.065199999999997 1.84395 +-5.8800499999999998 56.065199999999997 1.8219799999999999 +-5.9899199999999997 56.065199999999997 1.77803 +-5.8251200000000001 52.307600000000001 1.6791400000000001 +-5.8251200000000001 54.186399999999999 1.6791400000000001 +-4.3418599999999996 52.307600000000001 1.51434 +-3.0234200000000002 52.307600000000001 1.4594 +-2.53999 54.186399999999999 1.44842 +-1.2544999999999999 52.307600000000001 1.43743 +-0.990811 54.186399999999999 1.43743 +-0.47442000000000001 52.307600000000001 1.43743 +0.041973099999999999 52.307600000000001 1.44842 +-0.21073 54.186399999999999 1.43743 +0.80008000000000001 52.307600000000001 1.4594 +1.04179 52.307600000000001 1.4594 +0.80008000000000001 54.186399999999999 1.4594 +2.3492600000000001 52.307600000000001 1.51434 +3.0524300000000002 54.186399999999999 1.5692699999999999 +3.7555999999999998 52.307600000000001 1.65717 +-5.0450400000000002 129.07400000000001 1.9428300000000001 +3.9973100000000001 54.186399999999999 1.7450699999999999 +3.7555999999999998 52.307600000000001 1.85494 +3.4589500000000002 52.307600000000001 1.90987 +3.3380899999999998 52.307600000000001 1.92086 +2.1514899999999999 54.186399999999999 2.0087600000000001 +0.80008000000000001 52.307600000000001 2.0636899999999998 +0.80008000000000001 54.186399999999999 2.0636899999999998 +-0.73810900000000002 52.307600000000001 2.0746799999999999 +-0.47442000000000001 52.307600000000001 2.0746799999999999 +-0.73810900000000002 54.186399999999999 2.0746799999999999 +-1.5181899999999999 54.186399999999999 2.0746799999999999 +-2.7816999999999998 52.307600000000001 2.0636899999999998 +-3.49586 52.307600000000001 2.0417200000000002 +-3.9353400000000001 54.186399999999999 2.0197400000000001 +-5.0450400000000002 52.307600000000001 1.9428300000000001 +-5.4515599999999997 52.307600000000001 1.90987 +-5.66031 52.307600000000001 1.8769100000000001 +0.041973099999999999 67.283000000000001 1.44842 +-5.8251200000000001 54.186399999999999 1.84395 +-5.7482100000000003 54.186399999999999 1.85494 +-5.8800499999999998 54.186399999999999 1.8219799999999999 +-5.9899199999999997 50.439799999999998 1.7450699999999999 +-5.9899199999999997 52.307600000000001 1.77803 +-5.8800499999999998 50.439799999999998 1.6901299999999999 +-5.8800499999999998 52.307600000000001 1.6901299999999999 +-4.5286400000000002 50.439799999999998 1.5253300000000001 +-4.1440999999999999 52.307600000000001 1.50335 +-2.53999 50.439799999999998 1.44842 +-2.0345800000000001 50.439799999999998 1.44842 +-1.7818799999999999 52.307600000000001 1.43743 +-1.2544999999999999 50.439799999999998 1.43743 +-0.990811 52.307600000000001 1.43743 +-0.21073 50.439799999999998 1.43743 +-0.21073 52.307600000000001 1.43743 +2.1514899999999999 50.439799999999998 1.50335 +3.4589500000000002 52.307600000000001 1.6132200000000001 +3.3380899999999998 52.307600000000001 1.6022400000000001 +3.8325100000000001 65.426199999999994 1.84395 +3.8325100000000001 52.307600000000001 1.6791400000000001 +3.94238 52.307600000000001 1.71211 +3.9973100000000001 50.439799999999998 1.7450699999999999 +3.9973100000000001 52.307600000000001 1.7450699999999999 +3.9753400000000001 50.439799999999998 1.7890200000000001 +3.94238 50.439799999999998 1.8109900000000001 +3.7555999999999998 50.439799999999998 1.85494 +3.0524300000000002 52.307600000000001 1.9428300000000001 +3.0524300000000002 50.439799999999998 1.9428300000000001 +2.8876200000000001 52.307600000000001 1.9648099999999999 +-5.93499 27.971299999999999 1.8109900000000001 +1.9427300000000001 50.439799999999998 2.0197400000000001 +0.54737800000000003 52.307600000000001 2.0636899999999998 +0.29467500000000002 52.307600000000001 2.0746799999999999 +-0.990811 52.307600000000001 2.0856699999999999 +-1.7818799999999999 52.307600000000001 2.0746799999999999 +-1.7818799999999999 50.439799999999998 2.0746799999999999 +-2.53999 52.307600000000001 2.0636899999999998 +-3.0234200000000002 50.439799999999998 2.0527000000000002 +-2.7816999999999998 50.439799999999998 2.0636899999999998 +-3.0234200000000002 52.307600000000001 2.0527000000000002 +-3.2651300000000001 52.307600000000001 2.0417200000000002 +-2.0345800000000001 130.953 1.44842 +3.5688200000000001 125.339 1.8878999999999999 +-5.8251200000000001 50.439799999999998 1.6791400000000001 +-5.7482100000000003 50.439799999999998 1.65717 +-5.7482100000000003 48.572000000000003 1.65717 +-5.4515599999999997 74.787099999999995 1.6132200000000001 +-5.5614299999999997 72.9084 1.6242099999999999 +-5.4515599999999997 72.9084 1.6132200000000001 +-5.5614299999999997 67.283000000000001 1.6242099999999999 +-5.4515599999999997 65.426199999999994 1.6132200000000001 +-5.5614299999999997 63.547400000000003 1.6242099999999999 +-5.5614299999999997 65.426199999999994 1.6242099999999999 +-5.4515599999999997 61.668599999999998 1.6132200000000001 +-5.4515599999999997 59.800800000000002 1.6132200000000001 +-5.5614299999999997 57.921999999999997 1.6242099999999999 +-5.5614299999999997 50.439799999999998 1.6242099999999999 +-5.4515599999999997 50.439799999999998 1.6132200000000001 +-5.1878700000000002 50.439799999999998 1.58026 +-3.0234200000000002 72.9084 1.4594 +-5.1878700000000002 54.186399999999999 1.58026 +-5.1878700000000002 52.307600000000001 1.58026 +0.29467500000000002 65.426199999999994 2.0746799999999999 +-2.7816999999999998 50.439799999999998 1.4594 +-2.28728 48.572000000000003 1.44842 +-5.9899199999999997 140.31399999999999 1.77803 +-2.0345800000000001 48.572000000000003 1.44842 +3.7555999999999998 65.426199999999994 1.65717 +-0.73810900000000002 50.439799999999998 1.43743 +0.80008000000000001 48.572000000000003 1.4594 +2.1514899999999999 48.572000000000003 1.50335 +1.9427300000000001 50.439799999999998 1.50335 +3.1952600000000002 52.307600000000001 1.58026 +3.1952600000000002 50.439799999999998 1.58026 +3.3380899999999998 50.439799999999998 1.6022400000000001 +3.4589500000000002 74.787099999999995 1.6132200000000001 +3.4589500000000002 72.9084 1.6132200000000001 +3.4589500000000002 69.161799999999999 1.6132200000000001 +3.5688200000000001 69.161799999999999 1.6242099999999999 +3.4589500000000002 67.283000000000001 1.6132200000000001 +3.4589500000000002 63.547400000000003 1.6132200000000001 +3.4589500000000002 61.668599999999998 1.6132200000000001 +3.5688200000000001 56.065199999999997 1.6242099999999999 +-0.990811 129.07400000000001 2.0746799999999999 +3.5688200000000001 50.439799999999998 1.6242099999999999 +3.8325100000000001 86.015900000000002 1.6791400000000001 +-5.7482100000000003 52.307600000000001 1.65717 +3.67869 48.572000000000003 1.64618 +3.7555999999999998 50.439799999999998 1.65717 +3.8984299999999998 48.572000000000003 1.6901299999999999 +3.9973100000000001 48.572000000000003 1.7450699999999999 +3.9973100000000001 48.572000000000003 1.77803 +3.9753400000000001 48.572000000000003 1.7890200000000001 +3.5688200000000001 72.9084 1.8878999999999999 +3.5688200000000001 69.161799999999999 1.8878999999999999 +3.67869 69.161799999999999 1.8769100000000001 +3.7555999999999998 129.07400000000001 1.85494 +3.7555999999999998 127.206 1.85494 +3.67869 61.668599999999998 1.8769100000000001 +3.67869 56.065199999999997 1.8769100000000001 +-5.7482100000000003 97.244699999999995 1.85494 +3.5688200000000001 48.572000000000003 1.8878999999999999 +3.5688200000000001 50.439799999999998 1.8878999999999999 +3.3380899999999998 48.572000000000003 1.92086 +3.1952600000000002 52.307600000000001 1.9318500000000001 +3.1952600000000002 50.439799999999998 1.9318500000000001 +2.1514899999999999 48.572000000000003 2.0087600000000001 +1.9427300000000001 48.572000000000003 2.0197400000000001 +2.1514899999999999 50.439799999999998 2.0087600000000001 +1.2725200000000001 48.572000000000003 2.0417200000000002 +1.50325 50.439799999999998 2.0417200000000002 +0.54737800000000003 48.572000000000003 2.0636899999999998 +0.54737800000000003 50.439799999999998 2.0636899999999998 +0.29467500000000002 50.439799999999998 2.0746799999999999 +0.041973099999999999 50.439799999999998 2.0746799999999999 +0.041973099999999999 48.572000000000003 2.0746799999999999 +-0.21073 48.572000000000003 2.0746799999999999 +-0.21073 50.439799999999998 2.0746799999999999 +-0.47442000000000001 48.572000000000003 2.0746799999999999 +-0.73810900000000002 50.439799999999998 2.0746799999999999 +-2.28728 48.572000000000003 2.0746799999999999 +-3.0234200000000002 48.572000000000003 2.0527000000000002 +-5.66031 50.439799999999998 1.8769100000000001 +-5.9679500000000001 134.69999999999999 1.7890200000000001 +-5.9679500000000001 132.821 1.7890200000000001 +3.94238 57.921999999999997 1.8109900000000001 +-5.9679500000000001 127.206 1.7890200000000001 +-5.9899199999999997 123.45999999999999 1.77803 +-5.9679500000000001 123.45999999999999 1.7890200000000001 +-5.9899199999999997 121.581 1.77803 +-5.9899199999999997 117.845 1.77803 +-5.9679500000000001 119.71299999999999 1.7890200000000001 +-5.9679500000000001 115.97799999999999 1.7890200000000001 +-2.53999 142.18199999999999 1.44842 +-5.9899199999999997 108.48399999999999 1.77803 +-5.9899199999999997 102.85899999999999 1.77803 +-5.9679500000000001 101.002 1.7890200000000001 +-5.9679500000000001 99.123500000000007 1.7890200000000001 +-5.9679500000000001 95.376900000000006 1.7890200000000001 +-5.9679500000000001 86.015900000000002 1.7890200000000001 +-5.9679500000000001 78.5227 1.7890200000000001 +-5.9899199999999997 76.654899999999998 1.77803 +-5.9679500000000001 76.654899999999998 1.7890200000000001 +-5.9899199999999997 69.161799999999999 1.77803 +-5.9679500000000001 65.426199999999994 1.7890200000000001 +-5.9679500000000001 63.547400000000003 1.7890200000000001 +-5.9679500000000001 59.800800000000002 1.7890200000000001 +-5.9899199999999997 57.921999999999997 1.77803 +-5.8251200000000001 119.71299999999999 1.84395 +-5.9679500000000001 54.186399999999999 1.7890200000000001 +-5.9899199999999997 48.572000000000003 1.7450699999999999 +-5.93499 50.439799999999998 1.71211 +-4.7154199999999999 101.002 1.5472999999999999 +-5.8251200000000001 48.572000000000003 1.6791400000000001 +-5.8251200000000001 46.693199999999997 1.6791400000000001 +-5.7482100000000003 46.693199999999997 1.65717 +-1.2544999999999999 24.224699999999999 2.0746799999999999 +-5.4515599999999997 46.693199999999997 1.6132200000000001 +-5.5614299999999997 48.572000000000003 1.6242099999999999 +-4.8802300000000001 48.572000000000003 1.55829 +-4.7154199999999999 48.572000000000003 1.5472999999999999 +-4.1440999999999999 46.693199999999997 1.50335 +-3.0234200000000002 48.572000000000003 1.4594 +-0.47442000000000001 46.693199999999997 1.43743 +0.041973099999999999 48.572000000000003 1.44842 +0.54737800000000003 46.693199999999997 1.44842 +1.04179 46.693199999999997 1.4594 +3.4589500000000002 46.693199999999997 1.6132200000000001 +3.4589500000000002 48.572000000000003 1.6132200000000001 +3.5688200000000001 46.693199999999997 1.6242099999999999 +-4.1440999999999999 84.148099999999999 2.0087600000000001 +-3.9353400000000001 86.015900000000002 2.0197400000000001 +3.9973100000000001 46.693199999999997 1.7450699999999999 +3.7555999999999998 48.572000000000003 1.85494 +3.67869 48.572000000000003 1.8769100000000001 +3.5688200000000001 46.693199999999997 1.8878999999999999 +2.3492600000000001 48.572000000000003 1.99777 +1.04179 48.572000000000003 2.0527000000000002 +0.041973099999999999 46.693199999999997 2.0746799999999999 +3.4589500000000002 80.401499999999999 1.90987 +-0.73810900000000002 48.572000000000003 2.0746799999999999 +-1.2544999999999999 46.693199999999997 2.0746799999999999 +-1.2544999999999999 48.572000000000003 2.0746799999999999 +-1.5181899999999999 46.693199999999997 2.0746799999999999 +-0.73810900000000002 119.71299999999999 2.0746799999999999 +-2.7816999999999998 48.572000000000003 2.0636899999999998 +-2.53999 48.572000000000003 2.0636899999999998 +-2.0345800000000001 46.693199999999997 1.44842 +-3.49586 48.572000000000003 2.0417200000000002 +-4.1440999999999999 46.693199999999997 2.0087600000000001 +-3.9353400000000001 48.572000000000003 2.0197400000000001 +-5.5614299999999997 48.572000000000003 1.8878999999999999 +-5.93499 74.787099999999995 1.8109900000000001 +-5.9679500000000001 71.040599999999998 1.7890200000000001 +-5.93499 69.161799999999999 1.8109900000000001 +-5.9679500000000001 67.283000000000001 1.7890200000000001 +-5.93499 65.426199999999994 1.8109900000000001 +-5.93499 61.668599999999998 1.8109900000000001 +-5.9679500000000001 61.668599999999998 1.7890200000000001 +-5.9679500000000001 57.921999999999997 1.7890200000000001 +-5.93499 56.065199999999997 1.8109900000000001 +-5.9679500000000001 56.065199999999997 1.7890200000000001 +-5.9679500000000001 52.307600000000001 1.7890200000000001 +-5.8800499999999998 46.693199999999997 1.6901299999999999 +-5.66031 46.693199999999997 1.64618 +-5.5614299999999997 46.693199999999997 1.6242099999999999 +-4.3418599999999996 44.825400000000002 1.51434 +-3.2651300000000001 44.825400000000002 1.4703900000000001 +-3.0234200000000002 46.693199999999997 1.4594 +-3.2651300000000001 46.693199999999997 1.4703900000000001 +-2.7816999999999998 44.825400000000002 1.4594 +-2.53999 46.693199999999997 1.44842 +-2.28728 44.825400000000002 1.44842 +-2.28728 46.693199999999997 1.44842 +-2.0345800000000001 44.825400000000002 1.44842 +-1.5181899999999999 44.825400000000002 1.43743 +-1.5181899999999999 46.693199999999997 1.43743 +-0.990811 44.825400000000002 1.43743 +-1.2544999999999999 46.693199999999997 1.43743 +0.29467500000000002 44.825400000000002 1.44842 +0.041973099999999999 46.693199999999997 1.44842 +0.54737800000000003 44.825400000000002 1.44842 +0.80008000000000001 46.693199999999997 1.4594 +1.2725200000000001 44.825400000000002 1.4703900000000001 +2.3492600000000001 46.693199999999997 1.51434 +3.3380899999999998 46.693199999999997 1.6022400000000001 +3.4589500000000002 44.825400000000002 1.6132200000000001 +3.67869 44.825400000000002 1.64618 +3.7555999999999998 46.693199999999997 1.65717 +3.94238 44.825400000000002 1.71211 +4.0083000000000002 44.825400000000002 1.7560500000000001 +3.7555999999999998 44.825400000000002 1.85494 +3.67869 44.825400000000002 1.8769100000000001 +3.4589500000000002 46.693199999999997 1.90987 +2.8876200000000001 46.693199999999997 1.9648099999999999 +1.9427300000000001 46.693199999999997 2.0197400000000001 +2.1514899999999999 46.693199999999997 2.0087600000000001 +1.04179 44.825400000000002 2.0527000000000002 +0.80008000000000001 46.693199999999997 2.0636899999999998 +0.041973099999999999 44.825400000000002 2.0746799999999999 +-0.21073 44.825400000000002 2.0746799999999999 +-0.21073 46.693199999999997 2.0746799999999999 +-0.47442000000000001 46.693199999999997 2.0746799999999999 +-0.990811 46.693199999999997 2.0856699999999999 +-1.7818799999999999 46.693199999999997 2.0746799999999999 +-2.0345800000000001 44.825400000000002 2.0746799999999999 +-2.28728 46.693199999999997 2.0746799999999999 +-2.53999 46.693199999999997 2.0636899999999998 +-2.7816999999999998 44.825400000000002 2.0636899999999998 +-2.7816999999999998 46.693199999999997 2.0636899999999998 +-5.5614299999999997 44.825400000000002 1.8878999999999999 +-3.9353400000000001 57.921999999999997 1.50335 +-5.8800499999999998 44.825400000000002 1.8219799999999999 +-5.93499 46.693199999999997 1.71211 +-5.8800499999999998 44.825400000000002 1.6901299999999999 +-5.8251200000000001 42.946599999999997 1.6791400000000001 +-5.8251200000000001 44.825400000000002 1.6791400000000001 +-5.1878700000000002 42.946599999999997 1.58026 +-5.0450400000000002 44.825400000000002 1.5692699999999999 +-2.0345800000000001 99.123500000000007 2.0746799999999999 +-4.1440999999999999 42.946599999999997 1.50335 +3.9973100000000001 71.040599999999998 1.77803 +-3.9353400000000001 44.825400000000002 1.50335 +-3.0234200000000002 42.946599999999997 1.4594 +-3.0234200000000002 44.825400000000002 1.4594 +-2.28728 42.946599999999997 1.44842 +-2.53999 44.825400000000002 1.44842 +-0.990811 42.946599999999997 1.43743 +-0.47442000000000001 44.825400000000002 1.43743 +0.041973099999999999 42.946599999999997 1.44842 +-0.21073 44.825400000000002 1.43743 +0.54737800000000003 42.946599999999997 1.44842 +0.29467500000000002 42.946599999999997 1.44842 +0.80008000000000001 44.825400000000002 1.4594 +1.04179 44.825400000000002 1.4594 +2.1514899999999999 42.946599999999997 1.50335 +2.1514899999999999 44.825400000000002 1.50335 +3.0524300000000002 46.693199999999997 1.5692699999999999 +0.54737800000000003 54.186399999999999 2.0636899999999998 +3.1952600000000002 44.825400000000002 1.58026 +3.1952600000000002 42.946599999999997 1.58026 +3.0524300000000002 44.825400000000002 1.5692699999999999 +3.9973100000000001 42.946599999999997 1.7450699999999999 +3.9973100000000001 44.825400000000002 1.7450699999999999 +4.0083000000000002 42.946599999999997 1.7560500000000001 +3.9973100000000001 44.825400000000002 1.77803 +3.9753400000000001 42.946599999999997 1.7890200000000001 +3.5688200000000001 44.825400000000002 1.8878999999999999 +3.3380899999999998 44.825400000000002 1.92086 +3.1952600000000002 46.693199999999997 1.9318500000000001 +3.3380899999999998 46.693199999999997 1.92086 +3.1952600000000002 42.946599999999997 1.9318500000000001 +3.1952600000000002 44.825400000000002 1.9318500000000001 +2.8876200000000001 44.825400000000002 1.9648099999999999 +2.3492600000000001 44.825400000000002 1.99777 +1.04179 42.946599999999997 2.0527000000000002 +0.29467500000000002 42.946599999999997 2.0746799999999999 +-0.73810900000000002 42.946599999999997 2.0746799999999999 +-0.73810900000000002 44.825400000000002 2.0746799999999999 +-1.2544999999999999 42.946599999999997 2.0746799999999999 +2.3492600000000001 82.269300000000001 1.99777 +-1.7818799999999999 42.946599999999997 2.0746799999999999 +-1.5181899999999999 44.825400000000002 2.0746799999999999 +-1.7818799999999999 44.825400000000002 2.0746799999999999 +-2.53999 44.825400000000002 2.0636899999999998 +-3.0234200000000002 42.946599999999997 2.0527000000000002 +-2.7816999999999998 42.946599999999997 2.0636899999999998 +-3.0234200000000002 44.825400000000002 2.0527000000000002 +-3.49586 42.946599999999997 2.0417200000000002 +-4.1440999999999999 42.946599999999997 2.0087600000000001 +-5.0450400000000002 42.946599999999997 1.9428300000000001 +-5.5614299999999997 42.946599999999997 1.8878999999999999 +-5.8251200000000001 44.825400000000002 1.84395 +-5.9679500000000001 44.825400000000002 1.7890200000000001 +-1.7818799999999999 78.5227 1.43743 +-5.9899199999999997 44.825400000000002 1.77803 +-5.9899199999999997 41.078800000000001 1.7450699999999999 +-5.7482100000000003 42.946599999999997 1.65717 +-5.5614299999999997 41.078800000000001 1.6242099999999999 +-5.0450400000000002 42.946599999999997 1.5692699999999999 +-4.7154199999999999 41.078800000000001 1.5472999999999999 +-4.1440999999999999 41.078800000000001 1.50335 +-4.3418599999999996 42.946599999999997 1.51434 +-3.2651300000000001 42.946599999999997 1.4703900000000001 +-2.53999 42.946599999999997 1.44842 +3.0524300000000002 93.498099999999994 1.9428300000000001 +-1.5181899999999999 42.946599999999997 1.43743 +-0.73810900000000002 89.762500000000003 2.0746799999999999 +-1.2544999999999999 42.946599999999997 1.43743 +-1.2544999999999999 41.078800000000001 1.43743 +-0.73810900000000002 41.078800000000001 1.43743 +-0.47442000000000001 42.946599999999997 1.43743 +0.041973099999999999 41.078800000000001 1.44842 +0.54737800000000003 41.078800000000001 1.44842 +0.80008000000000001 42.946599999999997 1.4594 +-0.73810900000000002 127.206 2.0746799999999999 +3.4589500000000002 41.078800000000001 1.6132200000000001 +3.3380899999999998 42.946599999999997 1.6022400000000001 +3.7555999999999998 41.078800000000001 1.65717 +3.67869 42.946599999999997 1.64618 +3.8984299999999998 41.078800000000001 1.6901299999999999 +3.8325100000000001 42.946599999999997 1.6791400000000001 +3.8984299999999998 42.946599999999997 1.6901299999999999 +3.9973100000000001 42.946599999999997 1.77803 +3.9753400000000001 41.078800000000001 1.7890200000000001 +3.7555999999999998 41.078800000000001 1.85494 +3.4589500000000002 42.946599999999997 1.90987 +-5.9899199999999997 86.015900000000002 1.7450699999999999 +3.3380899999999998 42.946599999999997 1.92086 +3.3380899999999998 41.078800000000001 1.92086 +3.94238 121.581 1.8109900000000001 +2.3492600000000001 42.946599999999997 1.99777 +1.2725200000000001 42.946599999999997 2.0417200000000002 +1.50325 42.946599999999997 2.0417200000000002 +0.80008000000000001 42.946599999999997 2.0636899999999998 +0.29467500000000002 41.078800000000001 2.0746799999999999 +-5.9679500000000001 14.8637 1.72309 +-0.21073 41.078800000000001 2.0746799999999999 +3.5688200000000001 136.56700000000001 1.8878999999999999 +-0.990811 41.078800000000001 2.0856699999999999 +-1.2544999999999999 41.078800000000001 2.0746799999999999 +-1.7818799999999999 41.078800000000001 2.0746799999999999 +-3.2651300000000001 41.078800000000001 2.0417200000000002 +-4.1440999999999999 41.078800000000001 2.0087600000000001 +-5.4515599999999997 41.078800000000001 1.90987 +-5.66031 41.078800000000001 1.8769100000000001 +-5.5614299999999997 41.078800000000001 1.8878999999999999 +-5.7482100000000003 41.078800000000001 1.85494 +-5.8251200000000001 42.946599999999997 1.84395 +-5.5614299999999997 39.210999999999999 1.6242099999999999 +-5.66031 41.078800000000001 1.64618 +-4.3418599999999996 41.078800000000001 1.51434 +-2.28728 39.210999999999999 1.44842 +3.7555999999999998 16.7425 1.85494 +-1.5181899999999999 41.078800000000001 1.43743 +-0.47442000000000001 39.210999999999999 1.43743 +-0.47442000000000001 41.078800000000001 1.43743 +0.29467500000000002 39.210999999999999 1.44842 +2.3492600000000001 142.18199999999999 1.51434 +2.3492600000000001 138.435 1.51434 +2.3492600000000001 136.56700000000001 1.51434 +2.5360399999999998 132.821 1.5253300000000001 +-5.5614299999999997 84.148099999999999 1.6242099999999999 +2.5360399999999998 129.07400000000001 1.5253300000000001 +2.3492600000000001 123.45999999999999 1.51434 +2.3492600000000001 119.71299999999999 1.51434 +2.5360399999999998 112.22 1.5253300000000001 +2.3492600000000001 114.099 1.51434 +2.5360399999999998 110.363 1.5253300000000001 +2.5360399999999998 108.48399999999999 1.5253300000000001 +2.5360399999999998 104.738 1.5253300000000001 +2.3492600000000001 101.002 1.51434 +3.0524300000000002 39.210999999999999 1.5692699999999999 +2.3492600000000001 97.244699999999995 1.51434 +2.5360399999999998 93.498099999999994 1.5253300000000001 +2.5360399999999998 91.630300000000005 1.5253300000000001 +2.3492600000000001 91.630300000000005 1.51434 +2.5360399999999998 86.015900000000002 1.5253300000000001 +2.3492600000000001 74.787099999999995 1.51434 +2.3492600000000001 72.9084 1.51434 +2.5360399999999998 69.161799999999999 1.5253300000000001 +2.5360399999999998 57.921999999999997 1.5253300000000001 +-2.28728 127.206 2.0636899999999998 +2.3492600000000001 54.186399999999999 1.51434 +2.5360399999999998 54.186399999999999 1.5253300000000001 +2.3492600000000001 48.572000000000003 1.51434 +2.5360399999999998 42.946599999999997 1.5253300000000001 +2.3492600000000001 44.825400000000002 1.51434 +2.3492600000000001 41.078800000000001 1.51434 +2.5360399999999998 39.210999999999999 1.5253300000000001 +2.3492600000000001 37.332299999999996 1.51434 +2.5360399999999998 31.7179 1.5253300000000001 +2.5360399999999998 24.224699999999999 1.5253300000000001 +2.3492600000000001 18.610299999999999 1.51434 +2.3492600000000001 14.8637 1.51434 +2.5360399999999998 142.18199999999999 1.5253300000000001 +2.72282 140.31399999999999 1.5472999999999999 +2.5360399999999998 138.435 1.5253300000000001 +-5.8251200000000001 112.22 1.6791400000000001 +2.72282 136.56700000000001 1.5472999999999999 +3.4589500000000002 93.498099999999994 1.6132200000000001 +2.72282 130.953 1.5472999999999999 +2.5360399999999998 130.953 1.5253300000000001 +2.5360399999999998 123.45999999999999 1.5253300000000001 +0.041973099999999999 74.787099999999995 2.0746799999999999 +2.72282 117.845 1.5472999999999999 +2.5360399999999998 114.099 1.5253300000000001 +2.72282 108.48399999999999 1.5472999999999999 +2.5360399999999998 102.85899999999999 1.5253300000000001 +2.72282 102.85899999999999 1.5472999999999999 +2.5360399999999998 99.123500000000007 1.5253300000000001 +-4.1440999999999999 78.5227 2.0087600000000001 +2.5360399999999998 95.376900000000006 1.5253300000000001 +2.72282 93.498099999999994 1.5472999999999999 +2.5360399999999998 89.762500000000003 1.5253300000000001 +2.72282 80.401499999999999 1.5472999999999999 +2.5360399999999998 76.654899999999998 1.5253300000000001 +2.72282 74.787099999999995 1.5472999999999999 +2.5360399999999998 71.040599999999998 1.5253300000000001 +2.5360399999999998 72.9084 1.5253300000000001 +2.72282 69.161799999999999 1.5472999999999999 +-4.1440999999999999 14.8637 2.0087600000000001 +2.5360399999999998 61.668599999999998 1.5253300000000001 +1.9427300000000001 123.45999999999999 1.4923599999999999 +2.5360399999999998 56.065199999999997 1.5253300000000001 +2.5360399999999998 52.307600000000001 1.5253300000000001 +2.72282 42.946599999999997 1.5472999999999999 +2.5360399999999998 41.078800000000001 1.5253300000000001 +2.72282 41.078800000000001 1.5472999999999999 +2.5360399999999998 27.971299999999999 1.5253300000000001 +2.72282 22.3569 1.5472999999999999 +2.72282 18.610299999999999 1.5472999999999999 +2.72282 16.7425 1.5472999999999999 +2.5360399999999998 16.7425 1.5253300000000001 +3.0524300000000002 41.078800000000001 1.5692699999999999 +3.0524300000000002 35.464500000000001 1.5692699999999999 +3.0524300000000002 37.332299999999996 1.5692699999999999 +2.8876200000000001 35.464500000000001 1.55829 +-5.8251200000000001 112.22 1.84395 +3.0524300000000002 31.7179 1.5692699999999999 +3.0524300000000002 33.585700000000003 1.5692699999999999 +3.0524300000000002 29.850100000000001 1.5692699999999999 +2.8876200000000001 31.7179 1.55829 +2.8876200000000001 20.489100000000001 1.55829 +2.8876200000000001 18.610299999999999 1.55829 +3.0524300000000002 18.610299999999999 1.5692699999999999 +3.0524300000000002 14.8637 1.5692699999999999 +2.8876200000000001 14.8637 1.55829 +3.0524300000000002 12.995900000000001 1.5692699999999999 +2.8876200000000001 12.995900000000001 1.55829 +2.72282 14.8637 1.5472999999999999 +2.8876200000000001 22.3569 1.55829 +2.8876200000000001 27.971299999999999 1.55829 +3.0524300000000002 82.269300000000001 1.9428300000000001 +2.72282 31.7179 1.5472999999999999 +2.8876200000000001 33.585700000000003 1.55829 +2.72282 37.332299999999996 1.5472999999999999 +2.8876200000000001 42.946599999999997 1.55829 +2.8876200000000001 44.825400000000002 1.55829 +2.72282 44.825400000000002 1.5472999999999999 +2.72282 48.572000000000003 1.5472999999999999 +2.8876200000000001 50.439799999999998 1.55829 +2.72282 50.439799999999998 1.5472999999999999 +-5.66031 54.186399999999999 1.8769100000000001 +-2.0345800000000001 134.69999999999999 1.44842 +0.29467500000000002 130.953 1.44842 +2.8876200000000001 59.800800000000002 1.55829 +2.72282 61.668599999999998 1.5472999999999999 +-1.7818799999999999 123.45999999999999 1.43743 +-5.1878700000000002 117.845 1.58026 +2.72282 65.426199999999994 1.5472999999999999 +2.72282 67.283000000000001 1.5472999999999999 +-4.7154199999999999 59.800800000000002 1.5472999999999999 +-4.8802300000000001 61.668599999999998 1.55829 +2.8876200000000001 69.161799999999999 1.55829 +2.8876200000000001 67.283000000000001 1.55829 +2.8876200000000001 72.9084 1.55829 +2.72282 76.654899999999998 1.5472999999999999 +2.8876200000000001 78.5227 1.55829 +1.04179 97.244699999999995 1.4594 +2.8876200000000001 82.269300000000001 1.55829 +2.72282 95.376900000000006 1.5472999999999999 +2.72282 97.244699999999995 1.5472999999999999 +2.72282 101.002 1.5472999999999999 +2.72282 106.60599999999999 1.5472999999999999 +2.72282 104.738 1.5472999999999999 +2.8876200000000001 108.48399999999999 1.55829 +2.72282 110.363 1.5472999999999999 +-2.0345800000000001 24.224699999999999 2.0746799999999999 +-5.9679500000000001 130.953 1.7890200000000001 +2.8876200000000001 117.845 1.55829 +2.72282 123.45999999999999 1.5472999999999999 +2.8876200000000001 57.921999999999997 1.55829 +2.8876200000000001 130.953 1.55829 +2.72282 132.821 1.5472999999999999 +2.8876200000000001 134.69999999999999 1.55829 +2.8876200000000001 142.18199999999999 1.55829 +3.0524300000000002 136.56700000000001 1.5692699999999999 +3.0524300000000002 132.821 1.5692699999999999 +3.1952600000000002 134.69999999999999 1.58026 +2.8876200000000001 132.821 1.55829 +3.0524300000000002 129.07400000000001 1.5692699999999999 +2.8876200000000001 129.07400000000001 1.55829 +2.8876200000000001 119.71299999999999 1.55829 +3.0524300000000002 117.845 1.5692699999999999 +2.8876200000000001 110.363 1.55829 +3.0524300000000002 110.363 1.5692699999999999 +3.0524300000000002 101.002 1.5692699999999999 +0.80008000000000001 41.078800000000001 2.0636899999999998 +3.0524300000000002 99.123500000000007 1.5692699999999999 +3.0524300000000002 93.498099999999994 1.5692699999999999 +2.8876200000000001 89.762500000000003 1.55829 +2.8876200000000001 86.015900000000002 1.55829 +3.0524300000000002 76.654899999999998 1.5692699999999999 +-5.1878700000000002 127.206 1.58026 +-5.0450400000000002 125.339 1.5692699999999999 +2.8876200000000001 74.787099999999995 1.55829 +3.0524300000000002 69.161799999999999 1.5692699999999999 +3.0524300000000002 65.426199999999994 1.5692699999999999 +2.8876200000000001 63.547400000000003 1.55829 +3.0524300000000002 57.921999999999997 1.5692699999999999 +2.8876200000000001 52.307600000000001 1.55829 +3.0524300000000002 52.307600000000001 1.5692699999999999 +3.0524300000000002 50.439799999999998 1.5692699999999999 +2.8876200000000001 46.693199999999997 1.55829 +-5.9899199999999997 24.224699999999999 1.7450699999999999 +2.8876200000000001 41.078800000000001 1.55829 +3.1952600000000002 142.18199999999999 1.58026 +3.1952600000000002 138.435 1.58026 +2.1514899999999999 95.376900000000006 1.50335 +3.1952600000000002 136.56700000000001 1.58026 +3.1952600000000002 132.821 1.58026 +3.1952600000000002 129.07400000000001 1.58026 +3.1952600000000002 130.953 1.58026 +3.3380899999999998 127.206 1.6022400000000001 +3.3380899999999998 121.581 1.6022400000000001 +3.1952600000000002 117.845 1.58026 +3.3380899999999998 115.97799999999999 1.6022400000000001 +-4.7154199999999999 69.161799999999999 1.5472999999999999 +3.3380899999999998 112.22 1.6022400000000001 +3.1952600000000002 112.22 1.58026 +-5.93499 20.489100000000001 1.8109900000000001 +-5.9679500000000001 20.489100000000001 1.7890200000000001 +3.3380899999999998 108.48399999999999 1.6022400000000001 +-2.7816999999999998 56.065199999999997 2.0636899999999998 +3.3380899999999998 101.002 1.6022400000000001 +3.1952600000000002 93.498099999999994 1.58026 +3.3380899999999998 93.498099999999994 1.6022400000000001 +3.3380899999999998 91.630300000000005 1.6022400000000001 +3.1952600000000002 91.630300000000005 1.58026 +3.1952600000000002 87.883700000000005 1.58026 +3.3380899999999998 86.015900000000002 1.6022400000000001 +3.1952600000000002 86.015900000000002 1.58026 +3.3380899999999998 78.5227 1.6022400000000001 +3.1952600000000002 76.654899999999998 1.58026 +3.3380899999999998 76.654899999999998 1.6022400000000001 +3.1952600000000002 72.9084 1.58026 +3.3380899999999998 72.9084 1.6022400000000001 +2.1514899999999999 108.48399999999999 2.0087600000000001 +3.1952600000000002 61.668599999999998 1.58026 +-5.5614299999999997 16.7425 1.6242099999999999 +3.0524300000000002 56.065199999999997 1.9428300000000001 +3.3380899999999998 48.572000000000003 1.6022400000000001 +-5.8800499999999998 121.581 1.6901299999999999 +3.1952600000000002 41.078800000000001 1.58026 +3.3380899999999998 41.078800000000001 1.6022400000000001 +3.1952600000000002 37.332299999999996 1.58026 +3.1952600000000002 33.585700000000003 1.58026 +3.1952600000000002 27.971299999999999 1.58026 +3.1952600000000002 26.1035 1.58026 +3.3380899999999998 26.1035 1.6022400000000001 +3.3380899999999998 24.224699999999999 1.6022400000000001 +3.3380899999999998 20.489100000000001 1.6022400000000001 +3.3380899999999998 14.8637 1.6022400000000001 +-4.7154199999999999 42.946599999999997 1.5472999999999999 +3.8984299999999998 101.002 1.6901299999999999 +3.5688200000000001 42.946599999999997 1.6242099999999999 +3.5688200000000001 39.210999999999999 1.6242099999999999 +3.5688200000000001 35.464500000000001 1.6242099999999999 +3.67869 140.31399999999999 1.64618 +3.5688200000000001 130.953 1.6242099999999999 +3.5688200000000001 129.07400000000001 1.6242099999999999 +3.67869 127.206 1.64618 +3.5688200000000001 123.45999999999999 1.6242099999999999 +3.67869 121.581 1.64618 +3.67869 115.97799999999999 1.64618 +3.67869 112.22 1.64618 +3.67869 108.48399999999999 1.64618 +3.5688200000000001 104.738 1.6242099999999999 +3.67869 104.738 1.64618 +3.67869 99.123500000000007 1.64618 +3.5688200000000001 93.498099999999994 1.6242099999999999 +3.5688200000000001 87.883700000000005 1.6242099999999999 +3.5688200000000001 86.015900000000002 1.6242099999999999 +3.67869 82.269300000000001 1.64618 +3.5688200000000001 72.9084 1.6242099999999999 +3.67869 72.9084 1.64618 +3.67869 71.040599999999998 1.64618 +3.5688200000000001 71.040599999999998 1.6242099999999999 +3.5688200000000001 67.283000000000001 1.6242099999999999 +3.67869 63.547400000000003 1.64618 +3.67869 65.426199999999994 1.64618 +3.5688200000000001 63.547400000000003 1.6242099999999999 +3.5688200000000001 61.668599999999998 1.6242099999999999 +3.67869 57.921999999999997 1.64618 +-2.53999 125.339 1.44842 +3.67869 50.439799999999998 1.64618 +2.1514899999999999 22.3569 2.0087600000000001 +3.67869 46.693199999999997 1.64618 +3.5688200000000001 44.825400000000002 1.6242099999999999 +3.5688200000000001 37.332299999999996 1.6242099999999999 +3.67869 33.585700000000003 1.64618 +3.5688200000000001 33.585700000000003 1.6242099999999999 +3.5688200000000001 31.7179 1.6242099999999999 +3.5688200000000001 26.1035 1.6242099999999999 +-1.2544999999999999 99.123500000000007 1.43743 +3.5688200000000001 14.8637 1.6242099999999999 +3.7555999999999998 140.31399999999999 1.65717 +3.8325100000000001 132.821 1.6791400000000001 +3.8325100000000001 134.69999999999999 1.6791400000000001 +3.8325100000000001 125.339 1.6791400000000001 +3.7555999999999998 123.45999999999999 1.65717 +3.7555999999999998 115.97799999999999 1.65717 +3.7555999999999998 112.22 1.65717 +3.7555999999999998 110.363 1.65717 +3.8325100000000001 106.60599999999999 1.6791400000000001 +3.7555999999999998 104.738 1.65717 +3.7555999999999998 91.630300000000005 1.65717 +3.8325100000000001 84.148099999999999 1.6791400000000001 +3.8325100000000001 74.787099999999995 1.6791400000000001 +3.8325100000000001 72.9084 1.6791400000000001 +3.7555999999999998 72.9084 1.65717 +3.7555999999999998 69.161799999999999 1.65717 +3.7555999999999998 71.040599999999998 1.65717 +3.8325100000000001 67.283000000000001 1.6791400000000001 +3.7555999999999998 63.547400000000003 1.65717 +3.7555999999999998 59.800800000000002 1.65717 +3.7555999999999998 61.668599999999998 1.65717 +3.7555999999999998 44.825400000000002 1.65717 +3.8325100000000001 44.825400000000002 1.6791400000000001 +3.7555999999999998 42.946599999999997 1.65717 +3.8325100000000001 41.078800000000001 1.6791400000000001 +3.8325100000000001 31.7179 1.6791400000000001 +3.7555999999999998 31.7179 1.65717 +3.8325100000000001 29.850100000000001 1.6791400000000001 +3.7555999999999998 27.971299999999999 1.65717 +3.7555999999999998 24.224699999999999 1.65717 +3.8325100000000001 22.3569 1.6791400000000001 +3.7555999999999998 20.489100000000001 1.65717 +3.8325100000000001 14.8637 1.6791400000000001 +3.9753400000000001 95.376900000000006 1.72309 +3.9753400000000001 91.630300000000005 1.72309 +3.9753400000000001 89.762500000000003 1.72309 +3.9753400000000001 86.015900000000002 1.72309 +3.94238 86.015900000000002 1.71211 +3.94238 82.269300000000001 1.71211 +3.9753400000000001 80.401499999999999 1.72309 +3.94238 76.654899999999998 1.71211 +3.9753400000000001 74.787099999999995 1.72309 +3.9753400000000001 71.040599999999998 1.72309 +3.9753400000000001 65.426199999999994 1.72309 +3.9753400000000001 59.800800000000002 1.72309 +3.94238 48.572000000000003 1.71211 +3.9753400000000001 46.693199999999997 1.72309 +3.9753400000000001 41.078800000000001 1.72309 +1.9427300000000001 80.401499999999999 1.50335 +1.9427300000000001 82.269300000000001 1.50335 +3.94238 35.464500000000001 1.71211 +3.9753400000000001 31.7179 1.72309 +3.9753400000000001 29.850100000000001 1.72309 +-5.66031 86.015900000000002 1.64618 +3.9753400000000001 22.3569 1.72309 +4.0083000000000002 39.210999999999999 1.7560500000000001 +3.9973100000000001 41.078800000000001 1.7450699999999999 +-0.47442000000000001 127.206 1.43743 +3.9973100000000001 41.078800000000001 1.77803 +-4.1440999999999999 82.269300000000001 1.50335 +3.94238 46.693199999999997 1.8109900000000001 +3.94238 48.572000000000003 1.8109900000000001 +3.1952600000000002 48.572000000000003 1.58026 +3.8984299999999998 46.693199999999997 1.8219799999999999 +3.94238 44.825400000000002 1.8109900000000001 +3.94238 42.946599999999997 1.8109900000000001 +3.8984299999999998 134.69999999999999 1.8219799999999999 +3.8984299999999998 132.821 1.8219799999999999 +4.0083000000000002 72.9084 1.7560500000000001 +3.8984299999999998 125.339 1.8219799999999999 +-1.2544999999999999 97.244699999999995 2.0746799999999999 +3.8984299999999998 121.581 1.8219799999999999 +3.8325100000000001 121.581 1.84395 +3.8325100000000001 119.71299999999999 1.84395 +3.8325100000000001 117.845 1.84395 +3.8325100000000001 115.97799999999999 1.84395 +3.8984299999999998 115.97799999999999 1.8219799999999999 +3.8325100000000001 106.60599999999999 1.84395 +3.8325100000000001 102.85899999999999 1.84395 +3.8325100000000001 99.123500000000007 1.84395 +3.8984299999999998 97.244699999999995 1.8219799999999999 +3.8984299999999998 99.123500000000007 1.8219799999999999 +3.8325100000000001 91.630300000000005 1.84395 +3.3380899999999998 57.921999999999997 1.6022400000000001 +3.8325100000000001 89.762500000000003 1.84395 +-5.4515599999999997 61.668599999999998 1.90987 +3.8984299999999998 86.015900000000002 1.8219799999999999 +3.8984299999999998 80.401499999999999 1.8219799999999999 +3.8984299999999998 67.283000000000001 1.6901299999999999 +3.8325100000000001 78.5227 1.84395 +3.8325100000000001 74.787099999999995 1.84395 +3.8325100000000001 67.283000000000001 1.84395 +3.8984299999999998 56.065199999999997 1.8219799999999999 +3.0524300000000002 72.9084 1.5692699999999999 +3.8325100000000001 52.307600000000001 1.84395 +3.8325100000000001 54.186399999999999 1.84395 +3.8325100000000001 50.439799999999998 1.84395 +3.8984299999999998 44.825400000000002 1.8219799999999999 +3.8325100000000001 41.078800000000001 1.84395 +3.8325100000000001 42.946599999999997 1.84395 +3.8984299999999998 41.078800000000001 1.8219799999999999 +3.8325100000000001 31.7179 1.84395 +3.8984299999999998 29.850100000000001 1.8219799999999999 +3.8325100000000001 24.224699999999999 1.84395 +3.8984299999999998 26.1035 1.8219799999999999 +-5.7482100000000003 136.56700000000001 1.85494 +3.8984299999999998 24.224699999999999 1.8219799999999999 +3.8325100000000001 22.3569 1.84395 +3.8325100000000001 14.8637 1.84395 +3.8325100000000001 16.7425 1.84395 +3.67869 138.435 1.8769100000000001 +3.7555999999999998 138.435 1.85494 +3.67869 136.56700000000001 1.8769100000000001 +3.7555999999999998 130.953 1.85494 +3.7555999999999998 123.45999999999999 1.85494 +3.7555999999999998 121.581 1.85494 +3.67869 119.71299999999999 1.8769100000000001 +3.7555999999999998 112.22 1.85494 +3.67869 110.363 1.8769100000000001 +3.7555999999999998 110.363 1.85494 +3.67869 106.60599999999999 1.8769100000000001 +3.7555999999999998 106.60599999999999 1.85494 +-3.2651300000000001 95.376900000000006 2.0417200000000002 +3.7555999999999998 104.738 1.85494 +3.7555999999999998 99.123500000000007 1.85494 +3.8984299999999998 42.946599999999997 1.8219799999999999 +3.7555999999999998 95.376900000000006 1.85494 +3.7555999999999998 91.630300000000005 1.85494 +2.5360399999999998 67.283000000000001 1.5253300000000001 +-5.5614299999999997 59.800800000000002 1.8878999999999999 +3.67869 84.148099999999999 1.8769100000000001 +3.67869 86.015900000000002 1.8769100000000001 +3.67869 82.269300000000001 1.8769100000000001 +3.7555999999999998 84.148099999999999 1.85494 +3.67869 80.401499999999999 1.8769100000000001 +3.7555999999999998 78.5227 1.85494 +3.67869 76.654899999999998 1.8769100000000001 +3.67869 74.787099999999995 1.8769100000000001 +3.67869 72.9084 1.8769100000000001 +3.7555999999999998 74.787099999999995 1.85494 +3.7555999999999998 71.040599999999998 1.85494 +3.67869 65.426199999999994 1.8769100000000001 +3.67869 50.439799999999998 1.8769100000000001 +3.67869 46.693199999999997 1.8769100000000001 +3.7555999999999998 46.693199999999997 1.85494 +3.67869 42.946599999999997 1.8769100000000001 +2.5360399999999998 20.489100000000001 1.5253300000000001 +3.67869 39.210999999999999 1.8769100000000001 +3.7555999999999998 39.210999999999999 1.85494 +-0.47442000000000001 78.5227 2.0746799999999999 +3.67869 35.464500000000001 1.8769100000000001 +3.7555999999999998 31.7179 1.85494 +3.67869 29.850100000000001 1.8769100000000001 +3.7555999999999998 26.1035 1.85494 +3.7555999999999998 27.971299999999999 1.85494 +3.7555999999999998 22.3569 1.85494 +3.67869 18.610299999999999 1.8769100000000001 +3.67869 14.8637 1.8769100000000001 +3.67869 37.332299999999996 1.8769100000000001 +3.3380899999999998 39.210999999999999 1.92086 +3.4589500000000002 41.078800000000001 1.90987 +3.0524300000000002 39.210999999999999 1.9428300000000001 +3.0524300000000002 140.31399999999999 1.9428300000000001 +3.0524300000000002 136.56700000000001 1.9428300000000001 +3.0524300000000002 127.206 1.9428300000000001 +3.0524300000000002 129.07400000000001 1.9428300000000001 +2.8876200000000001 127.206 1.9648099999999999 +0.29467500000000002 134.69999999999999 1.44842 +3.0524300000000002 121.581 1.9428300000000001 +2.8876200000000001 117.845 1.9648099999999999 +-0.990811 63.547400000000003 1.43743 +3.0524300000000002 104.738 1.9428300000000001 +2.8876200000000001 104.738 1.9648099999999999 +2.8876200000000001 101.002 1.9648099999999999 +0.041973099999999999 110.363 1.44842 +3.0524300000000002 95.376900000000006 1.9428300000000001 +3.0524300000000002 91.630300000000005 1.9428300000000001 +2.8876200000000001 89.762500000000003 1.9648099999999999 +2.8876200000000001 87.883700000000005 1.9648099999999999 +2.8876200000000001 84.148099999999999 1.9648099999999999 +3.0524300000000002 84.148099999999999 1.9428300000000001 +-0.990811 93.498099999999994 1.43743 +3.0524300000000002 80.401499999999999 1.9428300000000001 +3.0524300000000002 76.654899999999998 1.9428300000000001 +2.8876200000000001 67.283000000000001 1.9648099999999999 +2.8876200000000001 63.547400000000003 1.9648099999999999 +2.8876200000000001 59.800800000000002 1.9648099999999999 +2.8876200000000001 57.921999999999997 1.9648099999999999 +3.0524300000000002 54.186399999999999 1.9428300000000001 +2.8876200000000001 50.439799999999998 1.9648099999999999 +3.0524300000000002 46.693199999999997 1.9428300000000001 +3.7555999999999998 119.71299999999999 1.85494 +2.8876200000000001 42.946599999999997 1.9648099999999999 +2.8876200000000001 41.078800000000001 1.9648099999999999 +3.0524300000000002 42.946599999999997 1.9428300000000001 +2.8876200000000001 39.210999999999999 1.9648099999999999 +3.0524300000000002 37.332299999999996 1.9428300000000001 +3.0524300000000002 35.464500000000001 1.9428300000000001 +3.0524300000000002 31.7179 1.9428300000000001 +3.0524300000000002 29.850100000000001 1.9428300000000001 +2.8876200000000001 24.224699999999999 1.9648099999999999 +0.80008000000000001 61.668599999999998 2.0636899999999998 +3.0524300000000002 20.489100000000001 1.9428300000000001 +3.0524300000000002 16.7425 1.9428300000000001 +2.72282 41.078800000000001 1.9758 +2.3492600000000001 39.210999999999999 1.99777 +2.3492600000000001 31.7179 1.99777 +2.5360399999999998 31.7179 1.98678 +2.3492600000000001 29.850100000000001 1.99777 +2.3492600000000001 27.971299999999999 1.99777 +2.3492600000000001 24.224699999999999 1.99777 +2.3492600000000001 22.3569 1.99777 +3.94238 41.078800000000001 1.71211 +2.5360399999999998 20.489100000000001 1.98678 +2.3492600000000001 18.610299999999999 1.99777 +2.5360399999999998 16.7425 1.98678 +2.3492600000000001 12.995900000000001 1.99777 +2.5360399999999998 12.995900000000001 1.98678 +2.72282 16.7425 1.9758 +2.5360399999999998 18.610299999999999 1.98678 +2.5360399999999998 22.3569 1.98678 +2.72282 24.224699999999999 1.9758 +2.5360399999999998 26.1035 1.98678 +2.5360399999999998 24.224699999999999 1.98678 +-5.8251200000000001 97.244699999999995 1.84395 +2.5360399999999998 29.850100000000001 1.98678 +2.72282 31.7179 1.9758 +2.5360399999999998 37.332299999999996 1.98678 +2.72282 39.210999999999999 1.9758 +2.5360399999999998 39.210999999999999 1.98678 +2.72282 42.946599999999997 1.9758 +2.1514899999999999 129.07400000000001 2.0087600000000001 +2.5360399999999998 50.439799999999998 1.98678 +-5.3197099999999997 52.307600000000001 1.6022400000000001 +2.72282 52.307600000000001 1.9758 +2.5360399999999998 56.065199999999997 1.98678 +2.5360399999999998 63.547400000000003 1.98678 +2.72282 74.787099999999995 1.9758 +2.5360399999999998 74.787099999999995 1.98678 +2.72282 78.5227 1.9758 +2.5360399999999998 78.5227 1.98678 +2.72282 82.269300000000001 1.9758 +2.5360399999999998 87.883700000000005 1.98678 +2.72282 89.762500000000003 1.9758 +3.9753400000000001 54.186399999999999 1.7890200000000001 +2.5360399999999998 89.762500000000003 1.98678 +2.72282 97.244699999999995 1.9758 +2.5360399999999998 101.002 1.98678 +2.72282 108.48399999999999 1.9758 +2.5360399999999998 114.099 1.98678 +2.5360399999999998 121.581 1.98678 +2.5360399999999998 127.206 1.98678 +2.72282 138.435 1.9758 +2.5360399999999998 140.31399999999999 1.98678 +2.5360399999999998 130.953 1.98678 +2.3492600000000001 129.07400000000001 1.99777 +2.5360399999999998 129.07400000000001 1.98678 +2.5360399999999998 123.45999999999999 1.98678 +2.5360399999999998 117.845 1.98678 +2.3492600000000001 115.97799999999999 1.99777 +2.5360399999999998 106.60599999999999 1.98678 +2.5360399999999998 102.85899999999999 1.98678 +2.3492600000000001 102.85899999999999 1.99777 +2.3492600000000001 101.002 1.99777 +0.041973099999999999 42.946599999999997 2.0746799999999999 +2.5360399999999998 99.123500000000007 1.98678 +2.3492600000000001 95.376900000000006 1.99777 +2.3492600000000001 91.630300000000005 1.99777 +2.5360399999999998 91.630300000000005 1.98678 +-5.1878700000000002 134.69999999999999 1.58026 +0.54737800000000003 99.123500000000007 2.0636899999999998 +2.3492600000000001 86.015900000000002 1.99777 +2.5360399999999998 86.015900000000002 1.98678 +2.3492600000000001 84.148099999999999 1.99777 +2.3492600000000001 78.5227 1.99777 +2.1514899999999999 52.307600000000001 2.0087600000000001 +2.5360399999999998 72.9084 1.98678 +2.3492600000000001 127.206 1.99777 +2.3492600000000001 69.161799999999999 1.99777 +2.5360399999999998 69.161799999999999 1.98678 +4.0083000000000002 41.078800000000001 1.7560500000000001 +2.3492600000000001 63.547400000000003 1.99777 +2.3492600000000001 54.186399999999999 1.99777 +2.5360399999999998 54.186399999999999 1.98678 +2.3492600000000001 52.307600000000001 1.99777 +2.3492600000000001 50.439799999999998 1.99777 +-0.73810900000000002 99.123500000000007 1.43743 +2.5360399999999998 41.078800000000001 1.98678 +3.5688200000000001 101.002 1.6242099999999999 +3.5688200000000001 102.85899999999999 1.6242099999999999 +2.3492600000000001 41.078800000000001 1.99777 +2.1514899999999999 41.078800000000001 2.0087600000000001 +1.7339800000000001 138.435 2.0307300000000001 +1.9427300000000001 140.31399999999999 2.0197400000000001 +1.9427300000000001 138.435 2.0197400000000001 +1.7339800000000001 136.56700000000001 2.0307300000000001 +1.9427300000000001 136.56700000000001 2.0197400000000001 +1.9427300000000001 132.821 2.0197400000000001 +1.7339800000000001 132.821 2.0307300000000001 +3.3380899999999998 31.7179 1.92086 +1.9427300000000001 127.206 2.0197400000000001 +1.7339800000000001 123.45999999999999 2.0307300000000001 +1.9427300000000001 119.71299999999999 2.0197400000000001 +-1.2544999999999999 57.921999999999997 1.43743 +1.7339800000000001 115.97799999999999 2.0307300000000001 +1.9427300000000001 115.97799999999999 2.0197400000000001 +1.9427300000000001 112.22 2.0197400000000001 +1.7339800000000001 110.363 2.0307300000000001 +1.9427300000000001 104.738 2.0197400000000001 +1.7339800000000001 104.738 2.0307300000000001 +1.7339800000000001 97.244699999999995 2.0307300000000001 +1.7339800000000001 93.498099999999994 2.0307300000000001 +1.7339800000000001 91.630300000000005 2.0307300000000001 +1.9427300000000001 86.015900000000002 2.0197400000000001 +1.7339800000000001 84.148099999999999 2.0307300000000001 +1.9427300000000001 82.269300000000001 2.0197400000000001 +1.9427300000000001 78.5227 2.0197400000000001 +1.9427300000000001 80.401499999999999 2.0197400000000001 +1.7339800000000001 76.654899999999998 2.0307300000000001 +1.9427300000000001 76.654899999999998 2.0197400000000001 +1.7339800000000001 71.040599999999998 2.0307300000000001 +1.7339800000000001 72.9084 2.0307300000000001 +2.8876200000000001 138.435 1.9648099999999999 +1.9427300000000001 71.040599999999998 2.0197400000000001 +1.7339800000000001 67.283000000000001 2.0307300000000001 +1.7339800000000001 65.426199999999994 2.0307300000000001 +1.7339800000000001 63.547400000000003 2.0307300000000001 +1.9427300000000001 61.668599999999998 2.0197400000000001 +1.7339800000000001 54.186399999999999 2.0307300000000001 +1.9427300000000001 52.307600000000001 2.0197400000000001 +1.7339800000000001 52.307600000000001 2.0307300000000001 +-5.9679500000000001 57.921999999999997 1.72309 +-5.9679500000000001 59.800800000000002 1.72309 +1.7339800000000001 50.439799999999998 2.0307300000000001 +1.9427300000000001 44.825400000000002 2.0197400000000001 +1.9427300000000001 42.946599999999997 2.0197400000000001 +1.7339800000000001 37.332299999999996 2.0307300000000001 +1.9427300000000001 39.210999999999999 2.0197400000000001 +1.9427300000000001 37.332299999999996 2.0197400000000001 +1.9427300000000001 35.464500000000001 2.0197400000000001 +1.7339800000000001 33.585700000000003 2.0307300000000001 +1.9427300000000001 33.585700000000003 2.0197400000000001 +1.7339800000000001 27.971299999999999 2.0307300000000001 +1.7339800000000001 24.224699999999999 2.0307300000000001 +1.7339800000000001 12.995900000000001 2.0307300000000001 +1.50325 138.435 2.0417200000000002 +1.7339800000000001 140.31399999999999 2.0307300000000001 +1.50325 136.56700000000001 2.0417200000000002 +1.7339800000000001 125.339 2.0307300000000001 +1.50325 121.581 2.0417200000000002 +1.7339800000000001 119.71299999999999 2.0307300000000001 +1.7339800000000001 114.099 2.0307300000000001 +1.50325 112.22 2.0417200000000002 +1.7339800000000001 112.22 2.0307300000000001 +1.50325 108.48399999999999 2.0417200000000002 +1.50325 106.60599999999999 2.0417200000000002 +1.50325 104.738 2.0417200000000002 +1.50325 102.85899999999999 2.0417200000000002 +1.50325 99.123500000000007 2.0417200000000002 +1.7339800000000001 99.123500000000007 2.0307300000000001 +1.7339800000000001 95.376900000000006 2.0307300000000001 +1.50325 95.376900000000006 2.0417200000000002 +1.50325 91.630300000000005 2.0417200000000002 +1.7339800000000001 86.015900000000002 2.0307300000000001 +1.50325 82.269300000000001 2.0417200000000002 +1.7339800000000001 82.269300000000001 2.0307300000000001 +1.50325 80.401499999999999 2.0417200000000002 +1.50325 74.787099999999995 2.0417200000000002 +1.7339800000000001 69.161799999999999 2.0307300000000001 +1.50325 65.426199999999994 2.0417200000000002 +1.50325 61.668599999999998 2.0417200000000002 +1.7339800000000001 61.668599999999998 2.0307300000000001 +1.7339800000000001 57.921999999999997 2.0307300000000001 +1.7339800000000001 56.065199999999997 2.0307300000000001 +1.50325 48.572000000000003 2.0417200000000002 +1.50325 46.693199999999997 2.0417200000000002 +1.7339800000000001 41.078800000000001 2.0307300000000001 +1.50325 39.210999999999999 2.0417200000000002 +1.50325 29.850100000000001 2.0417200000000002 +1.7339800000000001 29.850100000000001 2.0307300000000001 +1.7339800000000001 26.1035 2.0307300000000001 +3.8325100000000001 50.439799999999998 1.6791400000000001 +1.7339800000000001 20.489100000000001 2.0307300000000001 +1.50325 20.489100000000001 2.0417200000000002 +1.7339800000000001 14.8637 2.0307300000000001 +1.50325 14.8637 2.0417200000000002 +1.50325 41.078800000000001 2.0417200000000002 +0.29467500000000002 39.210999999999999 2.0746799999999999 +-0.21073 39.210999999999999 2.0746799999999999 +-0.21073 74.787099999999995 1.43743 +-0.73810900000000002 41.078800000000001 2.0746799999999999 +-1.5181899999999999 39.210999999999999 2.0746799999999999 +-1.5181899999999999 41.078800000000001 2.0746799999999999 +-2.0345800000000001 39.210999999999999 2.0746799999999999 +-2.0345800000000001 41.078800000000001 2.0746799999999999 +-2.53999 39.210999999999999 2.0636899999999998 +-2.7816999999999998 39.210999999999999 2.0636899999999998 +-2.7816999999999998 41.078800000000001 2.0636899999999998 +-3.49586 39.210999999999999 2.0417200000000002 +2.1514899999999999 52.307600000000001 1.50335 +-3.9353400000000001 37.332299999999996 2.0197400000000001 +-3.9353400000000001 33.585700000000003 2.0197400000000001 +-3.7155999999999998 31.7179 2.0307300000000001 +-3.9353400000000001 27.971299999999999 2.0197400000000001 +-3.7155999999999998 27.971299999999999 2.0307300000000001 +-3.9353400000000001 26.1035 2.0197400000000001 +-3.9353400000000001 20.489100000000001 2.0197400000000001 +-3.9353400000000001 18.610299999999999 2.0197400000000001 +3.7555999999999998 39.210999999999999 1.65717 +3.8325100000000001 39.210999999999999 1.6791400000000001 +-3.9353400000000001 14.8637 2.0197400000000001 +-3.7155999999999998 16.7425 2.0307300000000001 +-3.49586 20.489100000000001 2.0417200000000002 +-3.7155999999999998 22.3569 2.0307300000000001 +-3.49586 22.3569 2.0417200000000002 +-3.49586 26.1035 2.0417200000000002 +-3.7155999999999998 29.850100000000001 2.0307300000000001 +-3.49586 33.585700000000003 2.0417200000000002 +0.041973099999999999 22.3569 2.0746799999999999 +-3.7155999999999998 39.210999999999999 2.0307300000000001 +1.9427300000000001 112.22 1.50335 +-3.49586 41.078800000000001 2.0417200000000002 +-3.7155999999999998 42.946599999999997 2.0307300000000001 +-3.49586 50.439799999999998 2.0417200000000002 +-3.7155999999999998 52.307600000000001 2.0307300000000001 +1.9427300000000001 110.363 1.50335 +-3.49586 54.186399999999999 2.0417200000000002 +-3.7155999999999998 54.186399999999999 2.0307300000000001 +-3.49586 56.065199999999997 2.0417200000000002 +-3.7155999999999998 57.921999999999997 2.0307300000000001 +-3.7155999999999998 63.547400000000003 2.0307300000000001 +-3.49586 72.9084 2.0417200000000002 +-3.7155999999999998 74.787099999999995 2.0307300000000001 +-3.49586 76.654899999999998 2.0417200000000002 +-3.7155999999999998 80.401499999999999 2.0307300000000001 +-3.49586 80.401499999999999 2.0417200000000002 +-3.7155999999999998 82.269300000000001 2.0307300000000001 +3.7555999999999998 18.610299999999999 1.65717 +-3.49586 87.883700000000005 2.0417200000000002 +2.8876200000000001 78.5227 1.9648099999999999 +-3.7155999999999998 97.244699999999995 2.0307300000000001 +-3.7155999999999998 95.376900000000006 2.0307300000000001 +-3.49586 99.123500000000007 2.0417200000000002 +-3.49586 101.002 2.0417200000000002 +-3.7155999999999998 104.738 2.0307300000000001 +-3.7155999999999998 106.60599999999999 2.0307300000000001 +-3.49586 108.48399999999999 2.0417200000000002 +-3.7155999999999998 112.22 2.0307300000000001 +-3.49586 117.845 2.0417200000000002 +-3.49586 115.97799999999999 2.0417200000000002 +-3.7155999999999998 117.845 2.0307300000000001 +-3.49586 119.71299999999999 2.0417200000000002 +-3.7155999999999998 119.71299999999999 2.0307300000000001 +-3.7155999999999998 123.45999999999999 2.0307300000000001 +-3.7155999999999998 127.206 2.0307300000000001 +0.80008000000000001 82.269300000000001 2.0636899999999998 +-3.49586 138.435 2.0417200000000002 +-3.7155999999999998 138.435 2.0307300000000001 +-5.8251200000000001 127.206 1.6791400000000001 +-3.7155999999999998 136.56700000000001 2.0307300000000001 +-3.0234200000000002 119.71299999999999 1.4594 +-3.9353400000000001 136.56700000000001 2.0197400000000001 +-3.9353400000000001 134.69999999999999 2.0197400000000001 +-3.9353400000000001 132.821 2.0197400000000001 +-2.0345800000000001 46.693199999999997 2.0746799999999999 +-3.9353400000000001 125.339 2.0197400000000001 +-5.8800499999999998 130.953 1.6901299999999999 +-3.7155999999999998 121.581 2.0307300000000001 +3.1952600000000002 102.85899999999999 1.58026 +-3.9353400000000001 117.845 2.0197400000000001 +-3.7155999999999998 115.97799999999999 2.0307300000000001 +-3.9353400000000001 115.97799999999999 2.0197400000000001 +-3.7155999999999998 114.099 2.0307300000000001 +-3.7155999999999998 110.363 2.0307300000000001 +-3.9353400000000001 108.48399999999999 2.0197400000000001 +-3.7155999999999998 108.48399999999999 2.0307300000000001 +-3.9353400000000001 102.85899999999999 2.0197400000000001 +-3.9353400000000001 101.002 2.0197400000000001 +-3.7155999999999998 102.85899999999999 2.0307300000000001 +-3.7155999999999998 99.123500000000007 2.0307300000000001 +-3.9353400000000001 95.376900000000006 2.0197400000000001 +-3.9353400000000001 91.630300000000005 2.0197400000000001 +-3.9353400000000001 89.762500000000003 2.0197400000000001 +-3.7155999999999998 87.883700000000005 2.0307300000000001 +-3.7155999999999998 86.015900000000002 2.0307300000000001 +-3.9353400000000001 82.269300000000001 2.0197400000000001 +-3.9353400000000001 76.654899999999998 2.0197400000000001 +-3.9353400000000001 72.9084 2.0197400000000001 +-3.7155999999999998 72.9084 2.0307300000000001 +-3.7155999999999998 69.161799999999999 2.0307300000000001 +-3.9353400000000001 67.283000000000001 2.0197400000000001 +-3.7155999999999998 61.668599999999998 2.0307300000000001 +2.5360399999999998 67.283000000000001 1.98678 +-3.9353400000000001 59.800800000000002 2.0197400000000001 +-3.7155999999999998 59.800800000000002 2.0307300000000001 +-3.7155999999999998 56.065199999999997 2.0307300000000001 +-3.9353400000000001 56.065199999999997 2.0197400000000001 +-3.9353400000000001 46.693199999999997 2.0197400000000001 +-3.7155999999999998 46.693199999999997 2.0307300000000001 +-3.9353400000000001 44.825400000000002 2.0197400000000001 +2.8876200000000001 125.339 1.55829 +-3.9353400000000001 41.078800000000001 2.0197400000000001 +-3.9353400000000001 42.946599999999997 2.0197400000000001 +-3.9353400000000001 39.210999999999999 2.0197400000000001 +-4.3418599999999996 132.821 1.99777 +-4.1440999999999999 95.376900000000006 1.50335 +-0.21073 91.630300000000005 1.43743 +-4.1440999999999999 132.821 2.0087600000000001 +-4.1440999999999999 129.07400000000001 2.0087600000000001 +-4.3418599999999996 129.07400000000001 1.99777 +-4.1440999999999999 125.339 2.0087600000000001 +-4.3418599999999996 121.581 1.99777 +-4.1440999999999999 121.581 2.0087600000000001 +-4.1440999999999999 117.845 2.0087600000000001 +-4.3418599999999996 117.845 1.99777 +-0.990811 74.787099999999995 2.0746799999999999 +-4.3418599999999996 110.363 1.99777 +-4.3418599999999996 104.738 1.99777 +-4.3418599999999996 101.002 1.99777 +-4.1440999999999999 97.244699999999995 2.0087600000000001 +-4.3418599999999996 97.244699999999995 1.99777 +-4.1440999999999999 95.376900000000006 2.0087600000000001 +-4.3418599999999996 93.498099999999994 1.99777 +-4.3418599999999996 87.883700000000005 1.99777 +-4.1440999999999999 87.883700000000005 2.0087600000000001 +-4.1440999999999999 80.401499999999999 2.0087600000000001 +-4.1440999999999999 76.654899999999998 2.0087600000000001 +-4.3418599999999996 74.787099999999995 1.99777 +-4.1440999999999999 72.9084 2.0087600000000001 +4.0083000000000002 50.439799999999998 1.7560500000000001 +-4.3418599999999996 97.244699999999995 1.51434 +-4.3418599999999996 71.040599999999998 1.99777 +-4.3418599999999996 69.161799999999999 1.99777 +-4.3418599999999996 65.426199999999994 1.99777 +-4.3418599999999996 63.547400000000003 1.99777 +-4.1440999999999999 61.668599999999998 2.0087600000000001 +3.5688200000000001 117.845 1.6242099999999999 +-4.1440999999999999 56.065199999999997 2.0087600000000001 +-4.3418599999999996 56.065199999999997 1.99777 +-4.1440999999999999 39.210999999999999 2.0087600000000001 +-4.3418599999999996 37.332299999999996 1.99777 +-4.1440999999999999 37.332299999999996 2.0087600000000001 +-4.3418599999999996 31.7179 1.99777 +-4.1440999999999999 29.850100000000001 2.0087600000000001 +-4.1440999999999999 27.971299999999999 2.0087600000000001 +-5.4515599999999997 42.946599999999997 1.6132200000000001 +-5.5614299999999997 44.825400000000002 1.6242099999999999 +-5.5614299999999997 76.654899999999998 1.8878999999999999 +-4.3418599999999996 22.3569 1.99777 +-4.1440999999999999 18.610299999999999 2.0087600000000001 +-4.5286400000000002 37.332299999999996 1.98678 +-4.7154199999999999 31.7179 1.9758 +-4.7154199999999999 33.585700000000003 1.9758 +-4.5286400000000002 31.7179 1.98678 +-4.7154199999999999 27.971299999999999 1.9758 +-4.7154199999999999 24.224699999999999 1.9758 +-4.5286400000000002 24.224699999999999 1.98678 +-4.5286400000000002 22.3569 1.98678 +-4.7154199999999999 20.489100000000001 1.9758 +-4.5286400000000002 20.489100000000001 1.98678 +2.1514899999999999 14.8637 1.50335 +-4.7154199999999999 16.7425 1.9758 +-4.7154199999999999 14.8637 1.9758 +-4.3418599999999996 24.224699999999999 1.99777 +-4.3418599999999996 26.1035 1.99777 +-1.5181899999999999 130.953 1.43743 +-4.5286400000000002 26.1035 1.98678 +-4.5286400000000002 27.971299999999999 1.98678 +-4.5286400000000002 29.850100000000001 1.98678 +-4.3418599999999996 33.585700000000003 1.99777 +-4.5286400000000002 35.464500000000001 1.98678 +-4.5286400000000002 39.210999999999999 1.98678 +-4.3418599999999996 39.210999999999999 1.99777 +-4.3418599999999996 50.439799999999998 1.99777 +-4.3418599999999996 61.668599999999998 1.99777 +-4.5286400000000002 61.668599999999998 1.98678 +-4.5286400000000002 63.547400000000003 1.98678 +-4.3418599999999996 72.9084 1.99777 +0.29467500000000002 129.07400000000001 1.44842 +-4.3418599999999996 78.5227 1.99777 +-4.3418599999999996 80.401499999999999 1.99777 +-4.3418599999999996 84.148099999999999 1.99777 +-4.5286400000000002 86.015900000000002 1.98678 +-5.5614299999999997 104.738 1.6242099999999999 +-4.3418599999999996 89.762500000000003 1.99777 +-4.5286400000000002 101.002 1.98678 +-4.3418599999999996 106.60599999999999 1.99777 +-4.3418599999999996 108.48399999999999 1.99777 +-4.3418599999999996 112.22 1.99777 +-3.0234200000000002 69.161799999999999 2.0527000000000002 +3.1952600000000002 35.464500000000001 1.9318500000000001 +-4.5286400000000002 117.845 1.98678 +-2.7816999999999998 115.97799999999999 1.4594 +-4.3418599999999996 119.71299999999999 1.99777 +-4.5286400000000002 119.71299999999999 1.98678 +-4.5286400000000002 123.45999999999999 1.98678 +-4.5286400000000002 97.244699999999995 1.5253300000000001 +-4.7154199999999999 97.244699999999995 1.5472999999999999 +-4.5286400000000002 134.69999999999999 1.98678 +-4.3418599999999996 136.56700000000001 1.99777 +-4.5286400000000002 138.435 1.98678 +-4.3418599999999996 140.31399999999999 1.99777 +-4.5286400000000002 140.31399999999999 1.98678 +-4.7154199999999999 134.69999999999999 1.9758 +-4.7154199999999999 132.821 1.9758 +-4.5286400000000002 132.821 1.98678 +-5.9899199999999997 65.426199999999994 1.77803 +-4.5286400000000002 129.07400000000001 1.98678 +-4.5286400000000002 121.581 1.98678 +-4.7154199999999999 115.97799999999999 1.9758 +-4.5286400000000002 114.099 1.98678 +-4.5286400000000002 106.60599999999999 1.98678 +-4.7154199999999999 102.85899999999999 1.9758 +-4.7154199999999999 99.123500000000007 1.9758 +-4.5286400000000002 97.244699999999995 1.98678 +-4.5286400000000002 95.376900000000006 1.98678 +-3.0234200000000002 89.762500000000003 2.0527000000000002 +-4.5286400000000002 89.762500000000003 1.98678 +-4.7154199999999999 87.883700000000005 1.9758 +-4.7154199999999999 84.148099999999999 1.9758 +-5.9899199999999997 39.210999999999999 1.7450699999999999 +-4.5286400000000002 84.148099999999999 1.98678 +-4.7154199999999999 80.401499999999999 1.9758 +-4.7154199999999999 78.5227 1.9758 +-4.5286400000000002 80.401499999999999 1.98678 +-4.5286400000000002 76.654899999999998 1.98678 +0.29467500000000002 57.921999999999997 1.44842 +-4.5286400000000002 74.787099999999995 1.98678 +-4.7154199999999999 72.9084 1.9758 +-4.5286400000000002 67.283000000000001 1.98678 +3.5688200000000001 41.078800000000001 1.6242099999999999 +-4.5286400000000002 65.426199999999994 1.98678 +-4.7154199999999999 61.668599999999998 1.9758 +-4.7154199999999999 59.800800000000002 1.9758 +-4.5286400000000002 56.065199999999997 1.98678 +-1.7818799999999999 99.123500000000007 2.0746799999999999 +-4.7154199999999999 54.186399999999999 1.9758 +-4.7154199999999999 50.439799999999998 1.9758 +-4.7154199999999999 48.572000000000003 1.9758 +-4.5286400000000002 50.439799999999998 1.98678 +2.8876200000000001 114.099 1.55829 +3.7555999999999998 101.002 1.65717 +-4.5286400000000002 48.572000000000003 1.98678 +-4.5286400000000002 42.946599999999997 1.98678 +-4.5286400000000002 41.078800000000001 1.98678 +-4.7154199999999999 140.31399999999999 1.9758 +-4.7154199999999999 138.435 1.9758 +-4.8802300000000001 136.56700000000001 1.9648099999999999 +-4.7154199999999999 136.56700000000001 1.9758 +-4.7154199999999999 127.206 1.9758 +-4.7154199999999999 123.45999999999999 1.9758 +2.5360399999999998 115.97799999999999 1.98678 +-4.8802300000000001 117.845 1.9648099999999999 +-4.7154199999999999 114.099 1.9758 +-4.8802300000000001 112.22 1.9648099999999999 +-4.7154199999999999 112.22 1.9758 +-4.8802300000000001 108.48399999999999 1.9648099999999999 +-4.8802300000000001 106.60599999999999 1.9648099999999999 +-4.7154199999999999 104.738 1.9758 +-4.8802300000000001 102.85899999999999 1.9648099999999999 +-4.7154199999999999 101.002 1.9758 +-4.8802300000000001 97.244699999999995 1.9648099999999999 +-4.7154199999999999 95.376900000000006 1.9758 +-4.8802300000000001 93.498099999999994 1.9648099999999999 +-4.7154199999999999 91.630300000000005 1.9758 +-4.8802300000000001 87.883700000000005 1.9648099999999999 +1.50325 33.585700000000003 2.0417200000000002 +-4.7154199999999999 74.787099999999995 1.9758 +-4.7154199999999999 71.040599999999998 1.9758 +-4.7154199999999999 69.161799999999999 1.9758 +3.67869 93.498099999999994 1.64618 +-4.8802300000000001 65.426199999999994 1.9648099999999999 +-4.8802300000000001 67.283000000000001 1.9648099999999999 +-4.8802300000000001 59.800800000000002 1.9648099999999999 +-4.8802300000000001 56.065199999999997 1.9648099999999999 +-4.7154199999999999 63.547400000000003 1.9758 +-4.8802300000000001 48.572000000000003 1.9648099999999999 +-4.7154199999999999 46.693199999999997 1.9758 +-4.8802300000000001 44.825400000000002 1.9648099999999999 +-1.2544999999999999 48.572000000000003 1.43743 +-1.5181899999999999 48.572000000000003 1.43743 +-4.7154199999999999 44.825400000000002 1.9758 +-4.7154199999999999 41.078800000000001 1.9758 +-4.7154199999999999 39.210999999999999 1.9758 +-4.8802300000000001 37.332299999999996 1.9648099999999999 +-4.7154199999999999 37.332299999999996 1.9758 +-4.7154199999999999 35.464500000000001 1.9758 +-4.8802300000000001 31.7179 1.9648099999999999 +-4.7154199999999999 22.3569 1.9758 +-4.8802300000000001 22.3569 1.9648099999999999 +-4.8802300000000001 16.7425 1.9648099999999999 +-4.8802300000000001 138.435 1.9648099999999999 +-5.0450400000000002 127.206 1.9428300000000001 +-4.8802300000000001 125.339 1.9648099999999999 +-4.8802300000000001 123.45999999999999 1.9648099999999999 +-5.0450400000000002 119.71299999999999 1.9428300000000001 +-5.0450400000000002 115.97799999999999 1.9428300000000001 +-4.8802300000000001 115.97799999999999 1.9648099999999999 +-5.0450400000000002 114.099 1.9428300000000001 +-3.2651300000000001 87.883700000000005 2.0417200000000002 +-5.66031 132.821 1.8769100000000001 +-4.8802300000000001 114.099 1.9648099999999999 +3.9753400000000001 136.56700000000001 1.72309 +-4.8802300000000001 110.363 1.9648099999999999 +2.8876200000000001 39.210999999999999 1.55829 +-5.0450400000000002 106.60599999999999 1.9428300000000001 +-4.8802300000000001 104.738 1.9648099999999999 +-5.0450400000000002 93.498099999999994 1.9428300000000001 +-5.0450400000000002 89.762500000000003 1.9428300000000001 +-4.8802300000000001 89.762500000000003 1.9648099999999999 +-5.0450400000000002 82.269300000000001 1.9428300000000001 +-4.7154199999999999 76.654899999999998 1.9758 +-4.8802300000000001 76.654899999999998 1.9648099999999999 +-4.8802300000000001 78.5227 1.9648099999999999 +-4.8802300000000001 74.787099999999995 1.9648099999999999 +-5.0450400000000002 72.9084 1.9428300000000001 +-4.8802300000000001 71.040599999999998 1.9648099999999999 +-4.8802300000000001 72.9084 1.9648099999999999 +-5.0450400000000002 65.426199999999994 1.9428300000000001 +-5.0450400000000002 63.547400000000003 1.9428300000000001 +-4.8802300000000001 63.547400000000003 1.9648099999999999 +-5.0450400000000002 54.186399999999999 1.9428300000000001 +-5.0450400000000002 50.439799999999998 1.9428300000000001 +-5.66031 52.307600000000001 1.64618 +-4.8802300000000001 50.439799999999998 1.9648099999999999 +-5.0450400000000002 48.572000000000003 1.9428300000000001 +-4.8802300000000001 46.693199999999997 1.9648099999999999 +-4.8802300000000001 42.946599999999997 1.9648099999999999 +-5.0450400000000002 41.078800000000001 1.9428300000000001 +-4.8802300000000001 39.210999999999999 1.9648099999999999 +-5.0450400000000002 39.210999999999999 1.9428300000000001 +-4.8802300000000001 35.464500000000001 1.9648099999999999 +-5.0450400000000002 35.464500000000001 1.9428300000000001 +-3.2651300000000001 46.693199999999997 2.0417200000000002 +-5.0450400000000002 27.971299999999999 1.9428300000000001 +-5.0450400000000002 26.1035 1.9428300000000001 +-5.0450400000000002 20.489100000000001 1.9428300000000001 +-4.8802300000000001 20.489100000000001 1.9648099999999999 +-5.0450400000000002 14.8637 1.9428300000000001 +-5.3197099999999997 39.210999999999999 1.92086 +-5.4515599999999997 35.464500000000001 1.90987 +-5.4515599999999997 31.7179 1.90987 +-5.8251200000000001 95.376900000000006 1.6791400000000001 +-5.8800499999999998 97.244699999999995 1.6901299999999999 +-5.4515599999999997 27.971299999999999 1.90987 +-5.3197099999999997 26.1035 1.92086 +-5.4515599999999997 22.3569 1.90987 +-5.3197099999999997 24.224699999999999 1.92086 +-5.3197099999999997 20.489100000000001 1.92086 +-5.4515599999999997 20.489100000000001 1.90987 +-5.3197099999999997 16.7425 1.92086 +-5.4515599999999997 16.7425 1.90987 +-5.4515599999999997 14.8637 1.90987 +-5.3197099999999997 14.8637 1.92086 +-5.1878700000000002 20.489100000000001 1.9318500000000001 +-5.1878700000000002 29.850100000000001 1.9318500000000001 +-5.1878700000000002 33.585700000000003 1.9318500000000001 +-5.3197099999999997 31.7179 1.92086 +-5.3197099999999997 42.946599999999997 1.92086 +-5.1878700000000002 46.693199999999997 1.9318500000000001 +-5.1878700000000002 50.439799999999998 1.9318500000000001 +-5.1878700000000002 52.307600000000001 1.9318500000000001 +-5.1878700000000002 54.186399999999999 1.9318500000000001 +-5.3197099999999997 54.186399999999999 1.92086 +-5.3197099999999997 59.800800000000002 1.92086 +-5.1878700000000002 65.426199999999994 1.9318500000000001 +-2.7816999999999998 78.5227 2.0636899999999998 +-5.1878700000000002 67.283000000000001 1.9318500000000001 +-5.1878700000000002 71.040599999999998 1.9318500000000001 +-5.1878700000000002 72.9084 1.9318500000000001 +-5.3197099999999997 72.9084 1.92086 +-5.3197099999999997 76.654899999999998 1.92086 +-5.3197099999999997 78.5227 1.92086 +-5.1878700000000002 86.015900000000002 1.9318500000000001 +-5.1878700000000002 89.762500000000003 1.9318500000000001 +-5.1878700000000002 91.630300000000005 1.9318500000000001 +-4.3418599999999996 102.85899999999999 1.51434 +-5.1878700000000002 95.376900000000006 1.9318500000000001 +-5.3197099999999997 97.244699999999995 1.92086 +-5.3197099999999997 99.123500000000007 1.92086 +-5.1878700000000002 99.123500000000007 1.9318500000000001 +-5.1878700000000002 101.002 1.9318500000000001 +-5.3197099999999997 102.85899999999999 1.92086 +-5.3197099999999997 106.60599999999999 1.92086 +-5.1878700000000002 106.60599999999999 1.9318500000000001 +3.94238 78.5227 1.8109900000000001 +-5.1878700000000002 108.48399999999999 1.9318500000000001 +-5.3197099999999997 108.48399999999999 1.92086 +-5.1878700000000002 119.71299999999999 1.9318500000000001 +-0.73810900000000002 74.787099999999995 2.0746799999999999 +-0.73810900000000002 72.9084 2.0746799999999999 +-0.21073 136.56700000000001 1.43743 +-5.1878700000000002 140.31399999999999 1.9318500000000001 +-5.3197099999999997 142.18199999999999 1.92086 +-5.3197099999999997 136.56700000000001 1.92086 +-5.3197099999999997 138.435 1.92086 +-5.3197099999999997 134.69999999999999 1.92086 +-4.7154199999999999 106.60599999999999 1.5472999999999999 +-5.3197099999999997 125.339 1.92086 +-5.4515599999999997 125.339 1.90987 +-5.3197099999999997 123.45999999999999 1.92086 +-5.4515599999999997 114.099 1.90987 +-5.3197099999999997 114.099 1.92086 +-5.3197099999999997 110.363 1.92086 +-5.4515599999999997 106.60599999999999 1.90987 +-4.1440999999999999 74.787099999999995 1.50335 +-5.3197099999999997 104.738 1.92086 +-5.4515599999999997 101.002 1.90987 +-5.4515599999999997 93.498099999999994 1.90987 +-5.4515599999999997 89.762500000000003 1.90987 +-5.3197099999999997 91.630300000000005 1.92086 +-5.4515599999999997 87.883700000000005 1.90987 +-0.73810900000000002 61.668599999999998 2.0746799999999999 +-5.3197099999999997 87.883700000000005 1.92086 +-5.4515599999999997 80.401499999999999 1.90987 +-5.3197099999999997 80.401499999999999 1.92086 +-5.3197099999999997 67.283000000000001 1.92086 +-5.3197099999999997 69.161799999999999 1.92086 +-5.4515599999999997 65.426199999999994 1.90987 +-5.4515599999999997 63.547400000000003 1.90987 +3.8325100000000001 76.654899999999998 1.6791400000000001 +-5.3197099999999997 61.668599999999998 1.92086 +-5.4515599999999997 57.921999999999997 1.90987 +-5.4515599999999997 59.800800000000002 1.90987 +-5.4515599999999997 56.065199999999997 1.90987 +-5.4515599999999997 54.186399999999999 1.90987 +3.67869 95.376900000000006 1.8769100000000001 +-5.3197099999999997 46.693199999999997 1.92086 +-5.3197099999999997 48.572000000000003 1.92086 +-5.4515599999999997 44.825400000000002 1.90987 +-5.3197099999999997 44.825400000000002 1.92086 +-5.7482100000000003 42.946599999999997 1.85494 +-5.66031 42.946599999999997 1.8769100000000001 +-5.66031 39.210999999999999 1.8769100000000001 +-5.7482100000000003 39.210999999999999 1.85494 +-5.8251200000000001 41.078800000000001 1.84395 +-5.8800499999999998 142.18199999999999 1.8219799999999999 +-1.5181899999999999 72.9084 1.43743 +-5.93499 140.31399999999999 1.8109900000000001 +-2.28728 138.435 1.44842 +-5.8800499999999998 138.435 1.8219799999999999 +-5.93499 136.56700000000001 1.8109900000000001 +-5.93499 132.821 1.8109900000000001 +-5.3197099999999997 115.97799999999999 1.92086 +-5.93499 129.07400000000001 1.8109900000000001 +-5.93499 127.206 1.8109900000000001 +-5.8800499999999998 123.45999999999999 1.8219799999999999 +-5.93499 115.97799999999999 1.8109900000000001 +-5.93499 114.099 1.8109900000000001 +-5.8800499999999998 112.22 1.8219799999999999 +-5.93499 110.363 1.8109900000000001 +-5.8800499999999998 108.48399999999999 1.8219799999999999 +-3.0234200000000002 54.186399999999999 2.0527000000000002 +-5.93499 104.738 1.8109900000000001 +-5.93499 102.85899999999999 1.8109900000000001 +-5.8800499999999998 101.002 1.8219799999999999 +-5.93499 99.123500000000007 1.8109900000000001 +-5.93499 95.376900000000006 1.8109900000000001 +-5.93499 91.630300000000005 1.8109900000000001 +-5.8800499999999998 91.630300000000005 1.8219799999999999 +-5.93499 89.762500000000003 1.8109900000000001 +-5.8800499999999998 84.148099999999999 1.8219799999999999 +-5.93499 84.148099999999999 1.8109900000000001 +-5.8800499999999998 82.269300000000001 1.8219799999999999 +-5.93499 78.5227 1.8109900000000001 +-0.990811 93.498099999999994 2.0746799999999999 +-5.93499 72.9084 1.8109900000000001 +-5.93499 67.283000000000001 1.8109900000000001 +2.8876200000000001 80.401499999999999 1.9648099999999999 +-5.8800499999999998 67.283000000000001 1.8219799999999999 +-5.93499 63.547400000000003 1.8109900000000001 +-5.8800499999999998 61.668599999999998 1.8219799999999999 +-5.93499 59.800800000000002 1.8109900000000001 +-5.8800499999999998 59.800800000000002 1.8219799999999999 +-5.8800499999999998 57.921999999999997 1.8219799999999999 +-5.93499 52.307600000000001 1.8109900000000001 +-5.8800499999999998 52.307600000000001 1.8219799999999999 +-5.93499 50.439799999999998 1.8109900000000001 +-5.8800499999999998 87.883700000000005 1.6901299999999999 +-5.8800499999999998 48.572000000000003 1.8219799999999999 +-5.8800499999999998 46.693199999999997 1.8219799999999999 +-5.8800499999999998 41.078800000000001 1.8219799999999999 +-5.93499 39.210999999999999 1.8109900000000001 +3.67869 52.307600000000001 1.64618 +3.67869 54.186399999999999 1.64618 +-5.93499 33.585700000000003 1.8109900000000001 +-5.93499 31.7179 1.8109900000000001 +-5.93499 29.850100000000001 1.8109900000000001 +-5.93499 26.1035 1.8109900000000001 +-5.8800499999999998 26.1035 1.8219799999999999 +-5.93499 14.8637 1.8109900000000001 +-5.93499 44.825400000000002 1.8109900000000001 +-5.9679500000000001 42.946599999999997 1.7890200000000001 +-5.93499 42.946599999999997 1.8109900000000001 +-4.1440999999999999 115.97799999999999 2.0087600000000001 +-5.93499 37.332299999999996 1.8109900000000001 +-5.93499 35.464500000000001 1.8109900000000001 +-4.5286400000000002 115.97799999999999 1.98678 +-5.9899199999999997 42.946599999999997 1.77803 +-5.9899199999999997 41.078800000000001 1.77803 +-5.9899199999999997 37.332299999999996 1.77803 +-5.9899199999999997 39.210999999999999 1.77803 +-0.21073 31.7179 2.0746799999999999 +-0.21073 29.850100000000001 2.0746799999999999 +0.041973099999999999 29.850100000000001 2.0746799999999999 +0.54737800000000003 33.585700000000003 2.0636899999999998 +0.80008000000000001 35.464500000000001 2.0636899999999998 +1.2725200000000001 140.31399999999999 2.0417200000000002 +1.2725200000000001 138.435 2.0417200000000002 +1.7339800000000001 142.18199999999999 1.4923599999999999 +1.04179 138.435 2.0527000000000002 +1.2725200000000001 132.821 2.0417200000000002 +1.50325 12.995900000000001 2.0417200000000002 +1.04179 127.206 2.0527000000000002 +1.2725200000000001 125.339 2.0417200000000002 +1.04179 121.581 2.0527000000000002 +1.04179 117.845 2.0527000000000002 +-5.0450400000000002 69.161799999999999 1.5692699999999999 +1.2725200000000001 114.099 2.0417200000000002 +3.7555999999999998 48.572000000000003 1.65717 +3.8325100000000001 48.572000000000003 1.6791400000000001 +1.04179 108.48399999999999 2.0527000000000002 +1.04179 106.60599999999999 2.0527000000000002 +3.0524300000000002 26.1035 1.5692699999999999 +-1.2544999999999999 106.60599999999999 2.0746799999999999 +-0.990811 80.401499999999999 2.0746799999999999 +1.2725200000000001 93.498099999999994 2.0417200000000002 +1.2725200000000001 82.269300000000001 2.0417200000000002 +3.3380899999999998 27.971299999999999 1.6022400000000001 +1.04179 72.9084 2.0527000000000002 +1.2725200000000001 69.161799999999999 2.0417200000000002 +1.04179 69.161799999999999 2.0527000000000002 +1.04179 65.426199999999994 2.0527000000000002 +1.04179 63.547400000000003 2.0527000000000002 +1.04179 61.668599999999998 2.0527000000000002 +1.2725200000000001 57.921999999999997 2.0417200000000002 +1.2725200000000001 59.800800000000002 2.0417200000000002 +2.8876200000000001 134.69999999999999 1.9648099999999999 +1.04179 46.693199999999997 2.0527000000000002 +1.2725200000000001 46.693199999999997 2.0417200000000002 +1.04179 41.078800000000001 2.0527000000000002 +1.2725200000000001 41.078800000000001 2.0417200000000002 +1.04179 37.332299999999996 2.0527000000000002 +1.04179 39.210999999999999 2.0527000000000002 +1.2725200000000001 37.332299999999996 2.0417200000000002 +1.04179 33.585700000000003 2.0527000000000002 +1.04179 31.7179 2.0527000000000002 +2.72282 54.186399999999999 1.9758 +2.8876200000000001 54.186399999999999 1.9648099999999999 +1.2725200000000001 29.850100000000001 2.0417200000000002 +1.04179 29.850100000000001 2.0527000000000002 +1.2725200000000001 26.1035 2.0417200000000002 +1.04179 22.3569 2.0527000000000002 +0.80008000000000001 39.210999999999999 2.0636899999999998 +0.29467500000000002 37.332299999999996 2.0746799999999999 +0.54737800000000003 39.210999999999999 2.0636899999999998 +0.041973099999999999 33.585700000000003 2.0746799999999999 +0.29467500000000002 33.585700000000003 2.0746799999999999 +0.54737800000000003 35.464500000000001 2.0636899999999998 +2.1514899999999999 39.210999999999999 1.50335 +0.54737800000000003 18.610299999999999 1.44842 +1.04179 57.921999999999997 2.0527000000000002 +0.29467500000000002 20.489100000000001 1.44842 +0.29467500000000002 18.610299999999999 1.44842 +0.041973099999999999 20.489100000000001 1.44842 +0.041973099999999999 18.610299999999999 1.44842 +-0.47442000000000001 20.489100000000001 1.43743 +-0.21073 18.610299999999999 1.43743 +-0.990811 20.489100000000001 1.43743 +-1.7818799999999999 20.489100000000001 1.43743 +-1.7818799999999999 18.610299999999999 1.43743 +-2.0345800000000001 20.489100000000001 1.44842 +-2.28728 18.610299999999999 1.44842 +3.8325100000000001 95.376900000000006 1.84395 +-2.53999 18.610299999999999 1.44842 +-2.7816999999999998 18.610299999999999 1.4594 +-2.53999 14.8637 1.44842 +-4.1440999999999999 18.610299999999999 1.50335 +-4.3418599999999996 18.610299999999999 1.51434 +-5.3197099999999997 29.850100000000001 1.6022400000000001 +3.1952600000000002 78.5227 1.58026 +-5.8800499999999998 37.332299999999996 1.6901299999999999 +-5.8800499999999998 35.464500000000001 1.6901299999999999 +-5.93499 29.850100000000001 1.71211 +-5.7482100000000003 127.206 1.65717 +-5.8251200000000001 129.07400000000001 1.6791400000000001 +-5.93499 31.7179 1.71211 +-5.9679500000000001 33.585700000000003 1.72309 +-5.9679500000000001 37.332299999999996 1.72309 +-5.9679500000000001 39.210999999999999 1.72309 +-2.28728 125.339 2.0636899999999998 +-5.93499 39.210999999999999 1.71211 +-5.93499 44.825400000000002 1.71211 +-5.9679500000000001 44.825400000000002 1.72309 +-5.9679500000000001 48.572000000000003 1.72309 +-5.9679500000000001 56.065199999999997 1.72309 +-5.93499 59.800800000000002 1.71211 +-5.93499 61.668599999999998 1.71211 +-5.9679500000000001 63.547400000000003 1.72309 +-5.93499 67.283000000000001 1.71211 +-5.9679500000000001 71.040599999999998 1.72309 +-5.93499 76.654899999999998 1.71211 +-5.9679500000000001 76.654899999999998 1.72309 +-5.9679500000000001 84.148099999999999 1.72309 +-5.93499 89.762500000000003 1.71211 +-5.9679500000000001 89.762500000000003 1.72309 +-5.93499 91.630300000000005 1.71211 +-5.93499 93.498099999999994 1.71211 +-5.9679500000000001 99.123500000000007 1.72309 +-5.93499 101.002 1.71211 +-4.1440999999999999 114.099 2.0087600000000001 +-5.93499 106.60599999999999 1.71211 +-5.9679500000000001 106.60599999999999 1.72309 +-5.93499 108.48399999999999 1.71211 +2.8876200000000001 123.45999999999999 1.55829 +-5.9679500000000001 110.363 1.72309 +-5.9679500000000001 112.22 1.72309 +-5.93499 125.339 1.71211 +-5.93499 134.69999999999999 1.71211 +-5.9679500000000001 41.078800000000001 1.72309 +-5.7482100000000003 39.210999999999999 1.65717 +-5.5614299999999997 37.332299999999996 1.6242099999999999 +-5.1878700000000002 37.332299999999996 1.58026 +-5.1878700000000002 39.210999999999999 1.58026 +-4.7154199999999999 37.332299999999996 1.5472999999999999 +-4.7154199999999999 39.210999999999999 1.5472999999999999 +-4.1440999999999999 37.332299999999996 1.50335 +-3.0234200000000002 37.332299999999996 1.4594 +-2.7816999999999998 37.332299999999996 1.4594 +-2.53999 39.210999999999999 1.44842 +-2.28728 37.332299999999996 1.44842 +-2.0345800000000001 39.210999999999999 1.44842 +-1.5181899999999999 39.210999999999999 1.43743 +-1.2544999999999999 39.210999999999999 1.43743 +-0.990811 39.210999999999999 1.43743 +-0.21073 37.332299999999996 1.43743 +0.54737800000000003 39.210999999999999 1.44842 +1.04179 37.332299999999996 1.4594 +0.80008000000000001 37.332299999999996 1.4594 +1.9427300000000001 115.97799999999999 1.50335 +1.9427300000000001 114.099 1.50335 +1.9427300000000001 108.48399999999999 1.50335 +1.7339800000000001 99.123500000000007 1.4923599999999999 +1.7339800000000001 101.002 1.4923599999999999 +1.7339800000000001 97.244699999999995 1.4923599999999999 +1.9427300000000001 95.376900000000006 1.50335 +1.9427300000000001 91.630300000000005 1.50335 +1.7339800000000001 89.762500000000003 1.4923599999999999 +1.7339800000000001 87.883700000000005 1.4923599999999999 +1.9427300000000001 84.148099999999999 1.50335 +0.29467500000000002 127.206 1.44842 +1.7339800000000001 84.148099999999999 1.4923599999999999 +1.7339800000000001 82.269300000000001 1.4923599999999999 +0.80008000000000001 84.148099999999999 2.0636899999999998 +1.9427300000000001 78.5227 1.50335 +1.7339800000000001 78.5227 1.4923599999999999 +0.041973099999999999 108.48399999999999 1.44842 +3.1952600000000002 71.040599999999998 1.9318500000000001 +1.7339800000000001 72.9084 1.4923599999999999 +1.9427300000000001 69.161799999999999 1.50335 +1.7339800000000001 71.040599999999998 1.4923599999999999 +-2.0345800000000001 52.307600000000001 1.44842 +0.041973099999999999 59.800800000000002 1.44842 +3.1952600000000002 74.787099999999995 1.9318500000000001 +1.7339800000000001 65.426199999999994 1.4923599999999999 +1.9427300000000001 65.426199999999994 1.50335 +0.80008000000000001 69.161799999999999 1.4594 +1.9427300000000001 57.921999999999997 1.50335 +1.7339800000000001 56.065199999999997 1.4923599999999999 +1.9427300000000001 54.186399999999999 1.50335 +1.9427300000000001 52.307600000000001 1.50335 +1.7339800000000001 52.307600000000001 1.4923599999999999 +1.7339800000000001 48.572000000000003 1.4923599999999999 +1.9427300000000001 48.572000000000003 1.50335 +1.9427300000000001 42.946599999999997 1.50335 +1.7339800000000001 35.464500000000001 1.4923599999999999 +1.9427300000000001 35.464500000000001 1.50335 +1.9427300000000001 31.7179 1.50335 +1.9427300000000001 27.971299999999999 1.50335 +1.7339800000000001 27.971299999999999 1.4923599999999999 +1.9427300000000001 26.1035 1.50335 +1.7339800000000001 22.3569 1.4923599999999999 +1.9427300000000001 20.489100000000001 1.50335 +1.9427300000000001 14.8637 1.50335 +0.29467500000000002 22.3569 1.44842 +-0.21073 22.3569 1.43743 +-0.47442000000000001 50.439799999999998 2.0746799999999999 +-1.2544999999999999 20.489100000000001 1.43743 +3.67869 39.210999999999999 1.64618 +-2.53999 20.489100000000001 1.44842 +-2.7816999999999998 20.489100000000001 1.4594 +-0.73810900000000002 67.283000000000001 2.0746799999999999 +-2.7816999999999998 16.7425 1.4594 +-3.9353400000000001 18.610299999999999 1.50335 +-4.8802300000000001 18.610299999999999 1.9648099999999999 +-2.28728 84.148099999999999 2.0746799999999999 +-4.1440999999999999 20.489100000000001 1.50335 +-5.1878700000000002 27.971299999999999 1.58026 +-5.1878700000000002 26.1035 1.58026 +-5.0450400000000002 27.971299999999999 1.5692699999999999 +-5.5614299999999997 24.224699999999999 1.8878999999999999 +3.5688200000000001 134.69999999999999 1.6242099999999999 +1.50325 110.363 2.0417200000000002 +-5.8251200000000001 35.464500000000001 1.6791400000000001 +-5.7482100000000003 37.332299999999996 1.65717 +-5.7482100000000003 142.18199999999999 1.65717 +0.041973099999999999 97.244699999999995 1.44842 +-5.66031 140.31399999999999 1.64618 +-5.66031 136.56700000000001 1.64618 +-3.9353400000000001 123.45999999999999 2.0197400000000001 +-4.1440999999999999 123.45999999999999 2.0087600000000001 +-5.66031 132.821 1.64618 +-5.7482100000000003 132.821 1.65717 +-5.66031 130.953 1.64618 +-5.7482100000000003 129.07400000000001 1.65717 +-5.7482100000000003 130.953 1.65717 +-5.7482100000000003 125.339 1.65717 +-5.66031 125.339 1.64618 +-5.66031 121.581 1.64618 +-5.66031 114.099 1.64618 +-5.66031 112.22 1.64618 +-5.7482100000000003 112.22 1.65717 +-5.66031 108.48399999999999 1.64618 +-5.7482100000000003 104.738 1.65717 +-5.66031 102.85899999999999 1.64618 +-2.0345800000000001 123.45999999999999 1.44842 +-5.7482100000000003 102.85899999999999 1.65717 +-5.93499 93.498099999999994 1.8109900000000001 +-5.7482100000000003 93.498099999999994 1.65717 +-5.66031 93.498099999999994 1.64618 +-5.66031 89.762500000000003 1.64618 +-5.7482100000000003 86.015900000000002 1.65717 +-5.66031 84.148099999999999 1.64618 +1.9427300000000001 89.762500000000003 2.0197400000000001 +2.1514899999999999 91.630300000000005 2.0087600000000001 +-3.7155999999999998 18.610299999999999 2.0307300000000001 +-5.66031 78.5227 1.64618 +-5.66031 76.654899999999998 1.64618 +-5.7482100000000003 78.5227 1.65717 +-5.7482100000000003 76.654899999999998 1.65717 +-5.7482100000000003 72.9084 1.65717 +-5.66031 71.040599999999998 1.64618 +-5.66031 65.426199999999994 1.64618 +-5.7482100000000003 63.547400000000003 1.65717 +-5.66031 59.800800000000002 1.64618 +-5.7482100000000003 56.065199999999997 1.65717 +-5.66031 54.186399999999999 1.64618 +0.041973099999999999 101.002 1.44842 +-5.7482100000000003 54.186399999999999 1.65717 +-5.66031 44.825400000000002 1.64618 +-5.7482100000000003 41.078800000000001 1.65717 +-5.66031 31.7179 1.64618 +-5.66031 29.850100000000001 1.64618 +-5.7482100000000003 31.7179 1.65717 +-5.66031 27.971299999999999 1.64618 +-5.7482100000000003 27.971299999999999 1.65717 +-5.7482100000000003 24.224699999999999 1.65717 +3.8325100000000001 80.401499999999999 1.84395 +-5.66031 22.3569 1.64618 +-5.66031 18.610299999999999 1.64618 +-5.66031 16.7425 1.64618 +-5.7482100000000003 16.7425 1.65717 +-5.66031 14.8637 1.64618 +-5.66031 37.332299999999996 1.64618 +-5.5614299999999997 42.946599999999997 1.6242099999999999 +-5.4515599999999997 39.210999999999999 1.6132200000000001 +3.9753400000000001 115.97799999999999 1.72309 +-5.4515599999999997 35.464500000000001 1.6132200000000001 +-4.5286400000000002 35.464500000000001 1.5253300000000001 +3.8325100000000001 140.31399999999999 1.6791400000000001 +-2.28728 35.464500000000001 1.44842 +-1.5181899999999999 35.464500000000001 1.43743 +3.4589500000000002 112.22 1.90987 +-1.5181899999999999 37.332299999999996 1.43743 +-1.2544999999999999 37.332299999999996 1.43743 +-4.5286400000000002 127.206 1.98678 +0.29467500000000002 14.8637 2.0746799999999999 +-0.990811 35.464500000000001 1.43743 +0.29467500000000002 35.464500000000001 1.44842 +0.041973099999999999 37.332299999999996 1.44842 +1.2725200000000001 37.332299999999996 1.4703900000000001 +1.2725200000000001 35.464500000000001 1.4703900000000001 +1.50325 37.332299999999996 1.4813799999999999 +1.50325 41.078800000000001 1.4813799999999999 +1.2725200000000001 42.946599999999997 1.4703900000000001 +-4.7154199999999999 93.498099999999994 1.9758 +-4.8802300000000001 91.630300000000005 1.9648099999999999 +-3.49586 46.693199999999997 2.0417200000000002 +1.2725200000000001 46.693199999999997 1.4703900000000001 +1.50325 48.572000000000003 1.4813799999999999 +1.2725200000000001 52.307600000000001 1.4703900000000001 +1.2725200000000001 50.439799999999998 1.4703900000000001 +1.50325 52.307600000000001 1.4813799999999999 +1.2725200000000001 54.186399999999999 1.4703900000000001 +1.2725200000000001 56.065199999999997 1.4703900000000001 +1.04179 56.065199999999997 1.4594 +2.5360399999999998 140.31399999999999 1.5253300000000001 +1.2725200000000001 57.921999999999997 1.4703900000000001 +1.2725200000000001 59.800800000000002 1.4703900000000001 +3.94238 69.161799999999999 1.8109900000000001 +1.50325 61.668599999999998 1.4813799999999999 +1.50325 65.426199999999994 1.4813799999999999 +1.2725200000000001 65.426199999999994 1.4703900000000001 +1.2725200000000001 67.283000000000001 1.4703900000000001 +1.50325 71.040599999999998 1.4813799999999999 +1.50325 69.161799999999999 1.4813799999999999 +1.2725200000000001 72.9084 1.4703900000000001 +1.2725200000000001 74.787099999999995 1.4703900000000001 +1.50325 78.5227 1.4813799999999999 +2.3492600000000001 110.363 1.99777 +1.2725200000000001 78.5227 1.4703900000000001 +1.2725200000000001 82.269300000000001 1.4703900000000001 +1.50325 82.269300000000001 1.4813799999999999 +1.50325 84.148099999999999 1.4813799999999999 +1.2725200000000001 84.148099999999999 1.4703900000000001 +1.2725200000000001 89.762500000000003 1.4703900000000001 +1.2725200000000001 87.883700000000005 1.4703900000000001 +1.50325 87.883700000000005 1.4813799999999999 +-5.4515599999999997 130.953 1.6132200000000001 +1.2725200000000001 91.630300000000005 1.4703900000000001 +-4.1440999999999999 115.97799999999999 1.50335 +-4.3418599999999996 115.97799999999999 1.51434 +1.2725200000000001 95.376900000000006 1.4703900000000001 +1.2725200000000001 93.498099999999994 1.4703900000000001 +1.2725200000000001 97.244699999999995 1.4703900000000001 +1.04179 99.123500000000007 1.4594 +4.0083000000000002 20.489100000000001 1.7560500000000001 +-5.66031 69.161799999999999 1.8769100000000001 +1.2725200000000001 101.002 1.4703900000000001 +-0.990811 78.5227 2.0746799999999999 +-0.73810900000000002 80.401499999999999 2.0746799999999999 +1.04179 104.738 1.4594 +1.04179 106.60599999999999 1.4594 +1.2725200000000001 104.738 1.4703900000000001 +1.50325 106.60599999999999 1.4813799999999999 +-1.2544999999999999 71.040599999999998 2.0746799999999999 +1.04179 110.363 1.4594 +1.7339800000000001 106.60599999999999 1.4923599999999999 +1.50325 112.22 1.4813799999999999 +1.2725200000000001 112.22 1.4703900000000001 +1.50325 115.97799999999999 1.4813799999999999 +1.2725200000000001 115.97799999999999 1.4703900000000001 +1.50325 119.71299999999999 1.4813799999999999 +1.2725200000000001 123.45999999999999 1.4703900000000001 +1.50325 127.206 1.4813799999999999 +1.04179 130.953 1.4594 +1.50325 129.07400000000001 1.4813799999999999 +2.3492600000000001 67.283000000000001 1.51434 +1.2725200000000001 134.69999999999999 1.4703900000000001 +1.50325 132.821 1.4813799999999999 +1.2725200000000001 136.56700000000001 1.4703900000000001 +1.2725200000000001 138.435 1.4703900000000001 +0.54737800000000003 69.161799999999999 1.44842 +-5.9899199999999997 101.002 1.77803 +1.04179 142.18199999999999 1.4594 +1.2725200000000001 140.31399999999999 1.4703900000000001 +1.2725200000000001 142.18199999999999 1.4703900000000001 +1.7339800000000001 140.31399999999999 1.4923599999999999 +1.50325 142.18199999999999 1.4813799999999999 +1.50325 140.31399999999999 1.4813799999999999 +1.7339800000000001 136.56700000000001 1.4923599999999999 +-2.0345800000000001 97.244699999999995 2.0746799999999999 +3.94238 54.186399999999999 1.71211 +1.50325 130.953 1.4813799999999999 +2.3492600000000001 35.464500000000001 1.51434 +1.7339800000000001 125.339 1.4923599999999999 +0.80008000000000001 44.825400000000002 2.0636899999999998 +1.7339800000000001 119.71299999999999 1.4923599999999999 +1.50325 121.581 1.4813799999999999 +1.7339800000000001 115.97799999999999 1.4923599999999999 +1.7339800000000001 112.22 1.4923599999999999 +3.94238 65.426199999999994 1.8109900000000001 +1.7339800000000001 102.85899999999999 1.4923599999999999 +1.50325 104.738 1.4813799999999999 +-5.5614299999999997 61.668599999999998 1.8878999999999999 +1.50325 101.002 1.4813799999999999 +1.50325 95.376900000000006 1.4813799999999999 +1.7339800000000001 95.376900000000006 1.4923599999999999 +1.7339800000000001 91.630300000000005 1.4923599999999999 +1.7339800000000001 93.498099999999994 1.4923599999999999 +1.50325 91.630300000000005 1.4813799999999999 +1.50325 89.762500000000003 1.4813799999999999 +1.7339800000000001 80.401499999999999 1.4923599999999999 +1.50325 74.787099999999995 1.4813799999999999 +1.7339800000000001 69.161799999999999 1.4923599999999999 +1.7339800000000001 67.283000000000001 1.4923599999999999 +1.7339800000000001 61.668599999999998 1.4923599999999999 +1.50325 59.800800000000002 1.4813799999999999 +1.50325 57.921999999999997 1.4813799999999999 +1.7339800000000001 57.921999999999997 1.4923599999999999 +1.50325 56.065199999999997 1.4813799999999999 +1.50325 54.186399999999999 1.4813799999999999 +1.7339800000000001 54.186399999999999 1.4923599999999999 +1.50325 50.439799999999998 1.4813799999999999 +1.7339800000000001 46.693199999999997 1.4923599999999999 +1.50325 44.825400000000002 1.4813799999999999 +1.7339800000000001 42.946599999999997 1.4923599999999999 +1.50325 42.946599999999997 1.4813799999999999 +1.7339800000000001 39.210999999999999 1.4923599999999999 +1.50325 39.210999999999999 1.4813799999999999 +1.7339800000000001 37.332299999999996 1.4923599999999999 +1.50325 35.464500000000001 1.4813799999999999 +1.7339800000000001 31.7179 1.4923599999999999 +1.50325 31.7179 1.4813799999999999 +1.50325 26.1035 1.4813799999999999 +1.7339800000000001 24.224699999999999 1.4923599999999999 +1.50325 16.7425 1.4813799999999999 +1.7339800000000001 16.7425 1.4923599999999999 +-4.1440999999999999 50.439799999999998 2.0087600000000001 +-4.1440999999999999 52.307600000000001 2.0087600000000001 +1.50325 12.995900000000001 1.4813799999999999 +1.2725200000000001 16.7425 1.4703900000000001 +3.8984299999999998 54.186399999999999 1.8219799999999999 +3.8984299999999998 52.307600000000001 1.8219799999999999 +-0.21073 89.762500000000003 2.0746799999999999 +1.2725200000000001 18.610299999999999 1.4703900000000001 +3.8325100000000001 54.186399999999999 1.6791400000000001 +1.2725200000000001 20.489100000000001 1.4703900000000001 +1.50325 22.3569 1.4813799999999999 +1.2725200000000001 26.1035 1.4703900000000001 +1.50325 27.971299999999999 1.4813799999999999 +1.2725200000000001 31.7179 1.4703900000000001 +1.04179 29.850100000000001 1.4594 +0.80008000000000001 27.971299999999999 1.4594 +1.04179 27.971299999999999 1.4594 +0.80008000000000001 26.1035 1.4594 +1.04179 24.224699999999999 1.4594 +0.54737800000000003 24.224699999999999 1.44842 +0.041973099999999999 24.224699999999999 1.44842 +0.29467500000000002 24.224699999999999 1.44842 +0.041973099999999999 22.3569 1.44842 +-0.47442000000000001 24.224699999999999 1.43743 +-0.21073 24.224699999999999 1.43743 +0.041973099999999999 84.148099999999999 1.44842 +-1.2544999999999999 22.3569 1.43743 +-1.7818799999999999 24.224699999999999 1.43743 +-2.0345800000000001 22.3569 1.44842 +-2.28728 24.224699999999999 1.44842 +-2.7816999999999998 22.3569 1.4594 +-3.2651300000000001 22.3569 1.4703900000000001 +3.0524300000000002 24.224699999999999 1.9428300000000001 +-3.2651300000000001 20.489100000000001 1.4703900000000001 +-3.0234200000000002 18.610299999999999 1.4594 +-3.0234200000000002 14.8637 1.4594 +-2.7816999999999998 46.693199999999997 1.4594 +-3.9353400000000001 20.489100000000001 1.50335 +-4.3418599999999996 22.3569 1.51434 +-5.1878700000000002 29.850100000000001 1.58026 +-5.3197099999999997 129.07400000000001 1.6022400000000001 +-5.3197099999999997 123.45999999999999 1.6022400000000001 +-5.3197099999999997 117.845 1.6022400000000001 +-5.4515599999999997 119.71299999999999 1.6132200000000001 +-5.4515599999999997 115.97799999999999 1.6132200000000001 +-5.3197099999999997 114.099 1.6022400000000001 +-5.3197099999999997 112.22 1.6022400000000001 +-4.3418599999999996 95.376900000000006 1.99777 +-5.3197099999999997 104.738 1.6022400000000001 +-5.4515599999999997 106.60599999999999 1.6132200000000001 +-5.3197099999999997 102.85899999999999 1.6022400000000001 +-5.3197099999999997 101.002 1.6022400000000001 +-5.4515599999999997 99.123500000000007 1.6132200000000001 +-5.3197099999999997 93.498099999999994 1.6022400000000001 +-5.3197099999999997 89.762500000000003 1.6022400000000001 +-5.3197099999999997 87.883700000000005 1.6022400000000001 +-5.4515599999999997 89.762500000000003 1.6132200000000001 +-5.4515599999999997 86.015900000000002 1.6132200000000001 +-5.3197099999999997 84.148099999999999 1.6022400000000001 +-5.4515599999999997 82.269300000000001 1.6132200000000001 +-5.4515599999999997 84.148099999999999 1.6132200000000001 +-5.4515599999999997 78.5227 1.6132200000000001 +-5.4515599999999997 69.161799999999999 1.6132200000000001 +3.1952600000000002 95.376900000000006 1.58026 +-5.1878700000000002 125.339 1.58026 +-5.3197099999999997 59.800800000000002 1.6022400000000001 +-5.4515599999999997 57.921999999999997 1.6132200000000001 +-5.4515599999999997 54.186399999999999 1.6132200000000001 +-5.4515599999999997 48.572000000000003 1.6132200000000001 +-5.3197099999999997 46.693199999999997 1.6022400000000001 +1.2725200000000001 112.22 2.0417200000000002 +-5.3197099999999997 44.825400000000002 1.6022400000000001 +-5.4515599999999997 44.825400000000002 1.6132200000000001 +-5.4515599999999997 41.078800000000001 1.6132200000000001 +1.9427300000000001 71.040599999999998 1.50335 +-5.3197099999999997 37.332299999999996 1.6022400000000001 +-5.3197099999999997 39.210999999999999 1.6022400000000001 +-5.4515599999999997 37.332299999999996 1.6132200000000001 +-5.3197099999999997 35.464500000000001 1.6022400000000001 +-5.4515599999999997 33.585700000000003 1.6132200000000001 +-1.2544999999999999 130.953 2.0746799999999999 +-5.4515599999999997 31.7179 1.6132200000000001 +3.5688200000000001 57.921999999999997 1.6242099999999999 +-5.4515599999999997 26.1035 1.6132200000000001 +-5.3197099999999997 26.1035 1.6022400000000001 +-5.4515599999999997 22.3569 1.6132200000000001 +-5.3197099999999997 22.3569 1.6022400000000001 +-5.3197099999999997 16.7425 1.6022400000000001 +-5.1878700000000002 35.464500000000001 1.58026 +-3.9353400000000001 121.592 1.50335 +-4.8802300000000001 35.464500000000001 1.55829 +-4.1440999999999999 35.464500000000001 1.50335 +-3.9353400000000001 35.464500000000001 1.50335 +-2.7816999999999998 35.464500000000001 1.4594 +-4.5286400000000002 102.85899999999999 1.98678 +-2.53999 35.464500000000001 1.44842 +-2.0345800000000001 35.464500000000001 1.44842 +-1.2544999999999999 33.585700000000003 1.43743 +-0.990811 33.585700000000003 1.43743 +0.041973099999999999 123.45999999999999 1.44842 +0.80008000000000001 33.585700000000003 1.4594 +0.54737800000000003 35.464500000000001 1.44842 +1.04179 33.585700000000003 1.4594 +2.72282 65.426199999999994 1.9758 +0.54737800000000003 31.7179 1.44842 +0.80008000000000001 29.850100000000001 1.4594 +0.54737800000000003 26.1035 1.44842 +0.80008000000000001 24.224699999999999 1.4594 +0.29467500000000002 26.1035 1.44842 +-0.73810900000000002 24.224699999999999 1.43743 +-1.2544999999999999 26.1035 1.43743 +-1.5181899999999999 26.1035 1.43743 +-1.5181899999999999 24.224699999999999 1.43743 +-1.7818799999999999 26.1035 1.43743 +-3.2651300000000001 26.1035 1.4703900000000001 +3.0524300000000002 130.953 1.5692699999999999 +-4.1440999999999999 22.3569 1.50335 +-4.5286400000000002 26.1035 1.5253300000000001 +-5.1878700000000002 33.585700000000003 1.58026 +-5.1878700000000002 31.7179 1.58026 +-5.1878700000000002 24.224699999999999 1.9318500000000001 +-5.0450400000000002 35.464500000000001 1.5692699999999999 +-4.8802300000000001 31.7179 1.55829 +-4.8802300000000001 33.585700000000003 1.55829 +-1.5181899999999999 89.762500000000003 1.43743 +-1.7818799999999999 91.630300000000005 1.43743 +-5.0450400000000002 29.850100000000001 1.5692699999999999 +-4.8802300000000001 29.850100000000001 1.55829 +-4.8802300000000001 27.971299999999999 1.55829 +-4.8802300000000001 26.1035 1.55829 +-4.8802300000000001 24.224699999999999 1.55829 +-4.8802300000000001 22.3569 1.55829 +-4.8802300000000001 20.489100000000001 1.55829 +-4.8802300000000001 16.7425 1.55829 +-4.8802300000000001 18.610299999999999 1.55829 +-5.0450400000000002 16.7425 1.5692699999999999 +-4.7154199999999999 14.8637 1.5472999999999999 +-4.8802300000000001 14.8637 1.55829 +-2.7816999999999998 132.821 2.0636899999999998 +-4.8802300000000001 39.210999999999999 1.55829 +-5.0450400000000002 41.078800000000001 1.5692699999999999 +-4.8802300000000001 42.946599999999997 1.55829 +-4.8802300000000001 41.078800000000001 1.55829 +-5.0450400000000002 46.693199999999997 1.5692699999999999 +-4.8802300000000001 46.693199999999997 1.55829 +-4.8802300000000001 50.439799999999998 1.55829 +-1.5181899999999999 54.186399999999999 1.43743 +-1.5181899999999999 56.065199999999997 1.43743 +-5.0450400000000002 52.307600000000001 1.5692699999999999 +-4.8802300000000001 54.186399999999999 1.55829 +-5.0450400000000002 57.921999999999997 1.5692699999999999 +-5.0450400000000002 67.283000000000001 1.5692699999999999 +-4.8802300000000001 67.283000000000001 1.55829 +-5.0450400000000002 76.654899999999998 1.5692699999999999 +0.80008000000000001 56.065199999999997 1.4594 +-4.8802300000000001 78.5227 1.55829 +-5.0450400000000002 82.269300000000001 1.5692699999999999 +-4.8802300000000001 86.015900000000002 1.55829 +-5.0450400000000002 86.015900000000002 1.5692699999999999 +-5.0450400000000002 89.762500000000003 1.5692699999999999 +-4.8802300000000001 91.630300000000005 1.55829 +-4.8802300000000001 95.376900000000006 1.55829 +3.67869 26.1035 1.64618 +-5.0450400000000002 97.244699999999995 1.5692699999999999 +-5.0450400000000002 101.002 1.5692699999999999 +-4.8802300000000001 108.48399999999999 1.55829 +-5.0450400000000002 112.22 1.5692699999999999 +-4.8802300000000001 119.71299999999999 1.55829 +-5.0450400000000002 119.71299999999999 1.5692699999999999 +-5.0450400000000002 121.592 1.5692699999999999 +-5.0450400000000002 127.206 1.5692699999999999 +-4.8802300000000001 127.206 1.55829 +-4.5286400000000002 54.186399999999999 1.98678 +-5.0450400000000002 129.07400000000001 1.5692699999999999 +-5.0450400000000002 132.821 1.5692699999999999 +-5.0450400000000002 130.953 1.5692699999999999 +-4.8802300000000001 132.821 1.55829 +-4.8802300000000001 136.56700000000001 1.55829 +-5.0450400000000002 140.31399999999999 1.5692699999999999 +3.9973100000000001 33.585700000000003 1.7450699999999999 +1.2725200000000001 106.60599999999999 2.0417200000000002 +1.04179 104.738 2.0527000000000002 +-4.7154199999999999 130.953 1.5472999999999999 +-4.8802300000000001 130.953 1.55829 +-4.8802300000000001 125.339 1.55829 +-4.7154199999999999 115.97799999999999 1.5472999999999999 +-4.7154199999999999 112.22 1.5472999999999999 +-4.7154199999999999 110.363 1.5472999999999999 +-4.8802300000000001 112.22 1.55829 +-4.8802300000000001 110.363 1.55829 +-2.7816999999999998 69.161799999999999 2.0636899999999998 +-4.8802300000000001 106.60599999999999 1.55829 +-4.7154199999999999 89.762500000000003 1.5472999999999999 +-4.8802300000000001 84.148099999999999 1.55829 +-4.7154199999999999 76.654899999999998 1.5472999999999999 +-4.8802300000000001 76.654899999999998 1.55829 +-4.8802300000000001 56.065199999999997 1.55829 +2.8876200000000001 61.668599999999998 1.55829 +-4.8802300000000001 44.825400000000002 1.55829 +-4.5286400000000002 31.7179 1.5253300000000001 +-3.0234200000000002 31.7179 1.4594 +-2.53999 31.7179 1.44842 +-2.7816999999999998 33.585700000000003 1.4594 +-2.0345800000000001 33.585700000000003 1.44842 +-1.7818799999999999 33.585700000000003 1.43743 +-1.5181899999999999 33.585700000000003 1.43743 +-1.7818799999999999 59.800800000000002 1.43743 +-2.0345800000000001 61.668599999999998 1.44842 +-0.47442000000000001 33.585700000000003 1.43743 +-1.5181899999999999 52.307600000000001 1.43743 +2.5360399999999998 12.995900000000001 1.5253300000000001 +-5.1878700000000002 59.800800000000002 1.9318500000000001 +2.72282 57.921999999999997 1.9758 +0.29467500000000002 33.585700000000003 1.44842 +0.29467500000000002 31.7179 1.44842 +0.54737800000000003 29.850100000000001 1.44842 +0.29467500000000002 27.971299999999999 1.44842 +0.041973099999999999 26.1035 1.44842 +-0.21073 27.971299999999999 1.43743 +-0.990811 26.1035 1.43743 +-1.7818799999999999 27.971299999999999 1.43743 +-2.53999 26.1035 1.44842 +-2.7816999999999998 26.1035 1.4594 +-2.7816999999999998 27.971299999999999 1.4594 +-3.0234200000000002 26.1035 1.4594 +-4.3418599999999996 27.971299999999999 1.51434 +-4.3418599999999996 26.1035 1.51434 +-4.7154199999999999 29.850100000000001 1.5472999999999999 +1.50325 72.9084 1.4813799999999999 +-5.9899199999999997 119.71299999999999 1.7450699999999999 +-4.1440999999999999 31.7179 1.50335 +-2.53999 29.850100000000001 1.44842 +-2.7816999999999998 31.7179 1.4594 +-2.28728 29.850100000000001 1.44842 +-2.28728 31.7179 1.44842 +-2.0345800000000001 31.7179 1.44842 +-1.2544999999999999 29.850100000000001 1.43743 +-0.990811 29.850100000000001 1.43743 +0.29467500000000002 110.363 2.0746799999999999 +-0.47442000000000001 29.850100000000001 1.43743 +-0.73810900000000002 31.7179 1.43743 +0.041973099999999999 29.850100000000001 1.44842 +0.041973099999999999 27.971299999999999 1.44842 +-0.73810900000000002 27.971299999999999 1.43743 +-0.990811 27.971299999999999 1.43743 +-1.5181899999999999 27.971299999999999 1.43743 +-2.0345800000000001 29.850100000000001 1.44842 +-2.0345800000000001 27.971299999999999 1.44842 +-2.7816999999999998 29.850100000000001 1.4594 +-3.49586 69.161799999999999 2.0417200000000002 +-3.7155999999999998 67.283000000000001 2.0307300000000001 +-3.0234200000000002 29.850100000000001 1.4594 +-3.2651300000000001 29.850100000000001 1.4703900000000001 +-3.49586 16.7425 1.4813799999999999 +-3.2651300000000001 18.610299999999999 1.4703900000000001 +-3.49586 20.489100000000001 1.4813799999999999 +1.9427300000000001 18.610299999999999 1.50335 +-3.49586 29.850100000000001 1.4813799999999999 +-3.49586 33.585700000000003 1.4813799999999999 +-3.49586 35.464500000000001 1.4813799999999999 +-3.2651300000000001 37.332299999999996 1.4703900000000001 +-3.49586 39.210999999999999 1.4813799999999999 +-3.2651300000000001 41.078800000000001 1.4703900000000001 +-3.49586 41.078800000000001 1.4813799999999999 +-4.8802300000000001 99.123500000000007 1.55829 +-5.0450400000000002 99.123500000000007 1.5692699999999999 +3.9973100000000001 99.123500000000007 1.7450699999999999 +-3.49586 52.307600000000001 1.4813799999999999 +-3.2651300000000001 54.186399999999999 1.4703900000000001 +-3.49586 57.921999999999997 1.4813799999999999 +-3.2651300000000001 57.921999999999997 1.4703900000000001 +-3.49586 67.283000000000001 1.4813799999999999 +-3.2651300000000001 67.283000000000001 1.4703900000000001 +-3.2651300000000001 71.040599999999998 1.4703900000000001 +-3.2651300000000001 76.654899999999998 1.4703900000000001 +-3.49586 76.654899999999998 1.4813799999999999 +-3.49586 80.401499999999999 1.4813799999999999 +-3.2651300000000001 82.269300000000001 1.4703900000000001 +3.94238 46.693199999999997 1.71211 +3.9753400000000001 44.825400000000002 1.72309 +-3.49586 86.015900000000002 1.4813799999999999 +-3.49586 84.148099999999999 1.4813799999999999 +-3.49586 87.883700000000005 1.4813799999999999 +-3.2651300000000001 86.015900000000002 1.4703900000000001 +3.8984299999999998 78.5227 1.8219799999999999 +-3.2651300000000001 91.630300000000005 1.4703900000000001 +-3.49586 95.376900000000006 1.4813799999999999 +-3.2651300000000001 97.244699999999995 1.4703900000000001 +-3.49586 104.738 1.4813799999999999 +-3.2651300000000001 108.48399999999999 1.4703900000000001 +-0.73810900000000002 16.7425 2.0746799999999999 +-3.49586 115.97799999999999 1.4813799999999999 +-3.49586 114.099 1.4813799999999999 +-3.2651300000000001 115.97799999999999 1.4703900000000001 +3.7555999999999998 67.283000000000001 1.85494 +-3.49586 121.592 1.4813799999999999 +-3.49586 127.206 1.4813799999999999 +-4.5286400000000002 130.953 1.98678 +-3.2651300000000001 129.07400000000001 1.4703900000000001 +-3.49586 129.07400000000001 1.4813799999999999 +-3.2651300000000001 130.953 1.4703900000000001 +-3.2651300000000001 132.821 1.4703900000000001 +-3.2651300000000001 136.56700000000001 1.4703900000000001 +-3.49586 136.56700000000001 1.4813799999999999 +-3.49586 134.69999999999999 2.0417200000000002 +4.0083000000000002 86.015900000000002 1.7560500000000001 +-3.2651300000000001 138.435 1.4703900000000001 +-3.9353400000000001 29.850100000000001 1.50335 +-3.9353400000000001 31.7179 1.50335 +2.5360399999999998 108.48399999999999 1.98678 +-3.9353400000000001 33.585700000000003 1.50335 +-3.9353400000000001 37.332299999999996 1.50335 +-3.7155999999999998 44.825400000000002 1.4923599999999999 +-3.9353400000000001 46.693199999999997 1.50335 +-3.9353400000000001 48.572000000000003 1.50335 +-3.7155999999999998 50.439799999999998 1.4923599999999999 +3.8984299999999998 132.821 1.6901299999999999 +2.8876200000000001 140.31399999999999 1.55829 +3.0524300000000002 140.31399999999999 1.5692699999999999 +-3.7155999999999998 52.307600000000001 1.4923599999999999 +3.67869 108.48399999999999 1.8769100000000001 +-3.7155999999999998 56.065199999999997 1.4923599999999999 +-3.9353400000000001 56.065199999999997 1.50335 +-3.9353400000000001 59.800800000000002 1.50335 +-3.7155999999999998 67.283000000000001 1.4923599999999999 +-3.7155999999999998 69.161799999999999 1.4923599999999999 +-3.7155999999999998 74.787099999999995 1.4923599999999999 +-3.7155999999999998 80.401499999999999 1.4923599999999999 +-3.9353400000000001 82.269300000000001 1.50335 +-3.7155999999999998 82.269300000000001 1.4923599999999999 +-3.9353400000000001 84.148099999999999 1.50335 +-0.73810900000000002 97.244699999999995 2.0746799999999999 +-3.7155999999999998 87.883700000000005 1.4923599999999999 +-3.9353400000000001 87.883700000000005 1.50335 +-3.7155999999999998 97.244699999999995 1.4923599999999999 +-3.7155999999999998 99.123500000000007 1.4923599999999999 +-3.9353400000000001 99.123500000000007 1.50335 +-3.9353400000000001 101.002 1.50335 +-3.7155999999999998 101.002 1.4923599999999999 +-3.9353400000000001 102.85899999999999 1.50335 +-3.7155999999999998 104.738 1.4923599999999999 +-3.9353400000000001 104.738 1.50335 +3.5688200000000001 54.186399999999999 1.8878999999999999 +-3.7155999999999998 108.48399999999999 1.4923599999999999 +-3.9353400000000001 112.22 1.50335 +-3.7155999999999998 114.099 1.4923599999999999 +-3.9353400000000001 115.97799999999999 1.50335 +-3.9353400000000001 117.845 1.50335 +-3.7155999999999998 123.45999999999999 1.4923599999999999 +-0.47442000000000001 22.3569 1.43743 +-3.9353400000000001 127.206 1.50335 +-3.7155999999999998 134.69999999999999 1.4923599999999999 +-3.9353400000000001 134.69999999999999 1.50335 +-3.7155999999999998 138.435 1.4923599999999999 +-3.9353400000000001 138.435 1.50335 +-0.990811 61.668599999999998 1.43743 +-3.49586 140.31399999999999 1.4813799999999999 +-3.7155999999999998 142.18199999999999 1.4923599999999999 +-0.47442000000000001 130.953 1.43743 +-0.47442000000000001 132.821 1.43743 +-3.49586 132.821 1.4813799999999999 +-3.49586 134.69999999999999 1.4813799999999999 +-3.49586 130.953 1.4813799999999999 +-3.7155999999999998 132.821 1.4923599999999999 +-4.8802300000000001 57.921999999999997 1.9648099999999999 +-3.7155999999999998 125.339 1.4923599999999999 +-3.49586 125.339 1.4813799999999999 +-2.28728 134.69999999999999 1.44842 +-3.49586 123.45999999999999 1.4813799999999999 +-3.7155999999999998 121.592 1.4923599999999999 +-3.49586 119.71299999999999 1.4813799999999999 +-3.7155999999999998 119.71299999999999 1.4923599999999999 +-3.7155999999999998 115.97799999999999 1.4923599999999999 +-4.1440999999999999 22.3569 2.0087600000000001 +-3.7155999999999998 112.22 1.4923599999999999 +-3.49586 112.22 1.4813799999999999 +-3.7155999999999998 110.363 1.4923599999999999 +2.72282 101.002 1.9758 +-3.49586 110.363 1.4813799999999999 +-3.49586 106.60599999999999 1.4813799999999999 +-3.7155999999999998 106.60599999999999 1.4923599999999999 +-3.7155999999999998 102.85899999999999 1.4923599999999999 +0.54737800000000003 65.426199999999994 1.44842 +-3.49586 99.123500000000007 1.4813799999999999 +-3.7155999999999998 95.376900000000006 1.4923599999999999 +-3.49586 93.498099999999994 1.4813799999999999 +-3.7155999999999998 91.630300000000005 1.4923599999999999 +3.1952600000000002 114.099 1.9318500000000001 +3.8984299999999998 114.099 1.8219799999999999 +3.94238 115.97799999999999 1.8109900000000001 +-3.7155999999999998 76.654899999999998 1.4923599999999999 +-3.7155999999999998 78.5227 1.4923599999999999 +-3.49586 69.161799999999999 1.4813799999999999 +-1.2544999999999999 80.401499999999999 1.43743 +-3.49586 65.426199999999994 1.4813799999999999 +3.94238 106.60599999999999 1.71211 +-3.49586 61.668599999999998 1.4813799999999999 +-3.49586 59.800800000000002 1.4813799999999999 +-3.7155999999999998 59.800800000000002 1.4923599999999999 +-3.7155999999999998 54.186399999999999 1.4923599999999999 +-3.49586 46.693199999999997 1.4813799999999999 +0.041973099999999999 39.210999999999999 1.44842 +-3.7155999999999998 41.078800000000001 1.4923599999999999 +-3.7155999999999998 39.210999999999999 1.4923599999999999 +-3.49586 37.332299999999996 1.4813799999999999 +-3.7155999999999998 37.332299999999996 1.4923599999999999 +-3.49586 26.1035 1.4813799999999999 +3.1952600000000002 33.585700000000003 1.9318500000000001 +-3.7155999999999998 20.489100000000001 1.4923599999999999 +-3.49586 14.8637 1.4813799999999999 +-3.7155999999999998 14.8637 1.4923599999999999 +-3.7155999999999998 18.610299999999999 1.4923599999999999 +-3.7155999999999998 16.7425 1.4923599999999999 +-3.9353400000000001 22.3569 1.50335 +-3.9353400000000001 26.1035 1.50335 +-4.1440999999999999 26.1035 1.50335 +-4.1440999999999999 27.971299999999999 1.50335 +-4.5286400000000002 142.18199999999999 1.5253300000000001 +-4.5286400000000002 140.31399999999999 1.5253300000000001 +-4.3418599999999996 136.56700000000001 1.51434 +-4.3418599999999996 132.821 1.51434 +-4.5286400000000002 132.821 1.5253300000000001 +-4.3418599999999996 130.953 1.51434 +2.72282 63.547400000000003 1.9758 +-4.5286400000000002 130.953 1.5253300000000001 +-4.5286400000000002 127.206 1.5253300000000001 +-4.3418599999999996 123.45999999999999 1.51434 +-4.3418599999999996 121.592 1.51434 +-4.5286400000000002 121.592 1.5253300000000001 +-4.3418599999999996 117.845 1.51434 +-4.3418599999999996 119.71299999999999 1.51434 +-4.5286400000000002 117.845 1.5253300000000001 +-4.3418599999999996 114.099 1.51434 +-4.3418599999999996 112.22 1.51434 +-4.5286400000000002 114.099 1.5253300000000001 +-4.5286400000000002 112.22 1.5253300000000001 +-4.3418599999999996 106.60599999999999 1.51434 +-4.5286400000000002 106.60599999999999 1.5253300000000001 +-4.5286400000000002 102.85899999999999 1.5253300000000001 +-4.3418599999999996 99.123500000000007 1.51434 +-4.3418599999999996 101.002 1.51434 +-4.3418599999999996 95.376900000000006 1.51434 +-4.3418599999999996 87.883700000000005 1.51434 +-4.5286400000000002 87.883700000000005 1.5253300000000001 +-4.5286400000000002 86.015900000000002 1.5253300000000001 +-4.5286400000000002 82.269300000000001 1.5253300000000001 +-4.3418599999999996 82.269300000000001 1.51434 +-4.5286400000000002 80.401499999999999 1.5253300000000001 +-4.3418599999999996 80.401499999999999 1.51434 +-4.5286400000000002 76.654899999999998 1.5253300000000001 +-4.3418599999999996 74.787099999999995 1.51434 +-4.5286400000000002 69.161799999999999 1.5253300000000001 +-4.3418599999999996 67.283000000000001 1.51434 +-5.93499 101.002 1.8109900000000001 +-4.3418599999999996 63.547400000000003 1.51434 +-4.5286400000000002 59.800800000000002 1.5253300000000001 +-4.3418599999999996 59.800800000000002 1.51434 +-4.1440999999999999 91.630300000000005 2.0087600000000001 +-4.3418599999999996 57.921999999999997 1.51434 +3.9973100000000001 95.376900000000006 1.7450699999999999 +-4.5286400000000002 54.186399999999999 1.5253300000000001 +-4.3418599999999996 48.572000000000003 1.51434 +-0.990811 110.363 1.43743 +3.94238 72.9084 1.71211 +3.8984299999999998 74.787099999999995 1.6901299999999999 +0.80008000000000001 117.845 2.0636899999999998 +-4.3418599999999996 93.498099999999994 1.51434 +-4.5286400000000002 41.078800000000001 1.5253300000000001 +-4.3418599999999996 39.210999999999999 1.51434 +-4.5286400000000002 37.332299999999996 1.5253300000000001 +-4.5286400000000002 39.210999999999999 1.5253300000000001 +-4.3418599999999996 35.464500000000001 1.51434 +-5.8251200000000001 59.800800000000002 1.84395 +-5.8251200000000001 57.921999999999997 1.84395 +-4.3418599999999996 29.850100000000001 1.51434 +-4.5286400000000002 27.971299999999999 1.5253300000000001 +-5.93499 16.7425 1.71211 +-4.3418599999999996 24.224699999999999 1.51434 +-4.5286400000000002 18.610299999999999 1.5253300000000001 +-4.5286400000000002 20.489100000000001 1.5253300000000001 +1.7339800000000001 117.845 2.0307300000000001 +-3.9353400000000001 27.971299999999999 1.50335 +-4.7154199999999999 119.71299999999999 1.9758 +-3.0234200000000002 20.489100000000001 1.4594 +1.04179 130.953 2.0527000000000002 +-5.66031 26.1035 1.64618 +-3.0234200000000002 102.85899999999999 1.4594 +2.8876200000000001 54.186399999999999 1.55829 +-2.28728 65.426199999999994 2.0746799999999999 +3.1952600000000002 110.363 1.58026 +-5.1878700000000002 78.5227 1.9318500000000001 +2.72282 127.206 1.9758 +3.1952600000000002 125.339 1.58026 +-3.0234200000000002 101.002 1.4594 +-3.0234200000000002 99.123500000000007 1.4594 +-5.3197099999999997 127.206 1.6022400000000001 +3.3380899999999998 104.738 1.6022400000000001 +-4.1440999999999999 44.825400000000002 1.50335 +-0.21073 18.610299999999999 2.0746799999999999 +-3.7155999999999998 31.7179 1.4923599999999999 +-3.49586 31.7179 1.4813799999999999 +-5.7482100000000003 91.630300000000005 1.65717 +-5.7482100000000003 84.148099999999999 1.65717 +-5.8251200000000001 86.015900000000002 1.6791400000000001 +0.54737800000000003 57.921999999999997 2.0636899999999998 +2.3492600000000001 93.498099999999994 1.99777 +-5.8800499999999998 74.787099999999995 1.8219799999999999 +-5.8251200000000001 76.654899999999998 1.84395 +-5.66031 50.439799999999998 1.64618 +1.50325 14.8637 1.4813799999999999 +1.7339800000000001 12.995900000000001 1.4923599999999999 +-5.7482100000000003 130.953 1.85494 +2.1514899999999999 115.97799999999999 1.50335 +-2.28728 101.002 2.0746799999999999 +-0.47442000000000001 136.56700000000001 2.0746799999999999 +-5.5614299999999997 39.210999999999999 1.8878999999999999 +1.9427300000000001 22.3569 1.50335 +0.54737800000000003 63.547400000000003 2.0636899999999998 +-3.9353400000000001 87.883700000000005 2.0197400000000001 +-5.93499 86.015900000000002 1.71211 +-5.8800499999999998 86.015900000000002 1.6901299999999999 +-4.7154199999999999 26.1035 1.5472999999999999 +-4.3418599999999996 46.693199999999997 1.99777 +-4.1440999999999999 91.630300000000005 1.50335 +3.67869 89.762500000000003 1.64618 +-5.9899199999999997 87.883700000000005 1.7450699999999999 +1.9427300000000001 39.210999999999999 1.50335 +2.1514899999999999 37.332299999999996 1.50335 +-5.7482100000000003 18.610299999999999 1.65717 +-5.9899199999999997 29.850100000000001 1.77803 +-5.9679500000000001 31.7179 1.7890200000000001 +2.3492600000000001 71.040599999999998 1.99777 +0.54737800000000003 41.078800000000001 2.0636899999999998 +-1.7818799999999999 86.015900000000002 1.43743 +-5.3197099999999997 56.065199999999997 1.6022400000000001 +2.1514899999999999 132.821 1.50335 +-0.47442000000000001 89.762500000000003 1.43743 +-5.8251200000000001 63.547400000000003 1.84395 +3.9973100000000001 106.60599999999999 1.7450699999999999 +3.4589500000000002 97.244699999999995 1.6132200000000001 +3.9753400000000001 61.668599999999998 1.7890200000000001 +-3.7155999999999998 129.07400000000001 2.0307300000000001 +1.50325 123.45999999999999 1.4813799999999999 +3.3380899999999998 134.69999999999999 1.92086 +0.041973099999999999 65.426199999999994 2.0746799999999999 +0.041973099999999999 63.547400000000003 2.0746799999999999 +2.72282 78.5227 1.5472999999999999 +1.9427300000000001 33.585700000000003 1.50335 +0.54737800000000003 44.825400000000002 2.0636899999999998 +-4.3418599999999996 27.971299999999999 1.99777 +-3.9353400000000001 84.148099999999999 2.0197400000000001 +-5.1878700000000002 26.1035 1.9318500000000001 +-5.8800499999999998 115.97799999999999 1.6901299999999999 +3.3380899999999998 93.498099999999994 1.92086 +-1.7818799999999999 102.85899999999999 1.43743 +-2.7816999999999998 74.787099999999995 2.0636899999999998 +-0.73810900000000002 95.376900000000006 1.43743 +-3.0234200000000002 33.585700000000003 1.4594 +-3.2651300000000001 35.464500000000001 1.4703900000000001 +2.72282 59.800800000000002 1.5472999999999999 +1.50325 37.332299999999996 2.0417200000000002 +-5.8800499999999998 39.210999999999999 1.8219799999999999 +-4.8802300000000001 80.401499999999999 1.9648099999999999 +1.50325 117.845 1.4813799999999999 +3.67869 41.078800000000001 1.8769100000000001 +3.5688200000000001 39.210999999999999 1.8878999999999999 +3.67869 52.307600000000001 1.8769100000000001 +3.67869 54.186399999999999 1.8769100000000001 +3.8984299999999998 140.31399999999999 1.6901299999999999 +1.2725200000000001 24.224699999999999 1.4703900000000001 +2.3492600000000001 50.439799999999998 1.51434 +0.80008000000000001 93.498099999999994 2.0636899999999998 +3.67869 125.339 1.64618 +-5.7482100000000003 97.244699999999995 1.65717 +-5.5614299999999997 76.654899999999998 1.6242099999999999 +-5.9679500000000001 119.71299999999999 1.72309 +-5.9679500000000001 117.845 1.72309 +0.54737800000000003 56.065199999999997 1.44842 +2.3492600000000001 117.845 1.99777 +3.1952600000000002 59.800800000000002 1.9318500000000001 +3.4589500000000002 95.376900000000006 1.6132200000000001 +-5.9899199999999997 31.7179 1.77803 +-4.1440999999999999 76.654899999999998 1.50335 +-4.3418599999999996 76.654899999999998 1.51434 +-4.1440999999999999 33.585700000000003 2.0087600000000001 +3.8325100000000001 93.498099999999994 1.6791400000000001 +3.3380899999999998 102.85899999999999 1.6022400000000001 +-3.0234200000000002 71.040599999999998 1.4594 +-3.0234200000000002 35.464500000000001 2.0527000000000002 +-5.3197099999999997 80.401499999999999 1.6022400000000001 +3.7555999999999998 56.065199999999997 1.85494 +-3.7155999999999998 127.206 1.4923599999999999 +3.3380899999999998 121.581 1.92086 +3.4589500000000002 121.581 1.90987 +-3.7155999999999998 27.971299999999999 1.4923599999999999 +-1.5181899999999999 132.821 1.43743 +-5.1878700000000002 80.401499999999999 1.58026 +-2.28728 106.60599999999999 2.0746799999999999 +-5.5614299999999997 65.426199999999994 1.8878999999999999 +-4.3418599999999996 125.339 1.99777 +-1.7818799999999999 134.69999999999999 2.0746799999999999 +-1.5181899999999999 134.69999999999999 2.0746799999999999 +-4.3418599999999996 127.206 1.99777 +-5.8800499999999998 123.45999999999999 1.6901299999999999 +4.0083000000000002 89.762500000000003 1.7560500000000001 +-5.5614299999999997 78.5227 1.6242099999999999 +3.67869 78.5227 1.8769100000000001 +-4.1440999999999999 101.002 1.50335 +3.8325100000000001 72.9084 1.84395 +3.8325100000000001 39.210999999999999 1.84395 +-3.49586 138.435 1.4813799999999999 +3.94238 140.31399999999999 1.71211 +4.0083000000000002 136.56700000000001 1.7560500000000001 +3.9973100000000001 136.56700000000001 1.7450699999999999 +0.54737800000000003 78.5227 2.0636899999999998 +1.04179 87.883700000000005 1.4594 +1.2725200000000001 86.015900000000002 1.4703900000000001 +-1.2544999999999999 59.800800000000002 1.43743 +-1.7818799999999999 106.60599999999999 1.43743 +-2.0345800000000001 41.078800000000001 1.44842 +3.3380899999999998 142.18199999999999 1.6022400000000001 +-5.4515599999999997 95.376900000000006 1.6132200000000001 +-5.66031 127.206 1.8769100000000001 +3.7555999999999998 61.668599999999998 1.85494 +3.8325100000000001 61.668599999999998 1.84395 +3.7555999999999998 89.762500000000003 1.85494 +-4.5286400000000002 72.9084 1.5253300000000001 +2.8876200000000001 121.581 1.55829 +-5.9899199999999997 114.099 1.77803 +-5.3197099999999997 101.002 1.92086 +-5.93499 78.5227 1.71211 +3.94238 123.45999999999999 1.8109900000000001 +-1.2544999999999999 130.953 1.43743 +1.50325 27.971299999999999 2.0417200000000002 +-4.1440999999999999 119.71299999999999 2.0087600000000001 +-3.9353400000000001 119.71299999999999 2.0197400000000001 +3.8325100000000001 95.376900000000006 1.6791400000000001 +-5.7482100000000003 33.585700000000003 1.85494 +0.041973099999999999 91.630300000000005 1.44842 +0.041973099999999999 80.401499999999999 2.0746799999999999 +2.5360399999999998 80.401499999999999 1.98678 +0.80008000000000001 57.921999999999997 1.4594 +3.4589500000000002 89.762500000000003 1.6132200000000001 +2.3492600000000001 26.1035 1.51434 +2.1514899999999999 27.971299999999999 1.50335 +1.04179 121.592 1.4594 +3.94238 65.426199999999994 1.71211 +-2.28728 117.845 2.0746799999999999 +3.8984299999999998 35.464500000000001 1.6901299999999999 +1.50325 97.244699999999995 2.0417200000000002 +-5.5614299999999997 52.307600000000001 1.6242099999999999 +-5.4515599999999997 52.307600000000001 1.6132200000000001 +-4.8802300000000001 65.426199999999994 1.55829 +1.50325 72.9084 2.0417200000000002 +-5.9899199999999997 27.971299999999999 1.7450699999999999 +-5.4515599999999997 63.547400000000003 1.6132200000000001 +3.9753400000000001 112.22 1.72309 +-2.28728 26.1035 1.44842 +-3.7155999999999998 140.31399999999999 2.0307300000000001 +-2.0345800000000001 86.015900000000002 1.44842 +-4.8802300000000001 93.498099999999994 1.55829 +2.1514899999999999 54.186399999999999 1.50335 +-0.990811 72.9084 2.0746799999999999 +3.7555999999999998 59.800800000000002 1.85494 +3.5688200000000001 48.572000000000003 1.6242099999999999 +3.5688200000000001 142.18199999999999 1.6242099999999999 +-4.7154199999999999 121.581 1.9758 +-4.8802300000000001 14.8637 1.9648099999999999 +3.9753400000000001 52.307600000000001 1.7890200000000001 +3.9973100000000001 52.307600000000001 1.77803 +2.1514899999999999 59.800800000000002 1.50335 +-4.7154199999999999 65.426199999999994 1.5472999999999999 +3.67869 106.60599999999999 1.64618 +-1.2544999999999999 91.630300000000005 2.0746799999999999 +-0.21073 86.015900000000002 1.43743 +-5.1878700000000002 136.56700000000001 1.9318500000000001 +-2.28728 26.1035 2.0746799999999999 +3.8984299999999998 99.123500000000007 1.6901299999999999 +4.0083000000000002 16.7425 1.7560500000000001 +3.9973100000000001 14.8637 1.77803 +-3.0234200000000002 138.435 1.4594 +2.72282 86.015900000000002 1.9758 +2.8876200000000001 86.015900000000002 1.9648099999999999 +2.5360399999999998 42.946599999999997 1.98678 +-5.93499 132.821 1.71211 +3.7555999999999998 130.953 1.65717 +-2.53999 33.585700000000003 1.44842 +3.94238 80.401499999999999 1.8109900000000001 +-2.28728 44.825400000000002 2.0746799999999999 +3.0524300000000002 59.800800000000002 1.9428300000000001 +3.67869 59.800800000000002 1.64618 +-5.66031 101.002 1.8769100000000001 +2.3492600000000001 104.738 1.99777 +-5.9679500000000001 140.31399999999999 1.72309 +1.04179 26.1035 2.0527000000000002 +-4.8802300000000001 134.69999999999999 1.9648099999999999 +2.72282 121.581 1.9758 +2.5360399999999998 119.71299999999999 1.98678 +-5.9679500000000001 132.821 1.72309 +0.041973099999999999 95.376900000000006 2.0746799999999999 +0.041973099999999999 130.953 2.0746799999999999 +-3.2651300000000001 59.800800000000002 1.4703900000000001 +-1.5181899999999999 97.244699999999995 1.43743 +-5.0450400000000002 106.60599999999999 1.5692699999999999 +1.7339800000000001 134.69999999999999 2.0307300000000001 +3.94238 91.630300000000005 1.71211 +3.9973100000000001 82.269300000000001 1.7450699999999999 +-0.47442000000000001 112.22 2.0746799999999999 +2.1514899999999999 97.244699999999995 2.0087600000000001 +-2.7816999999999998 93.498099999999994 1.4594 +-2.53999 121.592 1.44842 +1.2725200000000001 69.161799999999999 1.4703900000000001 +-5.7482100000000003 121.581 1.85494 +-1.7818799999999999 140.31399999999999 2.0746799999999999 +-3.2651300000000001 127.206 1.4703900000000001 +1.50325 24.224699999999999 2.0417200000000002 +-5.8251200000000001 134.69999999999999 1.6791400000000001 +3.0524300000000002 115.97799999999999 1.9428300000000001 +3.0524300000000002 86.015900000000002 1.9428300000000001 +-0.21073 35.464500000000001 1.43743 +3.9753400000000001 84.148099999999999 1.72309 +3.9753400000000001 87.883700000000005 1.7890200000000001 +2.1514899999999999 112.22 2.0087600000000001 +2.1514899999999999 114.099 2.0087600000000001 +-5.5614299999999997 119.71299999999999 1.6242099999999999 +2.72282 18.610299999999999 1.9758 +3.5688200000000001 106.60599999999999 1.8878999999999999 +2.72282 129.07400000000001 1.5472999999999999 +2.8876200000000001 127.206 1.55829 +-5.9899199999999997 112.22 1.7450699999999999 +-5.1878700000000002 136.56700000000001 1.58026 +-5.0450400000000002 134.69999999999999 1.5692699999999999 +3.0524300000000002 97.244699999999995 1.9428300000000001 +-5.7482100000000003 61.668599999999998 1.85494 +-5.0450400000000002 31.7179 1.5692699999999999 +-5.0450400000000002 33.585700000000003 1.5692699999999999 +-3.9353400000000001 108.48399999999999 1.50335 +-2.53999 24.224699999999999 1.44842 +2.72282 123.45999999999999 1.9758 +2.8876200000000001 125.339 1.9648099999999999 +0.54737800000000003 127.206 2.0636899999999998 +-5.5614299999999997 106.60599999999999 1.6242099999999999 +2.1514899999999999 97.244699999999995 1.50335 +-5.7482100000000003 119.71299999999999 1.65717 +-5.8800499999999998 71.040599999999998 1.6901299999999999 +-5.93499 72.9084 1.71211 +0.29467500000000002 54.186399999999999 1.44842 +1.7339800000000001 127.206 1.4923599999999999 +-5.0450400000000002 130.953 1.9428300000000001 +4.0083000000000002 48.572000000000003 1.7560500000000001 +-5.66031 121.581 1.8769100000000001 +-4.8802300000000001 52.307600000000001 1.55829 +3.8325100000000001 87.883700000000005 1.6791400000000001 +-3.2651300000000001 59.800800000000002 2.0417200000000002 +-3.2651300000000001 57.921999999999997 2.0417200000000002 +-5.7482100000000003 35.464500000000001 1.85494 +2.5360399999999998 22.3569 1.5253300000000001 +1.9427300000000001 74.787099999999995 1.50335 +3.3380899999999998 24.224699999999999 1.92086 +-4.5286400000000002 52.307600000000001 1.5253300000000001 +-5.66031 48.572000000000003 1.64618 +-5.9899199999999997 101.002 1.7450699999999999 +3.0524300000000002 106.60599999999999 1.9428300000000001 +-5.7482100000000003 63.547400000000003 1.85494 +3.7555999999999998 121.581 1.65717 +3.8325100000000001 121.581 1.6791400000000001 +-4.1440999999999999 86.015900000000002 1.50335 +1.2725200000000001 136.56700000000001 2.0417200000000002 +-2.0345800000000001 54.186399999999999 2.0746799999999999 +1.2725200000000001 84.148099999999999 2.0417200000000002 +1.7339800000000001 26.1035 1.4923599999999999 +-0.47442000000000001 44.825400000000002 2.0746799999999999 +-1.2544999999999999 119.71299999999999 1.43743 +-2.0345800000000001 114.099 1.44842 +2.8876200000000001 56.065199999999997 1.9648099999999999 +3.1952600000000002 84.148099999999999 1.9318500000000001 +3.7555999999999998 86.015900000000002 1.65717 +2.5360399999999998 117.845 1.5253300000000001 +-5.8800499999999998 132.821 1.6901299999999999 +-5.66031 80.401499999999999 1.64618 +3.9753400000000001 142.18199999999999 1.72309 +3.3380899999999998 71.040599999999998 1.92086 +3.4589500000000002 72.9084 1.90987 +-0.73810900000000002 140.31399999999999 1.43743 +-0.990811 142.18199999999999 1.43743 +-5.4515599999999997 56.065199999999997 1.6132200000000001 +-2.7816999999999998 134.69999999999999 1.4594 +-3.0234200000000002 136.56700000000001 1.4594 +2.8876200000000001 87.883700000000005 1.55829 +-1.2544999999999999 61.668599999999998 2.0746799999999999 +-3.49586 72.9084 1.4813799999999999 +-2.53999 78.5227 1.44842 +-2.53999 76.654899999999998 1.44842 +2.72282 20.489100000000001 1.9758 +-1.2544999999999999 140.31399999999999 2.0746799999999999 +2.5360399999999998 106.60599999999999 1.5253300000000001 +-4.7154199999999999 117.845 1.9758 +-5.1878700000000002 65.426199999999994 1.58026 +-3.0234200000000002 74.787099999999995 1.4594 +-3.7155999999999998 130.953 2.0307300000000001 +-4.3418599999999996 129.07400000000001 1.51434 +-0.21073 132.821 1.43743 +-4.7154199999999999 89.762500000000003 1.9758 +0.29467500000000002 46.693199999999997 2.0746799999999999 +3.3380899999999998 74.787099999999995 1.92086 +3.8984299999999998 136.56700000000001 1.8219799999999999 +2.72282 104.738 1.9758 +-4.3418599999999996 67.283000000000001 1.99777 +0.041973099999999999 33.585700000000003 1.44842 +-2.0345800000000001 87.883700000000005 1.44842 +-2.28728 89.762500000000003 1.44842 +-5.8800499999999998 71.040599999999998 1.8219799999999999 +-4.1440999999999999 39.210999999999999 1.50335 +0.29467500000000002 71.040599999999998 2.0746799999999999 +0.29467500000000002 72.9084 2.0746799999999999 +3.7555999999999998 114.099 1.65717 +-1.7818799999999999 97.244699999999995 2.0746799999999999 +2.5360399999999998 46.693199999999997 1.98678 +-2.53999 87.883700000000005 1.44842 +-5.8251200000000001 132.821 1.6791400000000001 +0.54737800000000003 42.946599999999997 2.0636899999999998 +-5.93499 24.224699999999999 1.71211 +0.54737800000000003 67.283000000000001 2.0636899999999998 +2.1514899999999999 44.825400000000002 2.0087600000000001 +-5.1878700000000002 76.654899999999998 1.58026 +-4.5286400000000002 14.8637 1.98678 +-5.8251200000000001 108.48399999999999 1.84395 +-5.8251200000000001 110.363 1.84395 +0.29467500000000002 67.283000000000001 2.0746799999999999 +-4.8802300000000001 27.971299999999999 1.9648099999999999 +3.0524300000000002 33.585700000000003 1.9428300000000001 +-3.9353400000000001 24.224699999999999 1.50335 +-5.5614299999999997 54.186399999999999 1.6242099999999999 +1.50325 138.435 1.4813799999999999 +0.041973099999999999 86.015900000000002 1.44842 +3.7555999999999998 134.69999999999999 1.65717 +-0.73810900000000002 48.572000000000003 1.43743 +-0.73810900000000002 46.693199999999997 1.43743 +-5.8251200000000001 136.56700000000001 1.84395 +-5.5614299999999997 89.762500000000003 1.8878999999999999 +-5.66031 108.48399999999999 1.8769100000000001 +-5.93499 20.489100000000001 1.71211 +3.4589500000000002 97.244699999999995 1.90987 +3.4589500000000002 99.123500000000007 1.90987 +2.5360399999999998 134.69999999999999 1.98678 +1.9427300000000001 37.332299999999996 1.50335 +-4.1440999999999999 59.800800000000002 1.50335 +-1.5181899999999999 108.48399999999999 1.43743 +-0.73810900000000002 52.307600000000001 1.43743 +3.3380899999999998 56.065199999999997 1.6022400000000001 +2.5360399999999998 104.738 1.98678 +3.8984299999999998 74.787099999999995 1.8219799999999999 +3.9973100000000001 56.065199999999997 1.77803 +-0.21073 39.210999999999999 1.43743 +1.9427300000000001 102.85899999999999 1.50335 +1.9427300000000001 117.845 1.50335 +-5.9679500000000001 74.787099999999995 1.7890200000000001 +-5.8800499999999998 112.22 1.6901299999999999 +0.54737800000000003 46.693199999999997 2.0636899999999998 +3.67869 63.547400000000003 1.8769100000000001 +-3.9353400000000001 80.401499999999999 1.50335 +-3.9353400000000001 140.31399999999999 1.50335 +-5.0450400000000002 31.7179 1.9428300000000001 +3.8325100000000001 91.630300000000005 1.6791400000000001 +-3.7155999999999998 41.078800000000001 2.0307300000000001 +-1.5181899999999999 102.85899999999999 2.0746799999999999 +2.3492600000000001 57.921999999999997 1.99777 +3.0524300000000002 56.065199999999997 1.5692699999999999 +-4.5286400000000002 104.738 1.98678 +-0.73810900000000002 106.60599999999999 2.0746799999999999 +0.80008000000000001 110.363 2.0636899999999998 +-5.9899199999999997 67.283000000000001 1.77803 +1.7339800000000001 16.7425 2.0307300000000001 +-5.9679500000000001 35.464500000000001 1.72309 +0.54737800000000003 138.435 1.44842 +-0.47442000000000001 29.850100000000001 2.0746799999999999 +-4.7154199999999999 54.186399999999999 1.5472999999999999 +3.1952600000000002 27.971299999999999 1.9318500000000001 +-5.5614299999999997 33.585700000000003 1.6242099999999999 +0.54737800000000003 121.581 2.0636899999999998 +-5.8251200000000001 82.269300000000001 1.84395 +0.80008000000000001 12.995900000000001 2.0636899999999998 +2.72282 82.269300000000001 1.5472999999999999 +-5.8800499999999998 129.07400000000001 1.8219799999999999 +-5.8251200000000001 130.953 1.84395 +-5.1878700000000002 78.5227 1.58026 +-4.8802300000000001 134.69999999999999 1.55829 +-1.5181899999999999 117.845 2.0746799999999999 +2.1514899999999999 12.995900000000001 1.50335 +0.80008000000000001 41.078800000000001 1.4594 +-3.7155999999999998 134.69999999999999 2.0307300000000001 +-2.7816999999999998 123.45999999999999 2.0636899999999998 +-2.53999 125.339 2.0636899999999998 +-5.66031 67.283000000000001 1.64618 +-5.66031 91.630300000000005 1.8769100000000001 +-3.49586 27.971299999999999 1.4813799999999999 +-3.7155999999999998 37.332299999999996 2.0307300000000001 +-0.73810900000000002 86.015900000000002 1.43743 +0.54737800000000003 115.97799999999999 2.0636899999999998 +3.9753400000000001 37.332299999999996 1.72309 +1.7339800000000001 18.610299999999999 2.0307300000000001 +1.50325 18.610299999999999 2.0417200000000002 +3.3380899999999998 123.45999999999999 1.6022400000000001 +-3.7155999999999998 84.148099999999999 2.0307300000000001 +-2.0345800000000001 87.883700000000005 2.0746799999999999 +3.3380899999999998 67.283000000000001 1.92086 +1.9427300000000001 56.065199999999997 1.50335 +3.8984299999999998 138.435 1.8219799999999999 +3.94238 140.31399999999999 1.8109900000000001 +-5.4515599999999997 134.69999999999999 1.6132200000000001 +-4.5286400000000002 87.883700000000005 1.98678 +-0.47442000000000001 37.332299999999996 1.43743 +-1.2544999999999999 114.099 1.43743 +0.54737800000000003 33.585700000000003 1.44842 +2.3492600000000001 114.099 1.99777 +-1.7818799999999999 16.7425 2.0746799999999999 +-5.8251200000000001 140.31399999999999 1.84395 +-5.7482100000000003 142.18199999999999 1.85494 +-5.8251200000000001 39.210999999999999 1.6791400000000001 +-5.66031 87.883700000000005 1.64618 +-5.7482100000000003 65.426199999999994 1.65717 +-5.8251200000000001 65.426199999999994 1.6791400000000001 +-5.9899199999999997 37.332299999999996 1.7450699999999999 +-0.73810900000000002 37.332299999999996 1.43743 +2.8876200000000001 115.97799999999999 1.9648099999999999 +-0.47442000000000001 54.186399999999999 1.43743 +3.0524300000000002 22.3569 1.9428300000000001 +2.8876200000000001 20.489100000000001 1.9648099999999999 +2.5360399999999998 78.5227 1.5253300000000001 +-2.7816999999999998 101.002 2.0636899999999998 +-5.93499 97.244699999999995 1.71211 +-0.73810900000000002 39.210999999999999 1.43743 +-5.3197099999999997 108.48399999999999 1.6022400000000001 +-0.73810900000000002 54.186399999999999 1.43743 +-0.47442000000000001 110.363 2.0746799999999999 +-5.9679500000000001 86.015900000000002 1.72309 +2.1514899999999999 91.630300000000005 1.50335 +-3.2651300000000001 48.572000000000003 2.0417200000000002 +1.9427300000000001 97.244699999999995 1.50335 +-1.2544999999999999 16.7425 1.43743 +-2.7816999999999998 108.48399999999999 1.4594 +-1.7818799999999999 101.002 1.43743 +-5.0450400000000002 108.48399999999999 1.5692699999999999 +-2.28728 41.078800000000001 1.44842 +-2.53999 102.85899999999999 2.0636899999999998 +-2.28728 104.738 2.0746799999999999 +-5.93499 130.953 1.8109900000000001 +0.80008000000000001 130.953 1.4594 +3.5688200000000001 67.283000000000001 1.8878999999999999 +-4.3418599999999996 57.921999999999997 1.99777 +4.0083000000000002 78.5227 1.7560500000000001 +-1.7818799999999999 89.762500000000003 2.0746799999999999 +-5.9899199999999997 42.946599999999997 1.7450699999999999 +3.5688200000000001 115.97799999999999 1.6242099999999999 +3.8984299999999998 69.161799999999999 1.6901299999999999 +3.8325100000000001 86.015900000000002 1.84395 +-5.4515599999999997 102.85899999999999 1.6132200000000001 +-5.0450400000000002 101.002 1.9428300000000001 +3.4589500000000002 99.123500000000007 1.6132200000000001 +-0.21073 110.363 2.0746799999999999 +-0.47442000000000001 86.015900000000002 1.43743 +1.7339800000000001 121.581 1.4923599999999999 +1.7339800000000001 123.45999999999999 1.4923599999999999 +-4.7154199999999999 114.099 1.5472999999999999 +-0.73810900000000002 33.585700000000003 1.43743 +3.3380899999999998 80.401499999999999 1.92086 +3.8325100000000001 48.572000000000003 1.84395 +-0.47442000000000001 99.123500000000007 2.0746799999999999 +2.5360399999999998 29.850100000000001 1.5253300000000001 +2.72282 95.376900000000006 1.9758 +3.5688200000000001 129.07400000000001 1.8878999999999999 +-3.0234200000000002 130.953 2.0527000000000002 +-2.7816999999999998 130.953 2.0636899999999998 +-5.5614299999999997 95.376900000000006 1.8878999999999999 +-5.4515599999999997 46.693199999999997 1.90987 +-1.7818799999999999 48.572000000000003 1.43743 +2.1514899999999999 136.56700000000001 2.0087600000000001 +-5.9899199999999997 72.9084 1.77803 +-5.9899199999999997 74.787099999999995 1.77803 +-0.21073 132.821 2.0746799999999999 +-2.28728 67.283000000000001 2.0746799999999999 +-5.3197099999999997 35.464500000000001 1.92086 +3.0524300000000002 78.5227 1.5692699999999999 +-1.7818799999999999 142.18199999999999 1.43743 +-2.7816999999999998 91.630300000000005 2.0636899999999998 +-4.8802300000000001 84.148099999999999 1.9648099999999999 +-5.5614299999999997 52.307600000000001 1.8878999999999999 +-5.9899199999999997 72.9084 1.7450699999999999 +2.72282 89.762500000000003 1.5472999999999999 +-3.2651300000000001 50.439799999999998 1.4703900000000001 +-3.2651300000000001 14.8637 1.4703900000000001 +-5.9679500000000001 91.630300000000005 1.72309 +-4.7154199999999999 29.850100000000001 1.9758 +2.8876200000000001 18.610299999999999 1.9648099999999999 +-4.8802300000000001 114.099 1.55829 +3.7555999999999998 67.283000000000001 1.65717 +-3.7155999999999998 71.040599999999998 1.4923599999999999 +-3.2651300000000001 101.002 1.4703900000000001 +-3.7155999999999998 93.498099999999994 2.0307300000000001 +-5.8800499999999998 78.5227 1.8219799999999999 +-5.8251200000000001 80.401499999999999 1.84395 +3.0524300000000002 27.971299999999999 1.5692699999999999 +2.1514899999999999 63.547400000000003 2.0087600000000001 +-2.28728 52.307600000000001 2.0746799999999999 +-4.5286400000000002 95.376900000000006 1.5253300000000001 +4.0083000000000002 46.693199999999997 1.7560500000000001 +3.0524300000000002 18.610299999999999 1.9428300000000001 +2.8876200000000001 16.7425 1.9648099999999999 +2.1514899999999999 42.946599999999997 2.0087600000000001 +-0.21073 65.426199999999994 1.43743 +-0.47442000000000001 65.426199999999994 1.43743 +2.5360399999999998 136.56700000000001 1.98678 +2.5360399999999998 138.435 1.98678 +3.5688200000000001 84.148099999999999 1.8878999999999999 +-2.0345800000000001 26.1035 2.0746799999999999 +-2.53999 95.376900000000006 2.0636899999999998 +-2.53999 95.376900000000006 1.44842 +0.80008000000000001 20.489100000000001 1.4594 +-1.2544999999999999 95.376900000000006 1.43743 +-1.2544999999999999 93.498099999999994 1.43743 +0.041973099999999999 102.85899999999999 1.44842 +-5.93499 41.078800000000001 1.71211 +-5.0450400000000002 48.572000000000003 1.5692699999999999 +3.8325100000000001 20.489100000000001 1.84395 +-2.0345800000000001 86.015900000000002 2.0746799999999999 +1.04179 12.995900000000001 2.0527000000000002 +1.7339800000000001 18.610299999999999 1.4923599999999999 +-4.5286400000000002 44.825400000000002 1.98678 +-2.28728 106.60599999999999 1.44842 +-4.3418599999999996 20.489100000000001 1.51434 +3.94238 76.654899999999998 1.8109900000000001 +0.54737800000000003 37.332299999999996 2.0636899999999998 +2.72282 71.040599999999998 1.5472999999999999 +-5.1878700000000002 132.821 1.9318500000000001 +3.8325100000000001 127.206 1.84395 +-1.2544999999999999 18.610299999999999 1.43743 +1.50325 67.283000000000001 2.0417200000000002 +-5.93499 54.186399999999999 1.8109900000000001 +-4.8802300000000001 29.850100000000001 1.9648099999999999 +2.3492600000000001 61.668599999999998 1.99777 +-3.49586 114.099 2.0417200000000002 +-0.47442000000000001 112.22 1.43743 +2.5360399999999998 52.307600000000001 1.98678 +0.80008000000000001 22.3569 1.4594 +-0.47442000000000001 115.97799999999999 1.43743 +3.9753400000000001 87.883700000000005 1.72309 +3.94238 89.762500000000003 1.71211 +-2.0345800000000001 110.363 2.0746799999999999 +1.04179 54.186399999999999 2.0527000000000002 +3.5688200000000001 138.435 1.6242099999999999 +1.9427300000000001 54.186399999999999 2.0197400000000001 +-1.5181899999999999 136.56700000000001 1.43743 +-4.5286400000000002 44.825400000000002 1.5253300000000001 +-5.93499 115.97799999999999 1.71211 +-5.3197099999999997 33.585700000000003 1.6022400000000001 +-4.7154199999999999 27.971299999999999 1.5472999999999999 +0.041973099999999999 44.825400000000002 1.44842 +-2.0345800000000001 136.56700000000001 2.0746799999999999 +3.94238 80.401499999999999 1.71211 +-4.5286400000000002 18.610299999999999 1.98678 +-1.5181899999999999 72.9084 2.0746799999999999 +-1.5181899999999999 74.787099999999995 2.0746799999999999 +2.3492600000000001 112.22 1.99777 +-4.8802300000000001 33.585700000000003 1.9648099999999999 +3.3380899999999998 29.850100000000001 1.6022400000000001 +-1.5181899999999999 71.040599999999998 2.0746799999999999 +2.1514899999999999 27.971299999999999 2.0087600000000001 +-0.47442000000000001 56.065199999999997 2.0746799999999999 +-0.47442000000000001 129.07400000000001 1.43743 +-4.7154199999999999 67.283000000000001 1.5472999999999999 +-4.8802300000000001 69.161799999999999 1.55829 +1.7339800000000001 104.738 1.4923599999999999 +-4.1440999999999999 123.45999999999999 1.50335 +-2.7816999999999998 65.426199999999994 1.4594 +-4.5286400000000002 24.224699999999999 1.5253300000000001 +3.5688200000000001 29.850100000000001 1.8878999999999999 +3.5688200000000001 31.7179 1.8878999999999999 +-0.73810900000000002 26.1035 1.43743 +-5.0450400000000002 44.825400000000002 1.9428300000000001 +-3.7155999999999998 136.56700000000001 1.4923599999999999 +-5.8251200000000001 46.693199999999997 1.84395 +2.3492600000000001 115.97799999999999 1.51434 +-4.8802300000000001 41.078800000000001 1.9648099999999999 +-3.9353400000000001 121.581 2.0197400000000001 +3.1952600000000002 87.883700000000005 1.9318500000000001 +-2.7816999999999998 108.48399999999999 2.0636899999999998 +-3.7155999999999998 140.31399999999999 1.4923599999999999 +-5.0450400000000002 39.210999999999999 1.5692699999999999 +-5.7482100000000003 46.693199999999997 1.85494 +1.04179 41.078800000000001 1.4594 +1.04179 39.210999999999999 1.4594 +3.67869 27.971299999999999 1.64618 +1.04179 52.307600000000001 2.0527000000000002 +-4.3418599999999996 29.850100000000001 1.99777 +-2.28728 119.71299999999999 1.44842 +3.0524300000000002 87.883700000000005 1.9428300000000001 +3.8984299999999998 112.22 1.8219799999999999 +-5.8800499999999998 102.85899999999999 1.8219799999999999 +-3.9353400000000001 78.5227 1.50335 +-5.7482100000000003 44.825400000000002 1.85494 +-5.7482100000000003 74.787099999999995 1.85494 +1.7339800000000001 39.210999999999999 2.0307300000000001 +-4.7154199999999999 140.31399999999999 1.5472999999999999 +-4.8802300000000001 142.18199999999999 1.55829 +0.54737800000000003 20.489100000000001 1.44842 +-5.93499 84.148099999999999 1.71211 +1.7339800000000001 80.401499999999999 2.0307300000000001 +-5.8251200000000001 14.8637 1.6791400000000001 +-1.2544999999999999 76.654899999999998 2.0746799999999999 +-0.990811 76.654899999999998 2.0746799999999999 +3.4589500000000002 115.97799999999999 1.90987 +3.4589500000000002 117.845 1.90987 +2.72282 112.22 1.5472999999999999 +-5.0450400000000002 74.787099999999995 1.9428300000000001 +0.041973099999999999 132.821 1.44842 +-2.28728 123.45999999999999 1.44842 +-2.53999 123.45999999999999 1.44842 +3.9753400000000001 110.363 1.7890200000000001 +-4.5286400000000002 91.630300000000005 1.5253300000000001 +-4.5286400000000002 93.498099999999994 1.5253300000000001 +-2.0345800000000001 24.224699999999999 1.44842 +-5.5614299999999997 86.015900000000002 1.6242099999999999 +-5.7482100000000003 69.161799999999999 1.65717 +3.0524300000000002 102.85899999999999 1.5692699999999999 +2.72282 29.850100000000001 1.5472999999999999 +-5.8251200000000001 117.845 1.6791400000000001 +-1.2544999999999999 101.002 1.43743 +-5.1878700000000002 46.693199999999997 1.58026 +0.29467500000000002 125.339 1.44842 +3.67869 110.363 1.64618 +3.5688200000000001 112.22 1.6242099999999999 +-5.5614299999999997 101.002 1.6242099999999999 +-1.2544999999999999 99.123500000000007 2.0746799999999999 +-0.73810900000000002 63.547400000000003 1.43743 +-4.1440999999999999 89.762500000000003 1.50335 +-5.9899199999999997 136.56700000000001 1.7450699999999999 +-5.9899199999999997 138.435 1.77803 +-5.5614299999999997 24.224699999999999 1.6242099999999999 +1.2725200000000001 127.206 2.0417200000000002 +3.3380899999999998 140.31399999999999 1.92086 +-2.0345800000000001 65.426199999999994 2.0746799999999999 +-2.7816999999999998 112.22 2.0636899999999998 +-2.53999 114.099 2.0636899999999998 +-1.2544999999999999 82.269300000000001 2.0746799999999999 +-1.2544999999999999 84.148099999999999 2.0746799999999999 +3.5688200000000001 33.585700000000003 1.8878999999999999 +-2.0345800000000001 16.7425 2.0746799999999999 +3.8325100000000001 123.45999999999999 1.6791400000000001 +3.7555999999999998 125.339 1.65717 +-4.5286400000000002 67.283000000000001 1.5253300000000001 +2.8876200000000001 119.71299999999999 1.9648099999999999 +3.1952600000000002 119.71299999999999 1.9318500000000001 +3.8984299999999998 69.161799999999999 1.8219799999999999 +1.50325 24.224699999999999 1.4813799999999999 +-1.5181899999999999 142.18199999999999 1.43743 +0.29467500000000002 84.148099999999999 1.44842 +-1.5181899999999999 112.22 1.43743 +3.9753400000000001 61.668599999999998 1.72309 +-5.66031 129.07400000000001 1.64618 +3.1952600000000002 104.738 1.58026 +0.041973099999999999 31.7179 2.0746799999999999 +-4.1440999999999999 29.850100000000001 1.50335 +-5.8251200000000001 125.339 1.84395 +4.0083000000000002 52.307600000000001 1.7560500000000001 +0.29467500000000002 41.078800000000001 1.44842 +-1.2544999999999999 102.85899999999999 2.0746799999999999 +-0.21073 108.48399999999999 1.43743 +3.9973100000000001 69.161799999999999 1.77803 +-5.5614299999999997 61.668599999999998 1.6242099999999999 +2.72282 63.547400000000003 1.5472999999999999 +-4.8802300000000001 97.244699999999995 1.55829 +2.8876200000000001 112.22 1.9648099999999999 +2.5360399999999998 18.610299999999999 1.5253300000000001 +-2.0345800000000001 78.5227 1.44842 +3.8325100000000001 129.07400000000001 1.84395 +-0.47442000000000001 114.099 2.0746799999999999 +-5.8800499999999998 91.630300000000005 1.6901299999999999 +0.041973099999999999 114.099 2.0746799999999999 +0.041973099999999999 115.97799999999999 2.0746799999999999 +-2.7816999999999998 76.654899999999998 2.0636899999999998 +2.3492600000000001 130.953 1.51434 +-0.47442000000000001 27.971299999999999 1.43743 +3.67869 114.099 1.64618 +1.7339800000000001 117.845 1.4923599999999999 +-5.3197099999999997 33.585700000000003 1.92086 +-1.5181899999999999 91.630300000000005 1.43743 +3.1952600000000002 115.97799999999999 1.58026 +-3.2651300000000001 33.585700000000003 2.0417200000000002 +-0.21073 95.376900000000006 2.0746799999999999 +3.9973100000000001 138.435 1.7450699999999999 +2.72282 46.693199999999997 1.9758 +3.3380899999999998 117.845 1.92086 +3.4589500000000002 69.161799999999999 1.90987 +-5.1878700000000002 82.269300000000001 1.9318500000000001 +-2.28728 29.850100000000001 2.0746799999999999 +-2.53999 29.850100000000001 2.0636899999999998 +-2.28728 108.48399999999999 2.0746799999999999 +3.67869 12.995900000000001 1.64618 +0.29467500000000002 127.206 2.0636899999999998 +-5.5614299999999997 117.845 1.6242099999999999 +2.1514899999999999 65.426199999999994 2.0087600000000001 +-2.53999 27.971299999999999 1.44842 +-2.7816999999999998 57.921999999999997 2.0636899999999998 +-1.7818799999999999 97.244699999999995 1.43743 +-4.5286400000000002 104.738 1.5253300000000001 +3.67869 130.953 1.8769100000000001 +-2.53999 41.078800000000001 2.0636899999999998 +3.9973100000000001 87.883700000000005 1.77803 +3.1952600000000002 54.186399999999999 1.58026 +-4.5286400000000002 14.8637 1.5253300000000001 +-5.9899199999999997 84.148099999999999 1.7450699999999999 +1.2725200000000001 76.654899999999998 1.4703900000000001 +2.5360399999999998 65.426199999999994 1.5253300000000001 +-5.7482100000000003 82.269300000000001 1.65717 +-5.93499 87.883700000000005 1.71211 +1.2725200000000001 20.489100000000001 2.0417200000000002 +1.04179 18.610299999999999 2.0527000000000002 +3.67869 61.668599999999998 1.64618 +-2.7816999999999998 56.065199999999997 1.4594 +1.2725200000000001 48.572000000000003 1.4703900000000001 +1.04179 48.572000000000003 1.4594 +-5.8251200000000001 71.040599999999998 1.6791400000000001 +-5.1878700000000002 44.825400000000002 1.9318500000000001 +-2.28728 27.971299999999999 1.44842 +-5.66031 102.85899999999999 1.8769100000000001 +-5.5614299999999997 102.85899999999999 1.8878999999999999 +-3.49586 123.45999999999999 2.0417200000000002 +-3.2651300000000001 125.339 2.0417200000000002 +3.4589500000000002 134.69999999999999 1.89889 +1.50325 134.69999999999999 1.4813799999999999 +3.4589500000000002 59.800800000000002 1.6132200000000001 +3.5688200000000001 59.800800000000002 1.6242099999999999 +3.7555999999999998 33.585700000000003 1.65717 +-5.8251200000000001 84.148099999999999 1.6791400000000001 +-0.21073 106.60599999999999 1.43743 +-0.47442000000000001 108.48399999999999 1.43743 +-3.0234200000000002 59.800800000000002 1.4594 +-3.0234200000000002 61.668599999999998 1.4594 +-4.3418599999999996 123.45999999999999 1.99777 +3.94238 50.439799999999998 1.71211 +-5.4515599999999997 104.738 1.90987 +-5.0450400000000002 110.363 1.9428300000000001 +-5.0450400000000002 112.22 1.9428300000000001 +2.72282 119.71299999999999 1.9758 +2.72282 117.845 1.9758 +-5.1878700000000002 48.572000000000003 1.58026 +-1.7818799999999999 54.186399999999999 2.0746799999999999 +-2.28728 31.7179 2.0746799999999999 +-5.4515599999999997 142.18199999999999 1.90987 +0.29467500000000002 101.002 1.44842 +-3.49586 97.244699999999995 1.4813799999999999 +-1.2544999999999999 72.9084 1.43743 +-5.3197099999999997 18.610299999999999 1.92086 +3.8984299999999998 52.307600000000001 1.6901299999999999 +2.3492600000000001 87.883700000000005 1.99777 +3.7555999999999998 87.883700000000005 1.85494 +3.8984299999999998 84.148099999999999 1.8219799999999999 +1.50325 26.1035 2.0417200000000002 +3.9753400000000001 59.800800000000002 1.7890200000000001 +3.9973100000000001 59.800800000000002 1.77803 +3.9973100000000001 59.800800000000002 1.7450699999999999 +2.8876200000000001 115.97799999999999 1.55829 +3.0524300000000002 115.97799999999999 1.5692699999999999 +3.9753400000000001 142.18199999999999 1.7890200000000001 +-1.7818799999999999 54.186399999999999 1.43743 +-2.0345800000000001 54.186399999999999 1.44842 +-5.1878700000000002 112.22 1.9318500000000001 +-3.2651300000000001 82.269300000000001 2.0417200000000002 +2.8876200000000001 27.971299999999999 1.9648099999999999 +3.8984299999999998 35.464500000000001 1.8219799999999999 +-0.73810900000000002 35.464500000000001 1.43743 +3.8984299999999998 89.762500000000003 1.6901299999999999 +3.8325100000000001 89.762500000000003 1.6791400000000001 +-5.9899199999999997 26.1035 1.7450699999999999 +1.04179 69.161799999999999 1.4594 +0.80008000000000001 78.5227 2.0636899999999998 +-4.7154199999999999 35.464500000000001 1.5472999999999999 +-2.53999 71.040599999999998 1.44842 +-0.21073 95.376900000000006 1.43743 +-0.47442000000000001 97.244699999999995 1.43743 +-2.7816999999999998 24.224699999999999 1.4594 +-4.7154199999999999 82.269300000000001 1.5472999999999999 +3.3380899999999998 97.244699999999995 1.6022400000000001 +-5.3197099999999997 121.581 1.92086 +-0.990811 138.435 2.0746799999999999 +-0.73810900000000002 140.31399999999999 2.0746799999999999 +-0.21073 56.065199999999997 1.43743 +-3.7155999999999998 129.07400000000001 1.4923599999999999 +-4.7154199999999999 108.48399999999999 1.9758 +3.4589500000000002 108.48399999999999 1.6132200000000001 +3.5688200000000001 106.60599999999999 1.6242099999999999 +-4.3418599999999996 14.8637 1.99777 +-4.1440999999999999 134.69999999999999 2.0087600000000001 +-5.4515599999999997 142.18199999999999 1.6132200000000001 +-1.5181899999999999 138.435 1.43743 +-4.3418599999999996 54.186399999999999 1.51434 +1.04179 93.498099999999994 1.4594 +-5.4515599999999997 104.738 1.6132200000000001 +2.5360399999999998 71.040599999999998 1.98678 +-0.47442000000000001 57.921999999999997 2.0746799999999999 +-5.8800499999999998 104.738 1.8219799999999999 +-5.5614299999999997 57.921999999999997 1.8878999999999999 +-5.8800499999999998 48.572000000000003 1.6901299999999999 +1.2725200000000001 115.97799999999999 2.0417200000000002 +2.1514899999999999 72.9084 1.50335 +4.0083000000000002 102.85899999999999 1.7560500000000001 +3.4589500000000002 35.464500000000001 1.90987 +-1.5181899999999999 123.45999999999999 1.43743 +-1.7818799999999999 125.339 1.43743 +0.29467500000000002 80.401499999999999 2.0746799999999999 +-5.93499 119.71299999999999 1.8109900000000001 +-4.7154199999999999 67.283000000000001 1.9758 +-3.7155999999999998 117.845 1.4923599999999999 +-0.47442000000000001 82.269300000000001 2.0746799999999999 +-5.93499 110.363 1.71211 +3.94238 93.498099999999994 1.71211 +-1.2544999999999999 121.581 2.0746799999999999 +0.54737800000000003 69.161799999999999 2.0636899999999998 +2.3492600000000001 33.585700000000003 1.51434 +-0.990811 102.85899999999999 1.43743 +2.8876200000000001 130.953 1.9648099999999999 +-5.8251200000000001 65.426199999999994 1.84395 +0.041973099999999999 115.97799999999999 1.44842 +-3.2651300000000001 27.971299999999999 1.4703900000000001 +1.04179 123.45999999999999 2.0527000000000002 +1.2725200000000001 76.654899999999998 2.0417200000000002 +1.50325 78.5227 2.0417200000000002 +2.72282 112.22 1.9758 +2.8876200000000001 114.099 1.9648099999999999 +-0.990811 31.7179 1.43743 +-0.990811 50.439799999999998 1.43743 +-4.8802300000000001 117.845 1.55829 +-5.93499 102.85899999999999 1.71211 +-5.7482100000000003 69.161799999999999 1.85494 +1.50325 76.654899999999998 1.4813799999999999 +1.7339800000000001 74.787099999999995 1.4923599999999999 +2.1514899999999999 41.078800000000001 1.50335 +-0.21073 117.845 2.0746799999999999 +3.94238 108.48399999999999 1.71211 +3.9753400000000001 106.60599999999999 1.72309 +3.3380899999999998 117.845 1.6022400000000001 +-2.53999 37.332299999999996 2.0636899999999998 +1.50325 57.921999999999997 2.0417200000000002 +-3.9353400000000001 41.078800000000001 1.50335 +-1.7818799999999999 33.585700000000003 2.0746799999999999 +-5.9899199999999997 93.498099999999994 1.77803 +-0.73810900000000002 136.56700000000001 1.43743 +1.7339800000000001 74.787099999999995 2.0307300000000001 +-0.73810900000000002 91.630300000000005 1.43743 +-5.4515599999999997 29.850100000000001 1.6132200000000001 +0.041973099999999999 132.821 2.0746799999999999 +-5.9679500000000001 130.953 1.72309 +-5.4515599999999997 78.5227 1.90987 +-5.8800499999999998 27.971299999999999 1.8219799999999999 +3.3380899999999998 44.825400000000002 1.6022400000000001 +-1.2544999999999999 22.3569 2.0746799999999999 +3.3380899999999998 72.9084 1.92086 +-5.3197099999999997 29.850100000000001 1.92086 +-5.0450400000000002 37.332299999999996 1.5692699999999999 +-5.3197099999999997 50.439799999999998 1.6022400000000001 +-2.0345800000000001 99.123500000000007 1.44842 +-2.0345800000000001 76.654899999999998 1.44842 +0.80008000000000001 119.71299999999999 2.0636899999999998 +-5.8800499999999998 84.148099999999999 1.6901299999999999 +-2.0345800000000001 125.339 1.44842 +0.29467500000000002 114.099 1.44842 +-2.0345800000000001 123.45999999999999 2.0746799999999999 +-3.7155999999999998 78.5227 2.0307300000000001 +-5.8800499999999998 41.078800000000001 1.6901299999999999 +-5.8800499999999998 42.946599999999997 1.6901299999999999 +3.0524300000000002 101.002 1.9428300000000001 +2.5360399999999998 50.439799999999998 1.5253300000000001 +3.7555999999999998 80.401499999999999 1.65717 +3.67869 80.401499999999999 1.64618 +3.5688200000000001 132.821 1.8878999999999999 +3.0524300000000002 119.71299999999999 1.5692699999999999 +3.1952600000000002 119.71299999999999 1.58026 +1.04179 76.654899999999998 1.4594 +-4.1440999999999999 112.22 2.0087600000000001 +-3.9353400000000001 114.099 2.0197400000000001 +3.9973100000000001 136.56700000000001 1.77803 +-4.1440999999999999 110.363 2.0087600000000001 +-5.1878700000000002 108.48399999999999 1.58026 +-1.5181899999999999 138.435 2.0746799999999999 +0.041973099999999999 110.363 2.0746799999999999 +-4.5286400000000002 46.693199999999997 1.98678 +-3.7155999999999998 35.464500000000001 1.4923599999999999 +-1.7818799999999999 95.376900000000006 1.43743 +-5.66031 48.572000000000003 1.8769100000000001 +2.72282 99.123500000000007 1.5472999999999999 +-0.73810900000000002 16.7425 1.43743 +-4.1440999999999999 86.015900000000002 2.0087600000000001 +-3.0234200000000002 97.244699999999995 1.4594 +-4.7154199999999999 117.845 1.5472999999999999 +-5.4515599999999997 33.585700000000003 1.90987 +-4.7154199999999999 57.921999999999997 1.5472999999999999 +-1.7818799999999999 44.825400000000002 1.43743 +3.9753400000000001 127.206 1.72309 +-5.93499 140.31399999999999 1.71211 +-5.9679500000000001 142.18199999999999 1.72309 +-4.5286400000000002 110.363 1.98678 +1.9427300000000001 97.244699999999995 2.0197400000000001 +1.7339800000000001 46.693199999999997 2.0307300000000001 +2.1514899999999999 78.5227 2.0087600000000001 +3.9973100000000001 57.921999999999997 1.7450699999999999 +-5.8800499999999998 39.210999999999999 1.6901299999999999 +2.72282 44.825400000000002 1.9758 +2.8876200000000001 74.787099999999995 1.9648099999999999 +-3.0234200000000002 56.065199999999997 1.4594 +-3.2651300000000001 56.065199999999997 1.4703900000000001 +1.2725200000000001 119.71299999999999 1.4703900000000001 +-5.3197099999999997 130.953 1.6022400000000001 +-5.4515599999999997 82.269300000000001 1.90987 +-5.7482100000000003 115.97799999999999 1.65717 +0.041973099999999999 102.85899999999999 2.0746799999999999 +0.29467500000000002 104.738 2.0746799999999999 +-5.93499 80.401499999999999 1.8109900000000001 +3.4589500000000002 112.22 1.6132200000000001 +0.041973099999999999 37.332299999999996 2.0746799999999999 +-4.8802300000000001 101.002 1.9648099999999999 +3.94238 14.8637 1.71211 +-0.73810900000000002 42.946599999999997 1.43743 +-5.5614299999999997 91.630300000000005 1.8878999999999999 +1.2725200000000001 33.585700000000003 1.4703900000000001 +-2.0345800000000001 74.787099999999995 2.0746799999999999 +-5.9679500000000001 123.45999999999999 1.72309 +1.04179 67.283000000000001 1.4594 +4.0083000000000002 91.630300000000005 1.7560500000000001 +-2.53999 130.953 1.44842 +-4.1440999999999999 130.953 2.0087600000000001 +-3.9353400000000001 130.953 2.0197400000000001 +-4.1440999999999999 89.762500000000003 2.0087600000000001 +-1.7818799999999999 22.3569 1.43743 +-0.47442000000000001 140.31399999999999 2.0746799999999999 +3.4589500000000002 33.585700000000003 1.90987 +3.3380899999999998 33.585700000000003 1.92086 +3.3380899999999998 95.376900000000006 1.6022400000000001 +-2.28728 61.668599999999998 1.44842 +-2.53999 61.668599999999998 1.44842 +-4.3418599999999996 110.363 1.51434 +-5.66031 82.269300000000001 1.64618 +0.80008000000000001 129.07400000000001 2.0636899999999998 +0.80008000000000001 127.206 2.0636899999999998 +1.04179 129.07400000000001 2.0527000000000002 +3.3380899999999998 54.186399999999999 1.92086 +-5.1878700000000002 22.3569 1.58026 +-5.9899199999999997 134.69999999999999 1.7450699999999999 +-5.9899199999999997 136.56700000000001 1.77803 +1.50325 86.015900000000002 1.4813799999999999 +-2.53999 108.48399999999999 2.0636899999999998 +-4.5286400000000002 89.762500000000003 1.5253300000000001 +3.4589500000000002 65.426199999999994 1.6132200000000001 +-2.7816999999999998 115.97799999999999 2.0636899999999998 +-4.8802300000000001 61.668599999999998 1.9648099999999999 +-2.28728 95.376900000000006 1.44842 +2.5360399999999998 84.148099999999999 1.98678 +-0.990811 27.971299999999999 2.0856699999999999 +3.1952600000000002 129.07400000000001 1.9318500000000001 +3.8984299999999998 71.040599999999998 1.6901299999999999 +3.8325100000000001 71.040599999999998 1.6791400000000001 +-1.7818799999999999 138.435 1.43743 +-4.8802300000000001 82.269300000000001 1.55829 +-3.2651300000000001 129.07400000000001 2.0417200000000002 +-3.7155999999999998 57.921999999999997 1.4923599999999999 +3.8984299999999998 63.547400000000003 1.6901299999999999 +3.8984299999999998 65.426199999999994 1.6901299999999999 +-5.8800499999999998 37.332299999999996 1.8219799999999999 +-0.73810900000000002 125.339 2.0746799999999999 +-0.990811 106.60599999999999 1.43743 +-4.1440999999999999 82.269300000000001 2.0087600000000001 +-4.3418599999999996 82.269300000000001 1.99777 +-5.8800499999999998 63.547400000000003 1.6901299999999999 +2.72282 20.489100000000001 1.5472999999999999 +-1.7818799999999999 50.439799999999998 1.43743 +-5.93499 114.099 1.71211 +-4.1440999999999999 117.845 1.50335 +3.8325100000000001 29.850100000000001 1.84395 +4.0083000000000002 132.821 1.7560500000000001 +3.8984299999999998 44.825400000000002 1.6901299999999999 +3.3380899999999998 108.48399999999999 1.92086 +1.50325 97.244699999999995 1.4813799999999999 +-0.990811 56.065199999999997 1.43743 +0.54737800000000003 27.971299999999999 1.44842 +-1.5181899999999999 80.401499999999999 2.0746799999999999 +-1.5181899999999999 80.401499999999999 1.43743 +3.8984299999999998 16.7425 1.6901299999999999 +3.8984299999999998 18.610299999999999 1.6901299999999999 +-5.93499 71.040599999999998 1.8109900000000001 +-3.49586 63.547400000000003 2.0417200000000002 +-0.21073 119.71299999999999 1.43743 +-3.2651300000000001 61.668599999999998 1.4703900000000001 +-5.66031 123.45999999999999 1.64618 +-3.2651300000000001 42.946599999999997 2.0417200000000002 +-5.93499 57.921999999999997 1.71211 +3.4589500000000002 132.821 1.6132200000000001 +3.4589500000000002 134.69999999999999 1.6132200000000001 +4.0083000000000002 134.69999999999999 1.7560500000000001 +-4.8802300000000001 37.332299999999996 1.55829 +-5.1878700000000002 106.60599999999999 1.58026 +3.8984299999999998 108.48399999999999 1.8219799999999999 +1.2725200000000001 104.738 2.0417200000000002 +3.3380899999999998 89.762500000000003 1.92086 +3.5688200000000001 140.31399999999999 1.8878999999999999 +0.80008000000000001 74.787099999999995 1.4594 +0.80008000000000001 76.654899999999998 1.4594 +-5.3197099999999997 86.015900000000002 1.6022400000000001 +-5.5614299999999997 110.363 1.6242099999999999 +2.3492600000000001 117.845 1.51434 +3.7555999999999998 65.426199999999994 1.85494 +-5.9679500000000001 72.9084 1.72309 +2.72282 52.307600000000001 1.5472999999999999 +3.3380899999999998 119.71299999999999 1.92086 +-5.5614299999999997 50.439799999999998 1.8878999999999999 +-1.2544999999999999 115.97799999999999 1.43743 +-1.7818799999999999 71.040599999999998 1.43743 +-5.3197099999999997 130.953 1.92086 +-5.9679500000000001 93.498099999999994 1.72309 +-3.2651300000000001 44.825400000000002 2.0417200000000002 +2.72282 114.099 1.5472999999999999 +1.04179 101.002 1.4594 +1.2725200000000001 99.123500000000007 1.4703900000000001 +3.8325100000000001 101.002 1.6791400000000001 +1.7339800000000001 42.946599999999997 2.0307300000000001 +3.4589500000000002 56.065199999999997 1.6132200000000001 +3.67869 129.07400000000001 1.64618 +-5.5614299999999997 101.002 1.8878999999999999 +2.3492600000000001 82.269300000000001 1.51434 +3.67869 31.7179 1.8769100000000001 +2.8876200000000001 26.1035 1.9648099999999999 +2.72282 26.1035 1.9758 +3.5688200000000001 95.376900000000006 1.6242099999999999 +3.5688200000000001 97.244699999999995 1.6242099999999999 +1.2725200000000001 132.821 1.4703900000000001 +-5.9679500000000001 69.161799999999999 1.7890200000000001 +-2.7816999999999998 48.572000000000003 1.4594 +-2.28728 27.971299999999999 2.0746799999999999 +-2.7816999999999998 117.845 1.4594 +2.8876200000000001 129.07400000000001 1.9648099999999999 +-2.28728 117.845 1.44842 +-1.2544999999999999 117.845 2.0746799999999999 +-4.5286400000000002 136.56700000000001 1.98678 +-0.990811 87.883700000000005 1.43743 +-1.2544999999999999 89.762500000000003 1.43743 +-5.5614299999999997 71.040599999999998 1.6242099999999999 +-0.73810900000000002 29.850100000000001 1.43743 +-3.0234200000000002 108.48399999999999 2.0527000000000002 +-0.21073 16.7425 1.43743 +-5.93499 119.71299999999999 1.71211 +-5.8800499999999998 136.56700000000001 1.8219799999999999 +-5.8251200000000001 138.435 1.84395 +-4.1440999999999999 48.572000000000003 2.0087600000000001 +3.3380899999999998 76.654899999999998 1.92086 +3.1952600000000002 76.654899999999998 1.9318500000000001 +-3.7155999999999998 20.489100000000001 2.0307300000000001 +0.54737800000000003 86.015900000000002 2.0636899999999998 +2.72282 136.56700000000001 1.9758 +1.9427300000000001 46.693199999999997 1.50335 +-3.7155999999999998 65.426199999999994 2.0307300000000001 +-3.9353400000000001 65.426199999999994 2.0197400000000001 +-4.8802300000000001 89.762500000000003 1.55829 +2.5360399999999998 61.668599999999998 1.98678 +3.5688200000000001 29.850100000000001 1.6242099999999999 +-5.93499 27.971299999999999 1.71211 +-5.7482100000000003 22.3569 1.65717 +3.3380899999999998 37.332299999999996 1.6022400000000001 +-5.8251200000000001 29.850100000000001 1.6791400000000001 +-5.8251200000000001 27.971299999999999 1.6791400000000001 +3.5688200000000001 80.401499999999999 1.6242099999999999 +3.8984299999999998 101.002 1.8219799999999999 +3.0524300000000002 132.821 1.9428300000000001 +3.0524300000000002 130.953 1.9428300000000001 +2.72282 132.821 1.9758 +-0.990811 95.376900000000006 1.43743 +-4.3418599999999996 31.7179 1.51434 +-0.21073 129.07400000000001 2.0746799999999999 +-0.21073 127.206 2.0746799999999999 +-5.8251200000000001 29.850100000000001 1.84395 +3.8984299999999998 61.668599999999998 1.8219799999999999 +-0.47442000000000001 130.953 2.0746799999999999 +-3.2651300000000001 48.572000000000003 1.4703900000000001 +-3.49586 48.572000000000003 1.4813799999999999 +-5.7482100000000003 78.5227 1.85494 +-5.8800499999999998 114.099 1.8219799999999999 +-5.8251200000000001 114.099 1.84395 +3.3380899999999998 29.850100000000001 1.92086 +-4.1440999999999999 24.224699999999999 1.50335 +3.94238 39.210999999999999 1.71211 +3.94238 37.332299999999996 1.71211 +-3.7155999999999998 76.654899999999998 2.0307300000000001 +1.7339800000000001 108.48399999999999 1.4923599999999999 +-1.7818799999999999 106.60599999999999 2.0746799999999999 +-3.9353400000000001 136.56700000000001 1.50335 +3.1952600000000002 67.283000000000001 1.58026 +-5.8800499999999998 119.71299999999999 1.8219799999999999 +-2.7816999999999998 54.186399999999999 2.0636899999999998 +2.8876200000000001 16.7425 1.55829 +3.3380899999999998 102.85899999999999 1.92086 +3.7555999999999998 138.435 1.65717 +2.8876200000000001 29.850100000000001 1.55829 +0.29467500000000002 134.69999999999999 2.0636899999999998 +2.8876200000000001 65.426199999999994 1.55829 +3.9973100000000001 12.995900000000001 1.77803 +2.3492600000000001 35.464500000000001 1.99777 +-5.9899199999999997 76.654899999999998 1.7450699999999999 +-2.0345800000000001 82.269300000000001 2.0746799999999999 +-2.0345800000000001 80.401499999999999 2.0746799999999999 +1.9427300000000001 95.376900000000006 2.0197400000000001 +1.04179 93.498099999999994 2.0527000000000002 +-3.0234200000000002 82.269300000000001 1.4594 +0.54737800000000003 65.426199999999994 2.0636899999999998 +-4.5286400000000002 57.921999999999997 1.98678 +1.50325 102.85899999999999 1.4813799999999999 +3.8984299999999998 129.07400000000001 1.6901299999999999 +3.8325100000000001 129.07400000000001 1.6791400000000001 +0.54737800000000003 37.332299999999996 1.44842 +-5.8251200000000001 56.065199999999997 1.6791400000000001 +-3.7155999999999998 93.498099999999994 1.4923599999999999 +-5.7482100000000003 89.762500000000003 1.65717 +3.9753400000000001 117.845 1.7890200000000001 +3.9753400000000001 115.97799999999999 1.7890200000000001 +2.3492600000000001 67.283000000000001 1.99777 +-5.5614299999999997 46.693199999999997 1.8878999999999999 +-2.7816999999999998 14.8637 1.4594 +-3.0234200000000002 57.921999999999997 2.0527000000000002 +0.29467500000000002 93.498099999999994 1.44842 +2.5360399999999998 93.498099999999994 1.98678 +-3.2651300000000001 119.71299999999999 1.4703900000000001 +0.29467500000000002 130.953 2.0636899999999998 +0.29467500000000002 89.762500000000003 1.44842 +3.7555999999999998 82.269300000000001 1.85494 +3.0524300000000002 42.946599999999997 1.5692699999999999 +3.0524300000000002 110.363 1.9428300000000001 +3.1952600000000002 112.22 1.9318500000000001 +-4.8802300000000001 99.123500000000007 1.9648099999999999 +-5.0450400000000002 97.244699999999995 1.9428300000000001 +-0.21073 114.099 2.0746799999999999 +-1.5181899999999999 78.5227 1.43743 +-3.7155999999999998 29.850100000000001 1.4923599999999999 +0.041973099999999999 72.9084 2.0746799999999999 +-5.1878700000000002 63.547400000000003 1.9318500000000001 +0.80008000000000001 114.099 2.0636899999999998 +-0.47442000000000001 37.332299999999996 2.0746799999999999 +-2.53999 50.439799999999998 2.0636899999999998 +-5.9679500000000001 26.1035 1.7890200000000001 +2.3492600000000001 102.85899999999999 1.51434 +2.5360399999999998 101.002 1.5253300000000001 +-5.3197099999999997 82.269300000000001 1.92086 +-5.0450400000000002 95.376900000000006 1.5692699999999999 +3.5688200000000001 99.123500000000007 1.8878999999999999 +-5.9899199999999997 119.71299999999999 1.77803 +-5.4515599999999997 97.244699999999995 1.6132200000000001 +2.5360399999999998 63.547400000000003 1.5253300000000001 +0.80008000000000001 132.821 1.4594 +-3.7155999999999998 26.1035 1.4923599999999999 +-5.0450400000000002 56.065199999999997 1.5692699999999999 +-3.0234200000000002 22.3569 1.4594 +-2.7816999999999998 123.45999999999999 1.4594 +3.9973100000000001 95.376900000000006 1.77803 +3.1952600000000002 82.269300000000001 1.9318500000000001 +-5.8800499999999998 14.8637 1.8219799999999999 +-0.990811 91.630300000000005 1.43743 +1.7339800000000001 59.800800000000002 2.0307300000000001 +-5.8800499999999998 74.787099999999995 1.6901299999999999 +2.5360399999999998 87.883700000000005 1.5253300000000001 +-0.47442000000000001 125.339 2.0746799999999999 +3.0524300000000002 114.099 1.9428300000000001 +-5.9679500000000001 61.668599999999998 1.72309 +-3.2651300000000001 31.7179 1.4703900000000001 +-3.2651300000000001 33.585700000000003 1.4703900000000001 +0.041973099999999999 69.161799999999999 2.0746799999999999 +3.67869 41.078800000000001 1.64618 +3.5688200000000001 86.015900000000002 1.8878999999999999 +-5.8800499999999998 134.69999999999999 1.8219799999999999 +4.0083000000000002 115.97799999999999 1.7560500000000001 +3.7555999999999998 14.8637 1.65717 +-5.66031 76.654899999999998 1.8769100000000001 +1.50325 93.498099999999994 1.4813799999999999 +-2.0345800000000001 117.845 1.44842 +2.1514899999999999 121.581 2.0087600000000001 +-5.5614299999999997 115.97799999999999 1.8878999999999999 +2.3492600000000001 78.5227 1.51434 +-2.28728 102.85899999999999 2.0746799999999999 +-5.0450400000000002 102.85899999999999 1.5692699999999999 +3.1952600000000002 63.547400000000003 1.58026 +3.1952600000000002 65.426199999999994 1.58026 +3.8984299999999998 57.921999999999997 1.8219799999999999 +3.4589500000000002 44.825400000000002 1.90987 +1.7339800000000001 110.363 1.4923599999999999 +-5.9679500000000001 112.22 1.7890200000000001 +-5.9899199999999997 112.22 1.77803 +-1.7818799999999999 129.07400000000001 2.0746799999999999 +1.9427300000000001 41.078800000000001 1.50335 +-2.53999 74.787099999999995 1.44842 +3.1952600000000002 59.800800000000002 1.58026 +2.5360399999999998 82.269300000000001 1.98678 +1.04179 115.97799999999999 1.4594 +-4.3418599999999996 14.8637 1.51434 +3.9753400000000001 46.693199999999997 1.7890200000000001 +-5.5614299999999997 142.18199999999999 1.8878999999999999 +0.54737800000000003 115.97799999999999 1.44842 +0.54737800000000003 114.099 1.44842 +1.7339800000000001 35.464500000000001 2.0307300000000001 +-3.49586 24.224699999999999 1.4813799999999999 +-3.49586 22.3569 1.4813799999999999 +-3.2651300000000001 63.547400000000003 1.4703900000000001 +-3.49586 63.547400000000003 1.4813799999999999 +1.50325 54.186399999999999 2.0417200000000002 +-5.66031 20.489100000000001 1.8769100000000001 +3.3380899999999998 61.668599999999998 1.6022400000000001 +3.8325100000000001 136.56700000000001 1.84395 +-3.49586 142.18199999999999 1.4813799999999999 +-4.3418599999999996 54.186399999999999 1.99777 +0.29467500000000002 46.693199999999997 1.44842 +3.9753400000000001 127.206 1.7890200000000001 +-5.9899199999999997 84.148099999999999 1.77803 +-5.7482100000000003 125.339 1.85494 +3.9973100000000001 56.065199999999997 1.7450699999999999 +-5.3197099999999997 97.244699999999995 1.6022400000000001 +-5.7482100000000003 102.85899999999999 1.85494 +3.9973100000000001 69.161799999999999 1.7450699999999999 +3.8984299999999998 31.7179 1.8219799999999999 +-5.5614299999999997 123.45999999999999 1.8878999999999999 +-5.4515599999999997 117.845 1.90987 +-2.28728 59.800800000000002 2.0746799999999999 +1.7339800000000001 121.581 2.0307300000000001 +-3.9353400000000001 112.22 2.0197400000000001 +0.041973099999999999 35.464500000000001 1.44842 +-4.7154199999999999 52.307600000000001 1.9758 +-3.9353400000000001 69.161799999999999 2.0197400000000001 +3.1952600000000002 41.078800000000001 1.9318500000000001 +-0.21073 123.45999999999999 1.43743 +-2.53999 56.065199999999997 1.44842 +-3.9353400000000001 39.210999999999999 1.50335 +-5.8251200000000001 108.48399999999999 1.6791400000000001 +3.9973100000000001 54.186399999999999 1.77803 +4.0083000000000002 54.186399999999999 1.7560500000000001 +3.9753400000000001 26.1035 1.72309 +-4.8802300000000001 138.435 1.55829 +3.3380899999999998 54.186399999999999 1.6022400000000001 +-3.9353400000000001 132.821 1.50335 +-3.49586 59.800800000000002 2.0417200000000002 +-5.9679500000000001 72.9084 1.7890200000000001 +-1.5181899999999999 65.426199999999994 2.0746799999999999 +3.94238 101.002 1.8109900000000001 +-4.7154199999999999 129.07400000000001 1.9758 +2.1514899999999999 16.7425 2.0087600000000001 +-5.66031 74.787099999999995 1.64618 +-3.9353400000000001 106.60599999999999 1.50335 +-3.49586 129.07400000000001 2.0417200000000002 +-1.2544999999999999 56.065199999999997 1.43743 +-3.2651300000000001 50.439799999999998 2.0417200000000002 +-5.8251200000000001 104.738 1.6791400000000001 +-0.21073 12.995900000000001 2.0746799999999999 +1.04179 59.800800000000002 1.4594 +-2.53999 69.161799999999999 1.44842 +3.8325100000000001 71.040599999999998 1.84395 +1.04179 72.9084 1.4594 +2.3492600000000001 104.738 1.51434 +3.3380899999999998 104.738 1.92086 +1.9427300000000001 125.339 2.0197400000000001 +-1.7818799999999999 99.123500000000007 1.43743 +3.67869 134.69999999999999 1.64618 +-4.1440999999999999 140.31399999999999 1.50335 +2.72282 134.69999999999999 1.9758 +-0.73810900000000002 95.376900000000006 2.0746799999999999 +-1.7818799999999999 136.56700000000001 1.43743 +-2.0345800000000001 136.56700000000001 1.44842 +-5.5614299999999997 134.69999999999999 1.6242099999999999 +-0.21073 26.1035 1.43743 +3.4589500000000002 102.85899999999999 1.90987 +-1.5181899999999999 114.099 1.43743 +-5.9679500000000001 14.8637 1.7890200000000001 +3.67869 71.040599999999998 1.8769100000000001 +3.67869 67.283000000000001 1.8769100000000001 +-0.73810900000000002 93.498099999999994 1.43743 +-2.7816999999999998 119.71299999999999 1.4594 +-5.9899199999999997 87.883700000000005 1.77803 +3.9753400000000001 39.210999999999999 1.72309 +-5.8800499999999998 93.498099999999994 1.8219799999999999 +-5.8800499999999998 95.376900000000006 1.8219799999999999 +-0.990811 39.210999999999999 2.0856699999999999 +1.2725200000000001 27.971299999999999 2.0417200000000002 +1.50325 29.850100000000001 1.4813799999999999 +0.80008000000000001 86.015900000000002 2.0636899999999998 +1.2725200000000001 50.439799999999998 2.0417200000000002 +-3.7155999999999998 130.953 1.4923599999999999 +-2.0345800000000001 117.845 2.0746799999999999 +3.4589500000000002 12.995900000000001 1.90987 +2.3492600000000001 46.693199999999997 1.99777 +0.54737800000000003 108.48399999999999 1.44842 +-5.0450400000000002 84.148099999999999 1.9428300000000001 +3.94238 42.946599999999997 1.71211 +-5.3197099999999997 99.123500000000007 1.6022400000000001 +3.7555999999999998 87.883700000000005 1.65717 +-2.0345800000000001 140.31399999999999 2.0746799999999999 +3.0524300000000002 41.078800000000001 1.9428300000000001 +1.2725200000000001 129.07400000000001 1.4703900000000001 +-0.47442000000000001 121.592 1.43743 +-0.73810900000000002 123.45999999999999 1.43743 +-5.4515599999999997 67.283000000000001 1.6132200000000001 +-5.8800499999999998 65.426199999999994 1.6901299999999999 +-5.66031 35.464500000000001 1.8769100000000001 +-5.66031 33.585700000000003 1.8769100000000001 +-5.4515599999999997 67.283000000000001 1.90987 +-2.53999 37.332299999999996 1.44842 +-2.0345800000000001 106.60599999999999 2.0746799999999999 +-5.4515599999999997 39.210999999999999 1.90987 +-2.7816999999999998 84.148099999999999 1.4594 +1.50325 110.363 1.4813799999999999 +-3.2651300000000001 74.787099999999995 1.4703900000000001 +3.3380899999999998 82.269300000000001 1.6022400000000001 +-2.0345800000000001 74.787099999999995 1.44842 +3.5688200000000001 93.498099999999994 1.8878999999999999 +0.29467500000000002 44.825400000000002 2.0746799999999999 +1.04179 114.099 1.4594 +-5.66031 74.787099999999995 1.8769100000000001 +-5.0450400000000002 132.821 1.9428300000000001 +0.041973099999999999 52.307600000000001 2.0746799999999999 +3.4589500000000002 106.60599999999999 1.90987 +-5.5614299999999997 97.244699999999995 1.6242099999999999 +0.041973099999999999 78.5227 2.0746799999999999 +-3.7155999999999998 50.439799999999998 2.0307300000000001 +-3.9353400000000001 50.439799999999998 2.0197400000000001 +-3.0234200000000002 84.148099999999999 1.4594 +-5.93499 125.339 1.8109900000000001 +-5.5614299999999997 117.845 1.8878999999999999 +-5.4515599999999997 71.040599999999998 1.90987 +-3.49586 35.464500000000001 2.0417200000000002 +-3.7155999999999998 33.585700000000003 2.0307300000000001 +-3.9353400000000001 61.668599999999998 1.50335 +-5.1878700000000002 22.3569 1.9318500000000001 +3.9753400000000001 78.5227 1.72309 +2.8876200000000001 84.148099999999999 1.55829 +-0.21073 33.585700000000003 2.0746799999999999 +-0.47442000000000001 33.585700000000003 2.0746799999999999 +3.8984299999999998 65.426199999999994 1.8219799999999999 +0.80008000000000001 89.762500000000003 2.0636899999999998 +1.9427300000000001 72.9084 2.0197400000000001 +3.5688200000000001 117.845 1.8878999999999999 +1.2725200000000001 102.85899999999999 1.4703900000000001 +3.0524300000000002 89.762500000000003 1.9428300000000001 +0.041973099999999999 127.206 1.44842 +3.5688200000000001 140.31399999999999 1.6242099999999999 +-5.7482100000000003 140.31399999999999 1.65717 +1.50325 99.123500000000007 1.4813799999999999 +-1.5181899999999999 65.426199999999994 1.43743 +-4.7154199999999999 50.439799999999998 1.5472999999999999 +2.8876200000000001 136.56700000000001 1.55829 +2.8876200000000001 138.435 1.55829 +-0.73810900000000002 84.148099999999999 2.0746799999999999 +3.9753400000000001 123.45999999999999 1.7890200000000001 +3.9973100000000001 125.339 1.77803 +-5.4515599999999997 138.435 1.90987 +3.67869 91.630300000000005 1.64618 +-5.9679500000000001 35.464500000000001 1.7890200000000001 +-4.7154199999999999 52.307600000000001 1.5472999999999999 +3.5688200000000001 95.376900000000006 1.8878999999999999 +-4.8802300000000001 82.269300000000001 1.9648099999999999 +3.3380899999999998 119.71299999999999 1.6022400000000001 +-0.73810900000000002 130.953 2.0746799999999999 +-3.9353400000000001 71.040599999999998 1.50335 +-4.1440999999999999 71.040599999999998 1.50335 +-1.5181899999999999 106.60599999999999 2.0746799999999999 +-1.2544999999999999 108.48399999999999 2.0746799999999999 +-5.3197099999999997 132.821 1.6022400000000001 +1.04179 18.610299999999999 1.4594 +-5.9899199999999997 86.015900000000002 1.77803 +-5.3197099999999997 63.547400000000003 1.92086 +-5.8251200000000001 93.498099999999994 1.6791400000000001 +-4.8802300000000001 121.581 1.9648099999999999 +-5.4515599999999997 136.56700000000001 1.6132200000000001 +-3.2651300000000001 136.56700000000001 2.0417200000000002 +-3.0234200000000002 136.56700000000001 2.0527000000000002 +-1.7818799999999999 39.210999999999999 1.43743 +-5.9679500000000001 31.7179 1.72309 +2.3492600000000001 59.800800000000002 1.51434 +-5.8251200000000001 132.821 1.84395 +-5.9679500000000001 46.693199999999997 1.72309 +-2.0345800000000001 125.339 2.0746799999999999 +1.04179 54.186399999999999 1.4594 +-1.2544999999999999 31.7179 2.0746799999999999 +-4.5286400000000002 29.850100000000001 1.5253300000000001 +-4.7154199999999999 31.7179 1.5472999999999999 +-0.21073 52.307600000000001 2.0746799999999999 +3.1952600000000002 101.002 1.58026 +-4.8802300000000001 132.821 1.9648099999999999 +-5.0450400000000002 93.498099999999994 1.5692699999999999 +0.29467500000000002 37.332299999999996 1.44842 +-4.5286400000000002 125.339 1.98678 +-5.9899199999999997 142.18199999999999 1.77803 +3.1952600000000002 69.161799999999999 1.58026 +0.54737800000000003 117.845 2.0636899999999998 +-5.5614299999999997 102.85899999999999 1.6242099999999999 +2.5360399999999998 59.800800000000002 1.5253300000000001 +3.5688200000000001 78.5227 1.6242099999999999 +3.9973100000000001 130.953 1.7450699999999999 +1.7339800000000001 87.883700000000005 2.0307300000000001 +0.80008000000000001 67.283000000000001 2.0636899999999998 +-4.8802300000000001 127.206 1.9648099999999999 +3.5688200000000001 80.401499999999999 1.8878999999999999 +-5.93499 123.45999999999999 1.71211 +-4.1440999999999999 33.585700000000003 1.50335 +-5.3197099999999997 74.787099999999995 1.92086 +2.3492600000000001 63.547400000000003 1.51434 +-5.8800499999999998 106.60599999999999 1.8219799999999999 +-5.8251200000000001 106.60599999999999 1.84395 +3.8325100000000001 142.18199999999999 1.6791400000000001 +3.3380899999999998 132.821 1.6022400000000001 +-5.1878700000000002 41.078800000000001 1.58026 +-5.3197099999999997 41.078800000000001 1.6022400000000001 +0.29467500000000002 140.31399999999999 2.0636899999999998 +3.8325100000000001 65.426199999999994 1.6791400000000001 +-2.7816999999999998 76.654899999999998 1.4594 +1.7339800000000001 108.48399999999999 2.0307300000000001 +-0.47442000000000001 26.1035 2.0746799999999999 +-5.0450400000000002 22.3569 1.9428300000000001 +-2.28728 91.630300000000005 1.44842 +1.50325 63.547400000000003 2.0417200000000002 +3.5688200000000001 76.654899999999998 1.8878999999999999 +3.67869 16.7425 1.8769100000000001 +-4.5286400000000002 16.7425 1.98678 +-5.5614299999999997 136.56700000000001 1.8878999999999999 +-0.47442000000000001 69.161799999999999 1.43743 +-5.1878700000000002 44.825400000000002 1.58026 +-3.49586 93.498099999999994 2.0417200000000002 +3.5688200000000001 42.946599999999997 1.8878999999999999 +1.2725200000000001 114.099 1.4703900000000001 +-2.28728 50.439799999999998 2.0746799999999999 +-1.2544999999999999 132.821 2.0746799999999999 +-5.9899199999999997 35.464500000000001 1.77803 +-2.28728 136.56700000000001 1.44842 +-2.53999 136.56700000000001 1.44842 +3.9973100000000001 12.995900000000001 1.7450699999999999 +3.7555999999999998 82.269300000000001 1.65717 +-4.7154199999999999 91.630300000000005 1.5472999999999999 +2.5360399999999998 14.8637 1.5253300000000001 +-0.21073 72.9084 2.0746799999999999 +-4.1440999999999999 132.821 1.50335 +0.54737800000000003 24.224699999999999 2.0636899999999998 +3.8984299999999998 140.31399999999999 1.8219799999999999 +3.94238 142.18199999999999 1.8109900000000001 +2.1514899999999999 119.71299999999999 1.50335 +3.67869 127.206 1.8769100000000001 +-1.2544999999999999 35.464500000000001 1.43743 +-5.1878700000000002 127.206 1.9318500000000001 +-5.4515599999999997 72.9084 1.90987 +-2.0345800000000001 56.065199999999997 2.0746799999999999 +-4.5286400000000002 69.161799999999999 1.98678 +0.54737800000000003 104.738 1.44842 +-4.8802300000000001 87.883700000000005 1.55829 +-0.21073 87.883700000000005 1.43743 +-5.5614299999999997 99.123500000000007 1.8878999999999999 +2.5360399999999998 110.363 1.98678 +-0.21073 78.5227 1.43743 +0.54737800000000003 110.363 1.44842 +-3.7155999999999998 24.224699999999999 2.0307300000000001 +-1.5181899999999999 31.7179 1.43743 +-3.2651300000000001 114.099 1.4703900000000001 +-3.0234200000000002 89.762500000000003 1.4594 +-5.1878700000000002 57.921999999999997 1.58026 +-5.66031 101.002 1.64618 +3.8984299999999998 50.439799999999998 1.6901299999999999 +-5.8800499999999998 95.376900000000006 1.6901299999999999 +3.94238 89.762500000000003 1.8109900000000001 +3.8984299999999998 93.498099999999994 1.6901299999999999 +1.50325 134.69999999999999 2.0417200000000002 +-1.5181899999999999 95.376900000000006 1.43743 +-2.0345800000000001 50.439799999999998 2.0746799999999999 +3.7555999999999998 142.18199999999999 1.85494 +1.50325 125.339 1.4813799999999999 +-4.5286400000000002 99.123500000000007 1.98678 +-4.3418599999999996 99.123500000000007 1.99777 +-2.7816999999999998 134.69999999999999 2.0636899999999998 +-2.53999 134.69999999999999 2.0636899999999998 +-5.9679500000000001 101.002 1.72309 +2.5360399999999998 26.1035 1.5253300000000001 +-5.9899199999999997 95.376900000000006 1.77803 +3.4589500000000002 138.435 1.6132200000000001 +-5.3197099999999997 106.60599999999999 1.6022400000000001 +-0.21073 97.244699999999995 1.43743 +3.5688200000000001 41.078800000000001 1.8878999999999999 +-4.8802300000000001 104.738 1.55829 +-4.8802300000000001 102.85899999999999 1.55829 +-3.0234200000000002 142.18199999999999 1.4594 +3.8325100000000001 132.821 1.84395 +-0.73810900000000002 74.787099999999995 1.43743 +-5.93499 97.244699999999995 1.8109900000000001 +-2.7816999999999998 130.953 1.4594 +-5.66031 31.7179 1.8769100000000001 +-5.66031 29.850100000000001 1.8769100000000001 +-3.2651300000000001 14.8637 2.0417200000000002 +0.54737800000000003 89.762500000000003 2.0636899999999998 +2.72282 76.654899999999998 1.9758 +3.0524300000000002 108.48399999999999 1.9428300000000001 +1.50325 89.762500000000003 2.0417200000000002 +3.0524300000000002 16.7425 1.5692699999999999 +2.3492600000000001 130.953 1.99777 +-0.21073 29.850100000000001 1.43743 +-0.21073 31.7179 1.43743 +1.50325 136.56700000000001 1.4813799999999999 +-2.0345800000000001 108.48399999999999 1.44842 +3.94238 69.161799999999999 1.71211 +-5.9679500000000001 37.332299999999996 1.7890200000000001 +-5.9679500000000001 39.210999999999999 1.7890200000000001 +-3.2651300000000001 95.376900000000006 1.4703900000000001 +2.1514899999999999 69.161799999999999 1.50335 +-5.9679500000000001 67.283000000000001 1.72309 +3.8325100000000001 59.800800000000002 1.84395 +-1.5181899999999999 140.31399999999999 2.0746799999999999 +3.4589500000000002 71.040599999999998 1.6132200000000001 +3.3380899999999998 71.040599999999998 1.6022400000000001 +1.9427300000000001 101.002 1.50335 +3.9973100000000001 26.1035 1.7450699999999999 +-3.2651300000000001 97.244699999999995 2.0417200000000002 +1.2725200000000001 87.883700000000005 2.0417200000000002 +3.7555999999999998 132.821 1.85494 +2.3492600000000001 20.489100000000001 1.51434 +1.50325 80.401499999999999 1.4813799999999999 +-0.990811 48.572000000000003 1.43743 +-0.990811 46.693199999999997 1.43743 +-3.49586 37.332299999999996 2.0417200000000002 +0.54737800000000003 138.435 2.0636899999999998 +-5.7482100000000003 48.572000000000003 1.85494 +3.0524300000000002 48.572000000000003 1.9428300000000001 +-3.7155999999999998 63.547400000000003 1.4923599999999999 +-3.7155999999999998 61.668599999999998 1.4923599999999999 +-5.93499 138.435 1.8109900000000001 +-5.4515599999999997 129.07400000000001 1.6132200000000001 +2.72282 119.71299999999999 1.5472999999999999 +0.29467500000000002 102.85899999999999 1.44842 +3.1952600000000002 140.31399999999999 1.58026 +-3.2651300000000001 76.654899999999998 2.0417200000000002 +-3.0234200000000002 76.654899999999998 2.0527000000000002 +-5.1878700000000002 37.332299999999996 1.9318500000000001 +-5.1878700000000002 35.464500000000001 1.9318500000000001 +3.94238 97.244699999999995 1.71211 +3.94238 99.123500000000007 1.71211 +-2.28728 104.738 1.44842 +-2.7816999999999998 125.339 2.0636899999999998 +-5.9899199999999997 91.630300000000005 1.77803 +-5.3197099999999997 119.71299999999999 1.92086 +-5.93499 123.45999999999999 1.8109900000000001 +-5.9679500000000001 115.97799999999999 1.72309 +4.0083000000000002 130.953 1.7560500000000001 +-0.73810900000000002 114.099 1.43743 +-0.73810900000000002 112.22 1.43743 +-5.93499 48.572000000000003 1.8109900000000001 +3.1952600000000002 57.921999999999997 1.9318500000000001 +-0.47442000000000001 102.85899999999999 2.0746799999999999 +-0.21073 104.738 2.0746799999999999 +0.29467500000000002 99.123500000000007 2.0746799999999999 +0.80008000000000001 80.401499999999999 2.0636899999999998 +-4.3418599999999996 140.31399999999999 1.51434 +-5.66031 87.883700000000005 1.8769100000000001 +-2.7816999999999998 136.56700000000001 1.4594 +2.5360399999999998 48.572000000000003 1.5253300000000001 +-1.7818799999999999 57.921999999999997 2.0746799999999999 +1.04179 86.015900000000002 1.4594 +-5.9679500000000001 114.099 1.7890200000000001 +-2.7816999999999998 102.85899999999999 1.4594 +3.3380899999999998 57.921999999999997 1.92086 +-3.0234200000000002 125.339 1.4594 +0.80008000000000001 95.376900000000006 1.4594 +-4.8802300000000001 123.45999999999999 1.55829 +-5.0450400000000002 123.45999999999999 1.5692699999999999 +-5.4515599999999997 50.439799999999998 1.90987 +-5.3197099999999997 129.07400000000001 1.92086 +0.54737800000000003 104.738 2.0636899999999998 +-5.9899199999999997 22.3569 1.77803 +2.5360399999999998 74.787099999999995 1.5253300000000001 +-2.53999 104.738 2.0636899999999998 +-4.1440999999999999 80.401499999999999 1.50335 +-4.1440999999999999 78.5227 1.50335 +-5.0450400000000002 69.161799999999999 1.9428300000000001 +-4.1440999999999999 129.07400000000001 1.50335 +2.72282 24.224699999999999 1.5472999999999999 +-4.1440999999999999 65.426199999999994 1.50335 +-3.49586 104.738 2.0417200000000002 +2.3492600000000001 119.71299999999999 1.99777 +1.50325 67.283000000000001 1.4813799999999999 +-0.990811 31.7179 2.0856699999999999 +-5.93499 142.18199999999999 1.71211 +-2.53999 84.148099999999999 2.0636899999999998 +-5.3197099999999997 67.283000000000001 1.6022400000000001 +2.3492600000000001 110.363 1.51434 +2.72282 48.572000000000003 1.9758 +1.2725200000000001 72.9084 2.0417200000000002 +-5.7482100000000003 123.45999999999999 1.85494 +3.4589500000000002 101.002 1.6132200000000001 +3.4589500000000002 102.85899999999999 1.6132200000000001 +3.3380899999999998 31.7179 1.6022400000000001 +-1.5181899999999999 102.85899999999999 1.43743 +3.8984299999999998 93.498099999999994 1.8219799999999999 +-0.47442000000000001 99.123500000000007 1.43743 +3.94238 61.668599999999998 1.8109900000000001 +2.72282 87.883700000000005 1.5472999999999999 +-4.8802300000000001 140.31399999999999 1.55829 +-4.1440999999999999 110.363 1.50335 +3.67869 86.015900000000002 1.64618 +3.9753400000000001 24.224699999999999 1.72309 +-2.0345800000000001 26.1035 1.44842 +-5.8251200000000001 50.439799999999998 1.84395 +1.9427300000000001 57.921999999999997 2.0197400000000001 +3.94238 129.07400000000001 1.71211 +-5.5614299999999997 104.738 1.8878999999999999 +-3.2651300000000001 39.210999999999999 2.0417200000000002 +3.1952600000000002 57.921999999999997 1.58026 +3.7555999999999998 57.921999999999997 1.65717 +3.8325100000000001 56.065199999999997 1.6791400000000001 +0.29467500000000002 63.547400000000003 1.44842 +-5.3197099999999997 119.71299999999999 1.6022400000000001 +1.04179 31.7179 1.4594 +3.0524300000000002 104.738 1.5692699999999999 +-4.5286400000000002 93.498099999999994 1.98678 +0.54737800000000003 97.244699999999995 1.44842 +-5.3197099999999997 71.040599999999998 1.92086 +-5.4515599999999997 69.161799999999999 1.90987 +-2.53999 140.31399999999999 1.44842 +-2.7816999999999998 142.18199999999999 1.4594 +1.7339800000000001 130.953 2.0307300000000001 +-5.9899199999999997 50.439799999999998 1.77803 +1.7339800000000001 86.015900000000002 1.4923599999999999 +1.04179 57.921999999999997 1.4594 +3.94238 112.22 1.71211 +-5.8251200000000001 48.572000000000003 1.84395 +-5.7482100000000003 50.439799999999998 1.85494 +-5.8800499999999998 82.269300000000001 1.6901299999999999 +-5.93499 41.078800000000001 1.8109900000000001 +-4.3418599999999996 69.161799999999999 1.51434 +-1.7818799999999999 46.693199999999997 1.43743 +3.1952600000000002 101.002 1.9318500000000001 +3.3380899999999998 69.161799999999999 1.6022400000000001 +3.1952600000000002 71.040599999999998 1.58026 +3.67869 26.1035 1.8769100000000001 +-5.9899199999999997 115.97799999999999 1.7450699999999999 +3.8325100000000001 57.921999999999997 1.6791400000000001 +0.041973099999999999 41.078800000000001 2.0746799999999999 +3.8984299999999998 127.206 1.6901299999999999 +3.3380899999999998 140.31399999999999 1.6022400000000001 +-3.49586 50.439799999999998 1.4813799999999999 +3.0524300000000002 67.283000000000001 1.5692699999999999 +-1.7818799999999999 134.69999999999999 1.43743 +2.8876200000000001 95.376900000000006 1.9648099999999999 +0.041973099999999999 39.210999999999999 2.0746799999999999 +0.54737800000000003 132.821 2.0636899999999998 +3.3380899999999998 110.363 1.6022400000000001 +-1.7818799999999999 132.821 1.43743 +3.67869 20.489100000000001 1.64618 +-2.7816999999999998 95.376900000000006 2.0636899999999998 +-5.9899199999999997 26.1035 1.77803 +2.1514899999999999 46.693199999999997 1.50335 +-2.53999 42.946599999999997 2.0636899999999998 +0.29467500000000002 35.464500000000001 2.0746799999999999 +3.5688200000000001 78.5227 1.8878999999999999 +2.1514899999999999 104.738 1.50335 +0.54737800000000003 80.401499999999999 1.44842 +0.54737800000000003 87.883700000000005 1.44842 +-5.1878700000000002 48.572000000000003 1.9318500000000001 +-3.7155999999999998 35.464500000000001 2.0307300000000001 +-4.1440999999999999 71.040599999999998 2.0087600000000001 +-4.5286400000000002 22.3569 1.5253300000000001 +1.7339800000000001 31.7179 2.0307300000000001 +-2.28728 138.435 2.0636899999999998 +1.9427300000000001 123.45999999999999 2.0197400000000001 +0.041973099999999999 138.435 1.44842 +-3.2651300000000001 89.762500000000003 2.0417200000000002 +-3.2651300000000001 91.630300000000005 2.0417200000000002 +3.9973100000000001 99.123500000000007 1.77803 +1.9427300000000001 67.283000000000001 2.0197400000000001 +-5.8800499999999998 50.439799999999998 1.8219799999999999 +3.67869 78.5227 1.64618 +-5.9899199999999997 104.738 1.77803 +-0.73810900000000002 108.48399999999999 2.0746799999999999 +4.0083000000000002 59.800800000000002 1.7560500000000001 +-5.8251200000000001 82.269300000000001 1.6791400000000001 +3.3380899999999998 132.821 1.92086 +-3.7155999999999998 26.1035 2.0307300000000001 +3.5688200000000001 63.547400000000003 1.8878999999999999 +-5.8800499999999998 130.953 1.8219799999999999 +-1.5181899999999999 91.630300000000005 2.0746799999999999 +3.8984299999999998 136.56700000000001 1.6901299999999999 +3.8325100000000001 138.435 1.6791400000000001 +3.1952600000000002 99.123500000000007 1.58026 +-5.0450400000000002 71.040599999999998 1.9428300000000001 +-5.0450400000000002 50.439799999999998 1.5692699999999999 +-5.66031 61.668599999999998 1.64618 +-5.66031 63.547400000000003 1.64618 +-2.53999 27.971299999999999 2.0636899999999998 +-4.7154199999999999 110.363 1.9758 +-2.28728 132.821 2.0636899999999998 +3.8325100000000001 61.668599999999998 1.6791400000000001 +0.80008000000000001 117.845 1.4594 +-5.9679500000000001 102.85899999999999 1.7890200000000001 +-5.5614299999999997 20.489100000000001 1.6242099999999999 +3.0524300000000002 78.5227 1.9428300000000001 +3.8984299999999998 56.065199999999997 1.6901299999999999 +-4.5286400000000002 42.946599999999997 1.5253300000000001 +-4.7154199999999999 44.825400000000002 1.5472999999999999 +3.1952600000000002 48.572000000000003 1.9318500000000001 +-2.28728 52.307600000000001 1.44842 +3.94238 59.800800000000002 1.71211 +3.9753400000000001 57.921999999999997 1.72309 +-3.9353400000000001 119.71299999999999 1.50335 +-4.1440999999999999 119.71299999999999 1.50335 +1.9427300000000001 87.883700000000005 2.0197400000000001 +-2.53999 48.572000000000003 1.44842 +-4.3418599999999996 44.825400000000002 1.99777 +-5.7482100000000003 65.426199999999994 1.85494 +-3.0234200000000002 102.85899999999999 2.0527000000000002 +0.041973099999999999 71.040599999999998 2.0746799999999999 +1.9427300000000001 63.547400000000003 1.50335 +0.54737800000000003 125.339 1.44842 +3.4589500000000002 35.464500000000001 1.6132200000000001 +2.1514899999999999 117.845 1.50335 +-0.21073 125.339 2.0746799999999999 +3.8325100000000001 44.825400000000002 1.84395 +3.8325100000000001 46.693199999999997 1.84395 +2.8876200000000001 99.123500000000007 1.55829 +-2.7816999999999998 61.668599999999998 2.0636899999999998 +-4.7154199999999999 56.065199999999997 1.5472999999999999 +-5.8800499999999998 127.206 1.8219799999999999 +-5.1878700000000002 130.953 1.58026 +-2.53999 110.363 1.44842 +3.8325100000000001 87.883700000000005 1.84395 +-5.8251200000000001 102.85899999999999 1.84395 +-5.9899199999999997 82.269300000000001 1.7450699999999999 +-5.9679500000000001 82.269300000000001 1.72309 +3.9973100000000001 39.210999999999999 1.7450699999999999 +2.1514899999999999 102.85899999999999 1.50335 +3.7555999999999998 42.946599999999997 1.85494 +3.8325100000000001 26.1035 1.84395 +-5.4515599999999997 119.71299999999999 1.90987 +-4.3418599999999996 138.435 1.99777 +2.1514899999999999 86.015900000000002 1.50335 +-5.3197099999999997 95.376900000000006 1.92086 +-5.66031 95.376900000000006 1.8769100000000001 +3.7555999999999998 115.97799999999999 1.85494 +-1.2544999999999999 121.592 1.43743 +-0.990811 119.71299999999999 1.43743 +2.72282 59.800800000000002 1.9758 +1.50325 69.161799999999999 2.0417200000000002 +1.50325 71.040599999999998 2.0417200000000002 +3.4589500000000002 101.002 1.90987 +-3.7155999999999998 48.572000000000003 2.0307300000000001 +-2.0345800000000001 18.610299999999999 1.44842 +-5.66031 114.099 1.8769100000000001 +1.2725200000000001 27.971299999999999 1.4703900000000001 +1.9427300000000001 44.825400000000002 1.50335 +-0.990811 136.56700000000001 2.0746799999999999 +0.54737800000000003 76.654899999999998 2.0636899999999998 +0.80008000000000001 76.654899999999998 2.0636899999999998 +1.04179 50.439799999999998 1.4594 +-5.4515599999999997 48.572000000000003 1.90987 +1.04179 27.971299999999999 2.0527000000000002 +-5.0450400000000002 140.31399999999999 1.9428300000000001 +3.1952600000000002 104.738 1.9318500000000001 +-5.9899199999999997 46.693199999999997 1.77803 +-5.0450400000000002 99.123500000000007 1.9428300000000001 +-5.1878700000000002 74.787099999999995 1.58026 +2.72282 86.015900000000002 1.5472999999999999 +-2.28728 72.9084 1.44842 +2.8876200000000001 72.9084 1.9648099999999999 +-5.5614299999999997 56.065199999999997 1.8878999999999999 +-1.5181899999999999 134.69999999999999 1.43743 +3.0524300000000002 108.48399999999999 1.5692699999999999 +-5.93499 52.307600000000001 1.71211 +4.0083000000000002 123.45999999999999 1.7560500000000001 +3.94238 41.078800000000001 1.8109900000000001 +3.0524300000000002 97.244699999999995 1.5692699999999999 +1.04179 84.148099999999999 1.4594 +3.1952600000000002 61.668599999999998 1.9318500000000001 +-5.1878700000000002 18.610299999999999 1.58026 +-5.3197099999999997 65.426199999999994 1.92086 +-5.9679500000000001 91.630300000000005 1.7890200000000001 +3.8325100000000001 112.22 1.84395 +-2.0345800000000001 14.8637 2.0746799999999999 +-0.990811 18.610299999999999 1.43743 +0.041973099999999999 86.015900000000002 2.0746799999999999 +1.50325 18.610299999999999 1.4813799999999999 +0.29467500000000002 123.45999999999999 1.44842 +2.5360399999999998 121.581 1.5253300000000001 +-2.53999 59.800800000000002 2.0636899999999998 +0.80008000000000001 37.332299999999996 2.0636899999999998 +-5.8800499999999998 69.161799999999999 1.8219799999999999 +1.9427300000000001 99.123500000000007 1.50335 +-5.0450400000000002 20.489100000000001 1.5692699999999999 +-5.8251200000000001 121.581 1.6791400000000001 +3.7555999999999998 93.498099999999994 1.65717 +-5.66031 44.825400000000002 1.8769100000000001 +-2.28728 74.787099999999995 1.44842 +0.54737800000000003 57.921999999999997 1.44842 +-5.8251200000000001 74.787099999999995 1.6791400000000001 +-5.8800499999999998 76.654899999999998 1.6901299999999999 +-2.7816999999999998 63.547400000000003 1.4594 +3.0524300000000002 125.339 1.5692699999999999 +-5.3197099999999997 31.7179 1.6022400000000001 +3.67869 22.3569 1.64618 +2.5360399999999998 82.269300000000001 1.5253300000000001 +3.5688200000000001 127.206 1.8878999999999999 +-1.7818799999999999 74.787099999999995 2.0746799999999999 +-1.5181899999999999 76.654899999999998 2.0746799999999999 +-1.5181899999999999 106.60599999999999 1.43743 +-3.2651300000000001 102.85899999999999 1.4703900000000001 +-3.2651300000000001 104.738 1.4703900000000001 +-2.0345800000000001 71.040599999999998 1.44842 +-5.93499 65.426199999999994 1.71211 +3.9973100000000001 46.693199999999997 1.77803 +-4.1440999999999999 69.161799999999999 1.50335 +-4.3418599999999996 52.307600000000001 1.99777 +3.5688200000000001 52.307600000000001 1.6242099999999999 +1.50325 46.693199999999997 1.4813799999999999 +1.2725200000000001 54.186399999999999 2.0417200000000002 +3.9753400000000001 48.572000000000003 1.72309 +3.9753400000000001 50.439799999999998 1.72309 +-5.93499 18.610299999999999 1.71211 +3.9973100000000001 132.821 1.7450699999999999 +-3.9353400000000001 97.244699999999995 1.50335 +-3.9353400000000001 95.376900000000006 1.50335 +1.04179 136.56700000000001 2.0527000000000002 +1.50325 33.585700000000003 1.4813799999999999 +-5.9679500000000001 50.439799999999998 1.7890200000000001 +3.0524300000000002 14.8637 1.9428300000000001 +2.1514899999999999 72.9084 2.0087600000000001 +-0.21073 37.332299999999996 2.0746799999999999 +-5.0450400000000002 87.883700000000005 1.5692699999999999 +-5.9899199999999997 44.825400000000002 1.7450699999999999 +-2.28728 61.668599999999998 2.0746799999999999 +-1.7818799999999999 76.654899999999998 1.43743 +1.50325 140.31399999999999 2.0417200000000002 +-5.0450400000000002 136.56700000000001 1.5692699999999999 +-0.990811 18.610299999999999 2.0856699999999999 +3.94238 71.040599999999998 1.71211 +-4.5286400000000002 65.426199999999994 1.5253300000000001 +3.9753400000000001 52.307600000000001 1.72309 +2.5360399999999998 119.71299999999999 1.5253300000000001 +1.2725200000000001 119.71299999999999 2.0417200000000002 +-3.2651300000000001 80.401499999999999 1.4703900000000001 +1.2725200000000001 129.07400000000001 2.0417200000000002 +-1.5181899999999999 42.946599999999997 2.0746799999999999 +-3.49586 56.065199999999997 1.4813799999999999 +3.9753400000000001 42.946599999999997 1.72309 +-3.7155999999999998 132.821 2.0307300000000001 +3.0524300000000002 89.762500000000003 1.5692699999999999 +2.8876200000000001 80.401499999999999 1.55829 +-5.4515599999999997 138.435 1.6132200000000001 +-4.7154199999999999 24.224699999999999 1.5472999999999999 +-5.0450400000000002 86.015900000000002 1.9428300000000001 +-0.990811 50.439799999999998 2.0856699999999999 +3.8984299999999998 27.971299999999999 1.8219799999999999 +3.8984299999999998 46.693199999999997 1.6901299999999999 +3.8325100000000001 46.693199999999997 1.6791400000000001 +-0.47442000000000001 119.71299999999999 2.0746799999999999 +-0.47442000000000001 121.581 2.0746799999999999 +3.94238 52.307600000000001 1.8109900000000001 +3.0524300000000002 138.435 1.5692699999999999 +-4.1440999999999999 20.489100000000001 2.0087600000000001 +-4.3418599999999996 18.610299999999999 1.99777 +-5.93499 76.654899999999998 1.8109900000000001 +-3.2651300000000001 16.7425 1.4703900000000001 +-3.0234200000000002 16.7425 1.4594 +-5.8251200000000001 16.7425 1.84395 +3.67869 27.971299999999999 1.8769100000000001 +-5.1878700000000002 132.821 1.58026 +3.67869 117.845 1.8769100000000001 +-0.990811 69.161799999999999 2.0746799999999999 +1.04179 78.5227 1.4594 +3.3380899999999998 12.995900000000001 1.6022400000000001 +0.54737800000000003 56.065199999999997 2.0636899999999998 +-3.9353400000000001 80.401499999999999 2.0197400000000001 +3.9753400000000001 134.69999999999999 1.7890200000000001 +-1.5181899999999999 125.339 1.43743 +-1.7818799999999999 127.206 1.43743 +3.9973100000000001 86.015900000000002 1.7450699999999999 +-5.9679500000000001 42.946599999999997 1.72309 +0.29467500000000002 106.60599999999999 1.44842 +-5.5614299999999997 27.971299999999999 1.8878999999999999 +-5.66031 26.1035 1.8769100000000001 +3.5688200000000001 82.269300000000001 1.6242099999999999 +-5.0450400000000002 26.1035 1.5692699999999999 +0.54737800000000003 76.654899999999998 1.44842 +-1.5181899999999999 108.48399999999999 2.0746799999999999 +-1.5181899999999999 50.439799999999998 2.0746799999999999 +2.1514899999999999 82.269300000000001 1.50335 +3.0524300000000002 138.435 1.9428300000000001 +3.1952600000000002 140.31399999999999 1.9318500000000001 +-5.8800499999999998 106.60599999999999 1.6901299999999999 +-5.4515599999999997 140.31399999999999 1.6132200000000001 +2.72282 27.971299999999999 1.9758 +-3.0234200000000002 35.464500000000001 1.4594 +3.7555999999999998 54.186399999999999 1.65717 +3.7555999999999998 56.065199999999997 1.65717 +-3.2651300000000001 35.464500000000001 2.0417200000000002 +-2.7816999999999998 101.002 1.4594 +4.0083000000000002 95.376900000000006 1.7560500000000001 +3.0524300000000002 123.45999999999999 1.9428300000000001 +2.8876200000000001 121.581 1.9648099999999999 +-5.9899199999999997 110.363 1.77803 +-5.4515599999999997 42.946599999999997 1.90987 +1.2725200000000001 106.60599999999999 1.4703900000000001 +2.8876200000000001 112.22 1.55829 +-1.5181899999999999 119.71299999999999 1.43743 +3.94238 57.921999999999997 1.71211 +1.2725200000000001 101.002 2.0417200000000002 +1.50325 101.002 2.0417200000000002 +3.67869 114.099 1.8769100000000001 +-5.9679500000000001 48.572000000000003 1.7890200000000001 +3.8325100000000001 140.31399999999999 1.84395 +2.5360399999999998 134.69999999999999 1.5253300000000001 +1.7339800000000001 102.85899999999999 2.0307300000000001 +-2.53999 89.762500000000003 2.0636899999999998 +2.5360399999999998 59.800800000000002 1.98678 +-2.7816999999999998 42.946599999999997 1.4594 +-2.7816999999999998 41.078800000000001 1.4594 +2.72282 110.363 1.9758 +3.94238 63.547400000000003 1.71211 +-4.3418599999999996 102.85899999999999 1.99777 +-5.4515599999999997 112.22 1.90987 +-5.7482100000000003 44.825400000000002 1.65717 +-5.1878700000000002 69.161799999999999 1.9318500000000001 +-5.5614299999999997 35.464500000000001 1.6242099999999999 +-3.2651300000000001 104.738 2.0417200000000002 +2.3492600000000001 65.426199999999994 1.99777 +1.2725200000000001 130.953 1.4703900000000001 +1.2725200000000001 95.376900000000006 2.0417200000000002 +1.9427300000000001 20.489100000000001 2.0197400000000001 +0.54737800000000003 86.015900000000002 1.44842 +1.9427300000000001 121.581 1.4923599999999999 +-4.7154199999999999 65.426199999999994 1.9758 +1.7339800000000001 29.850100000000001 1.4923599999999999 +-5.9899199999999997 138.435 1.7450699999999999 +-5.4515599999999997 71.040599999999998 1.6132200000000001 +0.041973099999999999 99.123500000000007 2.0746799999999999 +-0.73810900000000002 134.69999999999999 2.0746799999999999 +3.4589500000000002 104.738 1.90987 +-4.8802300000000001 74.787099999999995 1.55829 +4.0083000000000002 104.738 1.7560500000000001 +3.9973100000000001 104.738 1.7450699999999999 +2.8876200000000001 95.376900000000006 1.55829 +1.2725200000000001 29.850100000000001 1.4703900000000001 +-4.5286400000000002 78.5227 1.98678 +2.8876200000000001 48.572000000000003 1.9648099999999999 +-0.73810900000000002 18.610299999999999 1.43743 +-2.0345800000000001 84.148099999999999 1.44842 +3.8325100000000001 63.547400000000003 1.6791400000000001 +1.7339800000000001 63.547400000000003 1.4923599999999999 +-3.2651300000000001 27.971299999999999 2.0417200000000002 +-5.3197099999999997 86.015900000000002 1.92086 +0.29467500000000002 121.581 2.0636899999999998 +-5.9899199999999997 130.953 1.77803 +-5.5614299999999997 140.31399999999999 1.8878999999999999 +3.67869 99.123500000000007 1.8769100000000001 +-0.990811 89.762500000000003 1.43743 +3.9753400000000001 57.921999999999997 1.7890200000000001 +3.0524300000000002 134.69999999999999 1.5692699999999999 +-5.8800499999999998 89.762500000000003 1.8219799999999999 +-0.990811 57.921999999999997 2.0856699999999999 +3.67869 67.283000000000001 1.64618 +1.2725200000000001 110.363 1.4703900000000001 +-5.3197099999999997 84.148099999999999 1.92086 +2.5360399999999998 84.148099999999999 1.5253300000000001 +2.72282 84.148099999999999 1.5472999999999999 +-5.93499 37.332299999999996 1.71211 +-0.73810900000000002 56.065199999999997 2.0746799999999999 +3.4589500000000002 82.269300000000001 1.90987 +-3.0234200000000002 50.439799999999998 1.4594 +-4.3418599999999996 71.040599999999998 1.51434 +-1.5181899999999999 29.850100000000001 1.43743 +2.1514899999999999 80.401499999999999 2.0087600000000001 +2.5360399999999998 35.464500000000001 1.5253300000000001 +1.7339800000000001 44.825400000000002 2.0307300000000001 +-5.9899199999999997 106.60599999999999 1.77803 +1.04179 123.45999999999999 1.4594 +3.5688200000000001 20.489100000000001 1.6242099999999999 +-1.7818799999999999 41.078800000000001 1.43743 +-2.7816999999999998 112.22 1.4594 +1.2725200000000001 71.040599999999998 1.4703900000000001 +3.4589500000000002 42.946599999999997 1.6132200000000001 +-5.1878700000000002 138.435 1.9318500000000001 +-5.0450400000000002 138.435 1.9428300000000001 +3.9973100000000001 130.953 1.77803 +3.4589500000000002 18.610299999999999 1.6132200000000001 +3.5688200000000001 121.581 1.6242099999999999 +-5.9899199999999997 115.97799999999999 1.77803 +-4.8802300000000001 119.71299999999999 1.9648099999999999 +-4.8802300000000001 57.921999999999997 1.55829 +2.72282 121.581 1.5472999999999999 +-5.8251200000000001 134.69999999999999 1.84395 +4.0083000000000002 138.435 1.7560500000000001 +-2.28728 72.9084 2.0746799999999999 +-5.5614299999999997 74.787099999999995 1.8878999999999999 +-5.9679500000000001 27.971299999999999 1.72309 +1.7339800000000001 48.572000000000003 2.0307300000000001 +4.0083000000000002 125.339 1.7560500000000001 +0.29467500000000002 112.22 1.44842 +0.041973099999999999 114.099 1.44842 +-3.0234200000000002 140.31399999999999 2.0527000000000002 +-5.4515599999999997 132.821 1.6132200000000001 +-2.28728 130.953 2.0636899999999998 +-0.990811 33.585700000000003 2.0856699999999999 +-3.7155999999999998 101.002 2.0307300000000001 +3.4589500000000002 50.439799999999998 1.90987 +-5.3197099999999997 112.22 1.92086 +-5.0450400000000002 18.610299999999999 1.5692699999999999 +-0.990811 138.435 1.43743 +-5.3197099999999997 127.206 1.92086 +3.8325100000000001 27.971299999999999 1.6791400000000001 +1.9427300000000001 127.206 1.4923599999999999 +1.04179 134.69999999999999 2.0527000000000002 +2.8876200000000001 48.572000000000003 1.55829 +-0.73810900000000002 44.825400000000002 1.43743 +-5.9899199999999997 82.269300000000001 1.77803 +3.1952600000000002 56.065199999999997 1.58026 +-0.21073 33.585700000000003 1.43743 +2.5360399999999998 65.426199999999994 1.98678 +-0.990811 48.572000000000003 2.0856699999999999 +2.8876200000000001 76.654899999999998 1.55829 +-4.1440999999999999 134.69999999999999 1.50335 +0.80008000000000001 78.5227 1.4594 +0.54737800000000003 78.5227 1.44842 +1.9427300000000001 104.738 1.50335 +-0.73810900000000002 57.921999999999997 2.0746799999999999 +-5.1878700000000002 41.078800000000001 1.9318500000000001 +1.9427300000000001 22.3569 2.0197400000000001 +-5.8800499999999998 132.821 1.8219799999999999 +1.04179 140.31399999999999 1.4594 +3.67869 123.45999999999999 1.64618 +3.67869 138.435 1.64618 +-4.5286400000000002 82.269300000000001 1.98678 +3.1952600000000002 39.210999999999999 1.58026 +-5.93499 82.269300000000001 1.8109900000000001 +-2.0345800000000001 42.946599999999997 2.0746799999999999 +-0.21073 61.668599999999998 1.43743 +-5.3197099999999997 132.821 1.92086 +0.54737800000000003 106.60599999999999 1.44842 +3.8325100000000001 136.56700000000001 1.6791400000000001 +-5.0450400000000002 18.610299999999999 1.9428300000000001 +-5.1878700000000002 16.7425 1.9318500000000001 +-3.49586 44.825400000000002 1.4813799999999999 +-4.1440999999999999 142.18199999999999 1.50335 +1.7339800000000001 41.078800000000001 1.4923599999999999 +-5.1878700000000002 74.787099999999995 1.9318500000000001 +-3.2651300000000001 119.71299999999999 2.0417200000000002 +-5.9679500000000001 104.738 1.72309 +-4.5286400000000002 101.002 1.5253300000000001 +-1.5181899999999999 93.498099999999994 2.0746799999999999 +-1.2544999999999999 93.498099999999994 2.0746799999999999 +3.67869 119.71299999999999 1.64618 +0.54737800000000003 129.07400000000001 2.0636899999999998 +-0.73810900000000002 78.5227 1.43743 +2.3492600000000001 89.762500000000003 1.99777 +2.1514899999999999 57.921999999999997 1.50335 +3.9973100000000001 89.762500000000003 1.7450699999999999 +3.67869 57.921999999999997 1.8769100000000001 +3.5688200000000001 57.921999999999997 1.8878999999999999 +-4.7154199999999999 99.123500000000007 1.5472999999999999 +-3.49586 44.825400000000002 2.0417200000000002 +0.80008000000000001 114.099 1.4594 +-5.66031 119.71299999999999 1.8769100000000001 +-0.990811 129.07400000000001 1.43743 +-3.9353400000000001 54.186399999999999 1.50335 +-5.9899199999999997 104.738 1.7450699999999999 +-5.66031 140.31399999999999 1.8769100000000001 +-5.0450400000000002 24.224699999999999 1.9428300000000001 +0.54737800000000003 22.3569 1.44842 +3.8325100000000001 63.547400000000003 1.84395 +-4.1440999999999999 44.825400000000002 2.0087600000000001 +-2.28728 125.339 1.44842 +-0.990811 114.099 1.43743 +-4.3418599999999996 41.078800000000001 1.99777 +-2.53999 101.002 2.0636899999999998 +-2.7816999999999998 39.210999999999999 1.4594 +1.04179 78.5227 2.0527000000000002 +0.54737800000000003 54.186399999999999 1.44842 +1.7339800000000001 33.585700000000003 1.4923599999999999 +2.5360399999999998 95.376900000000006 1.98678 +-3.7155999999999998 125.339 2.0307300000000001 +-4.8802300000000001 54.186399999999999 1.9648099999999999 +3.9973100000000001 16.7425 1.7450699999999999 +-1.7818799999999999 80.401499999999999 2.0746799999999999 +-3.49586 91.630300000000005 2.0417200000000002 +-3.2651300000000001 93.498099999999994 2.0417200000000002 +-4.7154199999999999 125.339 1.9758 +-1.5181899999999999 52.307600000000001 2.0746799999999999 +-1.2544999999999999 52.307600000000001 2.0746799999999999 +3.9753400000000001 104.738 1.72309 +-5.8800499999999998 117.845 1.8219799999999999 +-5.66031 35.464500000000001 1.64618 +-4.3418599999999996 33.585700000000003 1.51434 +-2.7816999999999998 71.040599999999998 2.0636899999999998 +-1.2544999999999999 63.547400000000003 2.0746799999999999 +-0.21073 127.206 1.43743 +-0.21073 125.339 1.43743 +-2.28728 54.186399999999999 1.44842 +-5.8800499999999998 104.738 1.6901299999999999 +-0.990811 101.002 1.43743 +-4.7154199999999999 132.821 1.5472999999999999 +-3.9353400000000001 42.946599999999997 1.50335 +2.1514899999999999 99.123500000000007 1.50335 +-2.53999 106.60599999999999 2.0636899999999998 +3.1952600000000002 97.244699999999995 1.9318500000000001 +-5.4515599999999997 110.363 1.90987 +-2.53999 93.498099999999994 1.44842 +-2.28728 22.3569 1.44842 +-5.9679500000000001 46.693199999999997 1.7890200000000001 +-5.66031 72.9084 1.8769100000000001 +-3.2651300000000001 78.5227 2.0417200000000002 +3.8984299999999998 39.210999999999999 1.8219799999999999 +-5.0450400000000002 121.581 1.9428300000000001 +-5.9899199999999997 63.547400000000003 1.77803 +3.7555999999999998 102.85899999999999 1.65717 +-5.9679500000000001 78.5227 1.72309 +-2.7816999999999998 20.489100000000001 2.0636899999999998 +1.9427300000000001 16.7425 2.0197400000000001 +-4.3418599999999996 86.015900000000002 1.99777 +-1.2544999999999999 106.60599999999999 1.43743 +3.9973100000000001 20.489100000000001 1.77803 +1.04179 134.69999999999999 1.4594 +2.5360399999999998 125.339 1.5253300000000001 +2.5360399999999998 127.206 1.5253300000000001 +0.041973099999999999 108.48399999999999 2.0746799999999999 +0.041973099999999999 104.738 2.0746799999999999 +3.1952600000000002 106.60599999999999 1.9318500000000001 +1.9427300000000001 106.60599999999999 2.0197400000000001 +-2.7816999999999998 87.883700000000005 2.0636899999999998 +-5.9899199999999997 80.401499999999999 1.7450699999999999 +2.5360399999999998 44.825400000000002 1.98678 +-3.49586 106.60599999999999 2.0417200000000002 +-3.2651300000000001 106.60599999999999 2.0417200000000002 +3.4589500000000002 56.065199999999997 1.90987 +-4.7154199999999999 93.498099999999994 1.5472999999999999 +-5.1878700000000002 91.630300000000005 1.58026 +-4.3418599999999996 104.738 1.51434 +3.8984299999999998 18.610299999999999 1.8219799999999999 +3.8984299999999998 20.489100000000001 1.8219799999999999 +-5.3197099999999997 37.332299999999996 1.92086 +3.8325100000000001 99.123500000000007 1.6791400000000001 +-5.66031 33.585700000000003 1.64618 +0.041973099999999999 117.845 2.0746799999999999 +1.7339800000000001 130.953 1.4923599999999999 +-5.4515599999999997 93.498099999999994 1.6132200000000001 +3.4589500000000002 39.210999999999999 1.6132200000000001 +-4.7154199999999999 86.015900000000002 1.9758 +-4.8802300000000001 86.015900000000002 1.9648099999999999 +0.54737800000000003 123.45999999999999 1.44842 +-3.0234200000000002 41.078800000000001 2.0527000000000002 +3.3380899999999998 50.439799999999998 1.92086 +3.94238 54.186399999999999 1.8109900000000001 +3.1952600000000002 24.224699999999999 1.58026 +1.7339800000000001 44.825400000000002 1.4923599999999999 +-5.3197099999999997 41.078800000000001 1.92086 +-5.1878700000000002 42.946599999999997 1.9318500000000001 +3.94238 127.206 1.71211 +-5.1878700000000002 140.31399999999999 1.58026 +-5.3197099999999997 140.31399999999999 1.6022400000000001 +-5.93499 117.845 1.71211 +-1.2544999999999999 132.821 1.43743 +2.72282 50.439799999999998 1.9758 +-3.49586 112.22 2.0417200000000002 +-0.47442000000000001 35.464500000000001 1.43743 +-2.28728 136.56700000000001 2.0636899999999998 +3.4589500000000002 37.332299999999996 1.6132200000000001 +3.67869 115.97799999999999 1.8769100000000001 +-5.5614299999999997 31.7179 1.6242099999999999 +2.72282 87.883700000000005 1.9758 +-5.93499 104.738 1.71211 +-0.990811 42.946599999999997 2.0856699999999999 +-0.73810900000000002 138.435 1.43743 +-0.990811 140.31399999999999 1.43743 +-0.21073 102.85899999999999 2.0746799999999999 +-5.66031 39.210999999999999 1.64618 +3.3380899999999998 95.376900000000006 1.92086 +-3.0234200000000002 129.07400000000001 1.4594 +3.7555999999999998 76.654899999999998 1.85494 +3.67869 134.69999999999999 1.8769100000000001 +-0.47442000000000001 91.630300000000005 2.0746799999999999 +-3.9353400000000001 72.9084 1.50335 +1.2725200000000001 99.123500000000007 2.0417200000000002 +1.04179 97.244699999999995 2.0527000000000002 +-0.73810900000000002 31.7179 2.0746799999999999 +-4.5286400000000002 48.572000000000003 1.5253300000000001 +-5.0450400000000002 117.845 1.5692699999999999 +-5.8251200000000001 87.883700000000005 1.84395 +-0.47442000000000001 26.1035 1.43743 +3.1952600000000002 46.693199999999997 1.58026 +-0.47442000000000001 48.572000000000003 1.43743 +-0.47442000000000001 106.60599999999999 2.0746799999999999 +-0.47442000000000001 104.738 2.0746799999999999 +-2.53999 86.015900000000002 2.0636899999999998 +3.67869 95.376900000000006 1.64618 +-5.5614299999999997 14.8637 1.6242099999999999 +-3.2651300000000001 84.148099999999999 1.4703900000000001 +-0.990811 44.825400000000002 2.0856699999999999 +-5.9679500000000001 102.85899999999999 1.72309 +-5.7482100000000003 33.585700000000003 1.65717 +-5.9899199999999997 78.5227 1.77803 +-5.9679500000000001 69.161799999999999 1.72309 +1.9427300000000001 24.224699999999999 2.0197400000000001 +1.2725200000000001 22.3569 1.4703900000000001 +-5.0450400000000002 104.738 1.9428300000000001 +-5.0450400000000002 84.148099999999999 1.5692699999999999 +-3.49586 140.31399999999999 2.0417200000000002 +3.7555999999999998 99.123500000000007 1.65717 +1.04179 80.401499999999999 1.4594 +3.94238 104.738 1.8109900000000001 +-3.7155999999999998 91.630300000000005 2.0307300000000001 +0.041973099999999999 112.22 2.0746799999999999 +-2.0345800000000001 121.592 1.44842 +-2.28728 110.363 1.44842 +-1.5181899999999999 22.3569 1.43743 +2.8876200000000001 71.040599999999998 1.55829 +0.29467500000000002 48.572000000000003 1.44842 +0.041973099999999999 50.439799999999998 1.44842 +-2.0345800000000001 42.946599999999997 1.44842 +3.3380899999999998 134.69999999999999 1.6022400000000001 +1.04179 67.283000000000001 2.0527000000000002 +1.50325 76.654899999999998 2.0417200000000002 +1.7339800000000001 20.489100000000001 1.4923599999999999 +-5.93499 138.435 1.71211 +-5.1878700000000002 84.148099999999999 1.9318500000000001 +-4.7154199999999999 119.71299999999999 1.5472999999999999 +-4.3418599999999996 42.946599999999997 1.99777 +3.0524300000000002 106.60599999999999 1.5692699999999999 +-5.93499 42.946599999999997 1.71211 +-4.5286400000000002 123.45999999999999 1.5253300000000001 +-3.0234200000000002 132.821 2.0527000000000002 +3.5688200000000001 87.883700000000005 1.8878999999999999 +3.67869 89.762500000000003 1.8769100000000001 +1.2725200000000001 123.45999999999999 2.0417200000000002 +-2.0345800000000001 69.161799999999999 1.44842 +0.54737800000000003 114.099 2.0636899999999998 +3.94238 115.97799999999999 1.71211 +-5.93499 56.065199999999997 1.71211 +-4.7154199999999999 142.18199999999999 1.5472999999999999 +2.5360399999999998 132.821 1.98678 +1.9427300000000001 91.630300000000005 2.0197400000000001 +-0.990811 37.332299999999996 1.43743 +1.7339800000000001 106.60599999999999 2.0307300000000001 +-2.28728 76.654899999999998 1.44842 +-4.7154199999999999 20.489100000000001 1.5472999999999999 +-4.8802300000000001 95.376900000000006 1.9648099999999999 +-4.7154199999999999 97.244699999999995 1.9758 +-4.8802300000000001 121.592 1.55829 +-4.3418599999999996 20.489100000000001 1.99777 +3.3380899999999998 99.123500000000007 1.6022400000000001 +-3.0234200000000002 99.123500000000007 2.0527000000000002 +2.3492600000000001 132.821 1.99777 +2.3492600000000001 134.69999999999999 1.99777 +0.54737800000000003 97.244699999999995 2.0636899999999998 +-5.8800499999999998 61.668599999999998 1.6901299999999999 +3.94238 101.002 1.71211 +3.9753400000000001 99.123500000000007 1.72309 +-5.1878700000000002 97.244699999999995 1.9318500000000001 +-4.1440999999999999 93.498099999999994 2.0087600000000001 +3.8984299999999998 86.015900000000002 1.6901299999999999 +-2.0345800000000001 52.307600000000001 2.0746799999999999 +-5.4515599999999997 95.376900000000006 1.90987 +-3.2651300000000001 106.60599999999999 1.4703900000000001 +2.72282 129.07400000000001 1.9758 +-3.0234200000000002 112.22 2.0527000000000002 +-3.0234200000000002 27.971299999999999 1.4594 +-0.21073 76.654899999999998 1.43743 +-0.47442000000000001 76.654899999999998 1.43743 +2.1514899999999999 84.148099999999999 2.0087600000000001 +3.0524300000000002 123.45999999999999 1.5692699999999999 +-3.49586 108.48399999999999 1.4813799999999999 +0.80008000000000001 50.439799999999998 1.4594 +0.54737800000000003 52.307600000000001 1.44842 +3.4589500000000002 87.883700000000005 1.90987 +-3.9353400000000001 76.654899999999998 1.50335 +-5.1878700000000002 102.85899999999999 1.58026 +2.8876200000000001 31.7179 1.9648099999999999 +3.8984299999999998 142.18199999999999 1.6901299999999999 +-1.7818799999999999 57.921999999999997 1.43743 +0.54737800000000003 102.85899999999999 2.0636899999999998 +3.9973100000000001 106.60599999999999 1.77803 +2.72282 12.995900000000001 1.5472999999999999 +1.50325 108.48399999999999 1.4813799999999999 +3.4589500000000002 125.339 1.90987 +-5.7482100000000003 52.307600000000001 1.85494 +3.8325100000000001 125.339 1.84395 +1.9427300000000001 41.078800000000001 2.0197400000000001 +1.04179 82.269300000000001 2.0527000000000002 +-2.53999 22.3569 1.44842 +-2.28728 20.489100000000001 1.44842 +-3.7155999999999998 84.148099999999999 1.4923599999999999 +-3.9353400000000001 86.015900000000002 1.50335 +-4.8802300000000001 59.800800000000002 1.55829 +-5.7482100000000003 71.040599999999998 1.85494 +3.4589500000000002 31.7179 1.90987 +3.7555999999999998 76.654899999999998 1.65717 +-2.53999 65.426199999999994 2.0636899999999998 +2.5360399999999998 97.244699999999995 1.98678 +-0.21073 20.489100000000001 1.43743 +-2.53999 63.547400000000003 1.44842 +1.2725200000000001 89.762500000000003 2.0417200000000002 +1.2725200000000001 65.426199999999994 2.0417200000000002 +-5.9679500000000001 142.18199999999999 1.7890200000000001 +-3.0234200000000002 104.738 1.4594 +-5.3197099999999997 52.307600000000001 1.92086 +3.8984299999999998 59.800800000000002 1.8219799999999999 +-5.66031 104.738 1.8769100000000001 +-0.990811 86.015900000000002 1.43743 +3.9753400000000001 56.065199999999997 1.7890200000000001 +1.2725200000000001 41.078800000000001 1.4703900000000001 +3.3380899999999998 35.464500000000001 1.6022400000000001 +-4.1440999999999999 31.7179 2.0087600000000001 +1.9427300000000001 63.547400000000003 2.0197400000000001 +-5.7482100000000003 112.22 1.85494 +3.7555999999999998 136.56700000000001 1.85494 +3.5688200000000001 115.97799999999999 1.8878999999999999 +-2.0345800000000001 127.206 2.0746799999999999 +0.29467500000000002 136.56700000000001 2.0636899999999998 +-5.9899199999999997 110.363 1.7450699999999999 +3.9753400000000001 130.953 1.72309 +-1.7818799999999999 65.426199999999994 1.43743 +-2.0345800000000001 67.283000000000001 1.44842 +-3.7155999999999998 48.572000000000003 1.4923599999999999 +3.0524300000000002 112.22 1.5692699999999999 +3.9973100000000001 72.9084 1.7450699999999999 +2.5360399999999998 33.585700000000003 1.5253300000000001 +3.94238 82.269300000000001 1.8109900000000001 +-5.4515599999999997 76.654899999999998 1.90987 +3.7555999999999998 86.015900000000002 1.85494 +-1.7818799999999999 56.065199999999997 2.0746799999999999 +2.5360399999999998 115.97799999999999 1.5253300000000001 +2.72282 115.97799999999999 1.5472999999999999 +-0.21073 42.946599999999997 2.0746799999999999 +3.8984299999999998 71.040599999999998 1.8219799999999999 +3.94238 72.9084 1.8109900000000001 +-1.5181899999999999 112.22 2.0746799999999999 +3.7555999999999998 78.5227 1.65717 +3.7555999999999998 18.610299999999999 1.85494 +-0.47442000000000001 67.283000000000001 2.0746799999999999 +-2.7816999999999998 138.435 2.0636899999999998 +-2.0345800000000001 95.376900000000006 1.44842 +-1.7818799999999999 112.22 1.43743 +-1.7818799999999999 37.332299999999996 1.43743 +3.9973100000000001 67.283000000000001 1.77803 +3.8984299999999998 67.283000000000001 1.8219799999999999 +-5.7482100000000003 61.668599999999998 1.65717 +3.1952600000000002 97.244699999999995 1.58026 +2.72282 125.339 1.9758 +-1.2544999999999999 27.971299999999999 1.43743 +-5.9679500000000001 138.435 1.7890200000000001 +0.54737800000000003 50.439799999999998 1.44842 +0.29467500000000002 52.307600000000001 1.44842 +2.5360399999999998 37.332299999999996 1.5253300000000001 +-4.3418599999999996 37.332299999999996 1.51434 +2.5360399999999998 48.572000000000003 1.98678 +-5.4515599999999997 110.363 1.6132200000000001 +-5.5614299999999997 112.22 1.6242099999999999 +1.50325 86.015900000000002 2.0417200000000002 +-4.3418599999999996 134.69999999999999 1.51434 +-4.5286400000000002 136.56700000000001 1.5253300000000001 +-0.73810900000000002 67.283000000000001 1.43743 +3.8984299999999998 76.654899999999998 1.8219799999999999 +-5.66031 72.9084 1.64618 +-3.7155999999999998 89.762500000000003 1.4923599999999999 +-3.0234200000000002 71.040599999999998 2.0527000000000002 +3.3380899999999998 80.401499999999999 1.6022400000000001 +1.2725200000000001 52.307600000000001 2.0417200000000002 +-2.53999 91.630300000000005 1.44842 +-5.3197099999999997 121.581 1.6022400000000001 +-5.3197099999999997 76.654899999999998 1.6022400000000001 +-5.5614299999999997 119.71299999999999 1.8878999999999999 +3.7555999999999998 97.244699999999995 1.65717 +-3.2651300000000001 121.592 1.4703900000000001 +3.8325100000000001 104.738 1.6791400000000001 +-2.53999 93.498099999999994 2.0636899999999998 +3.9973100000000001 129.07400000000001 1.77803 +2.72282 125.339 1.5472999999999999 +-5.66031 56.065199999999997 1.64618 +-5.66031 16.7425 1.8769100000000001 +-5.7482100000000003 14.8637 1.85494 +0.80008000000000001 67.283000000000001 1.4594 +-5.3197099999999997 27.971299999999999 1.92086 +-4.1440999999999999 138.435 2.0087600000000001 +-1.5181899999999999 86.015900000000002 1.43743 +-1.5181899999999999 84.148099999999999 1.43743 +-0.73810900000000002 35.464500000000001 2.0746799999999999 +-0.990811 104.738 2.0746799999999999 +-3.49586 130.953 2.0417200000000002 +1.2725200000000001 44.825400000000002 2.0417200000000002 +1.7339800000000001 14.8637 1.4923599999999999 +1.9427300000000001 12.995900000000001 1.50335 +-5.93499 112.22 1.8109900000000001 +-4.1440999999999999 57.921999999999997 1.50335 +1.04179 115.97799999999999 2.0527000000000002 +-3.9353400000000001 74.787099999999995 1.50335 +-0.73810900000000002 110.363 2.0746799999999999 +-2.28728 39.210999999999999 2.0746799999999999 +-5.5614299999999997 78.5227 1.8878999999999999 +-2.0345800000000001 140.31399999999999 1.44842 +-2.28728 142.18199999999999 1.44842 +-5.9899199999999997 46.693199999999997 1.7450699999999999 +3.4589500000000002 50.439799999999998 1.6132200000000001 +3.0524300000000002 99.123500000000007 1.9428300000000001 +-0.990811 54.186399999999999 2.0856699999999999 +1.50325 52.307600000000001 2.0417200000000002 +3.8325100000000001 142.18199999999999 1.84395 +0.041973099999999999 138.435 2.0746799999999999 +3.94238 24.224699999999999 1.71211 +-1.7818799999999999 48.572000000000003 2.0746799999999999 +1.7339800000000001 22.3569 2.0307300000000001 +-2.53999 132.821 2.0636899999999998 +-2.7816999999999998 99.123500000000007 2.0636899999999998 +-5.1878700000000002 121.581 1.9318500000000001 +-3.0234200000000002 86.015900000000002 1.4594 +2.3492600000000001 106.60599999999999 1.99777 +2.3492600000000001 108.48399999999999 1.99777 +2.3492600000000001 31.7179 1.51434 +-5.8800499999999998 59.800800000000002 1.6901299999999999 +3.4589500000000002 86.015900000000002 1.90987 +-3.2651300000000001 39.210999999999999 1.4703900000000001 +-1.5181899999999999 50.439799999999998 1.43743 +1.9427300000000001 121.581 2.0197400000000001 +-3.0234200000000002 127.206 2.0527000000000002 +-3.49586 117.845 1.4813799999999999 +0.041973099999999999 140.31399999999999 1.44842 +-5.1878700000000002 114.099 1.58026 +-3.0234200000000002 74.787099999999995 2.0527000000000002 +-4.1440999999999999 67.283000000000001 2.0087600000000001 +-4.1440999999999999 69.161799999999999 2.0087600000000001 +-2.0345800000000001 106.60599999999999 1.44842 +-5.4515599999999997 97.244699999999995 1.90987 +-0.21073 59.800800000000002 2.0746799999999999 +-0.21073 61.668599999999998 2.0746799999999999 +-3.49586 71.040599999999998 1.4813799999999999 +-0.73810900000000002 82.269300000000001 1.43743 +1.7339800000000001 78.5227 2.0307300000000001 +-1.7818799999999999 35.464500000000001 1.43743 +-0.47442000000000001 101.002 1.43743 +3.9973100000000001 117.845 1.7450699999999999 +-3.9353400000000001 16.7425 2.0197400000000001 +2.3492600000000001 74.787099999999995 1.99777 +2.3492600000000001 76.654899999999998 1.99777 +-1.7818799999999999 29.850100000000001 1.43743 +-5.4515599999999997 123.45999999999999 1.90987 +3.67869 59.800800000000002 1.8769100000000001 +-4.5286400000000002 33.585700000000003 1.98678 +3.94238 84.148099999999999 1.8109900000000001 +3.8325100000000001 12.995900000000001 1.6791400000000001 +3.9973100000000001 76.654899999999998 1.77803 +3.0524300000000002 59.800800000000002 1.5692699999999999 +3.5688200000000001 82.269300000000001 1.8878999999999999 +2.8876200000000001 102.85899999999999 1.55829 +2.8876200000000001 101.002 1.55829 +-2.53999 112.22 2.0636899999999998 +3.5688200000000001 132.821 1.6242099999999999 +3.1952600000000002 35.464500000000001 1.58026 +-5.93499 48.572000000000003 1.71211 +3.1952600000000002 31.7179 1.9318500000000001 +-1.5181899999999999 110.363 1.43743 +-5.3197099999999997 56.065199999999997 1.92086 +1.2725200000000001 125.339 1.4703900000000001 +-2.28728 121.581 2.0636899999999998 +3.94238 97.244699999999995 1.8109900000000001 +0.29467500000000002 48.572000000000003 2.0746799999999999 +3.94238 108.48399999999999 1.8109900000000001 +3.8984299999999998 50.439799999999998 1.8219799999999999 +-5.7482100000000003 138.435 1.65717 +1.04179 26.1035 1.4594 +3.4589500000000002 127.206 1.6132200000000001 +-5.3197099999999997 57.921999999999997 1.6022400000000001 +0.54737800000000003 136.56700000000001 2.0636899999999998 +-5.93499 22.3569 1.8109900000000001 +-4.1440999999999999 16.7425 1.50335 +-5.93499 35.464500000000001 1.71211 +-5.8800499999999998 29.850100000000001 1.8219799999999999 +-5.8251200000000001 89.762500000000003 1.6791400000000001 +-3.2651300000000001 52.307600000000001 1.4703900000000001 +2.5360399999999998 14.8637 1.98678 +3.9973100000000001 110.363 1.77803 +-5.7482100000000003 117.845 1.85494 +-2.28728 42.946599999999997 2.0746799999999999 +-3.7155999999999998 44.825400000000002 2.0307300000000001 +-5.8800499999999998 54.186399999999999 1.6901299999999999 +0.041973099999999999 31.7179 1.44842 +-4.1440999999999999 54.186399999999999 1.50335 +-1.5181899999999999 18.610299999999999 1.43743 +-1.5181899999999999 20.489100000000001 1.43743 +-1.5181899999999999 129.07400000000001 1.43743 +-5.0450400000000002 46.693199999999997 1.9428300000000001 +3.94238 29.850100000000001 1.71211 +0.80008000000000001 56.065199999999997 2.0636899999999998 +3.3380899999999998 97.244699999999995 1.92086 +0.041973099999999999 76.654899999999998 2.0746799999999999 +0.041973099999999999 35.464500000000001 2.0746799999999999 +-0.990811 97.244699999999995 2.0746799999999999 +-0.990811 95.376900000000006 2.0746799999999999 +-5.3197099999999997 117.845 1.92086 +-1.2544999999999999 44.825400000000002 1.43743 +-1.2544999999999999 67.283000000000001 1.43743 +-2.28728 33.585700000000003 1.44842 +-5.8800499999999998 22.3569 1.8219799999999999 +0.54737800000000003 110.363 2.0636899999999998 +-0.21073 46.693199999999997 1.43743 +3.94238 71.040599999999998 1.8109900000000001 +-5.3197099999999997 78.5227 1.6022400000000001 +0.29467500000000002 14.8637 1.44842 +3.7555999999999998 93.498099999999994 1.85494 +-1.7818799999999999 42.946599999999997 1.43743 +-0.73810900000000002 78.5227 2.0746799999999999 +1.04179 125.339 1.4594 +-5.66031 142.18199999999999 1.8769100000000001 +3.1952600000000002 80.401499999999999 1.58026 +3.4589500000000002 24.224699999999999 1.6132200000000001 +-0.990811 12.995900000000001 1.43743 +-5.9679500000000001 50.439799999999998 1.72309 +-0.73810900000000002 72.9084 1.43743 +2.1514899999999999 67.283000000000001 1.50335 +-5.3197099999999997 50.439799999999998 1.92086 +-0.990811 29.850100000000001 2.0856699999999999 +-5.66031 123.45999999999999 1.8769100000000001 +-4.8802300000000001 52.307600000000001 1.9648099999999999 +2.8876200000000001 108.48399999999999 1.9648099999999999 +3.9973100000000001 50.439799999999998 1.77803 +2.72282 33.585700000000003 1.5472999999999999 +-4.3418599999999996 61.668599999999998 1.51434 +-2.0345800000000001 112.22 2.0746799999999999 +3.7555999999999998 106.60599999999999 1.65717 +1.50325 114.099 1.4813799999999999 +-5.9899199999999997 129.07400000000001 1.7450699999999999 +3.8984299999999998 12.995900000000001 1.8219799999999999 +0.29467500000000002 119.71299999999999 2.0636899999999998 +-5.9679500000000001 82.269300000000001 1.7890200000000001 +-0.47442000000000001 31.7179 1.43743 +1.04179 35.464500000000001 1.4594 +4.0083000000000002 142.18199999999999 1.7560500000000001 +-0.47442000000000001 95.376900000000006 1.43743 +-5.8251200000000001 138.435 1.6791400000000001 +3.3380899999999998 101.002 1.92086 +1.9427300000000001 14.8637 2.0197400000000001 +-5.8251200000000001 16.7425 1.6791400000000001 +3.8984299999999998 106.60599999999999 1.8219799999999999 +3.9973100000000001 127.206 1.77803 +-4.1440999999999999 125.339 1.50335 +-0.47442000000000001 35.464500000000001 2.0746799999999999 +-4.5286400000000002 99.123500000000007 1.5253300000000001 +-4.1440999999999999 138.435 1.50335 +-5.8251200000000001 99.123500000000007 1.84395 +2.8876200000000001 26.1035 1.55829 +2.72282 27.971299999999999 1.5472999999999999 +-4.1440999999999999 101.002 2.0087600000000001 +-5.8251200000000001 41.078800000000001 1.6791400000000001 +3.9973100000000001 102.85899999999999 1.77803 +-3.7155999999999998 24.224699999999999 1.4923599999999999 +-5.66031 42.946599999999997 1.64618 +-1.5181899999999999 104.738 2.0746799999999999 +-3.2651300000000001 89.762500000000003 1.4703900000000001 +-3.49586 89.762500000000003 1.4813799999999999 +-5.8800499999999998 16.7425 1.8219799999999999 +-5.8800499999999998 18.610299999999999 1.8219799999999999 +-0.47442000000000001 106.60599999999999 1.43743 +-5.9899199999999997 48.572000000000003 1.77803 +-0.990811 123.45999999999999 2.0746799999999999 +2.5360399999999998 46.693199999999997 1.5253300000000001 +2.72282 46.693199999999997 1.5472999999999999 +3.5688200000000001 61.668599999999998 1.8878999999999999 +-5.9679500000000001 54.186399999999999 1.72309 +-5.9679500000000001 41.078800000000001 1.7890200000000001 +-2.53999 80.401499999999999 1.44842 +-3.49586 82.269300000000001 1.4813799999999999 +-4.7154199999999999 104.738 1.5472999999999999 +2.8876200000000001 61.668599999999998 1.9648099999999999 +-1.7818799999999999 69.161799999999999 2.0746799999999999 +-5.9899199999999997 67.283000000000001 1.7450699999999999 +-1.5181899999999999 27.971299999999999 2.0746799999999999 +-3.9353400000000001 127.206 2.0197400000000001 +-4.3418599999999996 134.69999999999999 1.99777 +-2.0345800000000001 37.332299999999996 1.44842 +-0.990811 134.69999999999999 1.43743 +-5.4515599999999997 125.339 1.6132200000000001 +-5.8800499999999998 102.85899999999999 1.6901299999999999 +-1.2544999999999999 101.002 2.0746799999999999 +1.9427300000000001 129.07400000000001 1.4923599999999999 +1.7339800000000001 129.07400000000001 1.4923599999999999 +3.9753400000000001 65.426199999999994 1.7890200000000001 +-1.2544999999999999 69.161799999999999 2.0746799999999999 +-0.990811 127.206 1.43743 +3.8325100000000001 26.1035 1.6791400000000001 +-0.73810900000000002 138.435 2.0746799999999999 +1.2725200000000001 18.610299999999999 2.0417200000000002 +2.5360399999999998 76.654899999999998 1.98678 +1.2725200000000001 61.668599999999998 1.4703900000000001 +0.80008000000000001 95.376900000000006 2.0636899999999998 +-2.28728 93.498099999999994 1.44842 +-3.2651300000000001 108.48399999999999 2.0417200000000002 +-3.0234200000000002 110.363 2.0527000000000002 +-4.7154199999999999 82.269300000000001 1.9758 +2.1514899999999999 69.161799999999999 2.0087600000000001 +-5.4515599999999997 26.1035 1.90987 +1.04179 20.489100000000001 2.0527000000000002 +2.72282 134.69999999999999 1.5472999999999999 +-5.1878700000000002 129.07400000000001 1.9318500000000001 +3.67869 132.821 1.8769100000000001 +3.7555999999999998 134.69999999999999 1.85494 +3.0524300000000002 134.69999999999999 1.9428300000000001 +-5.4515599999999997 91.630300000000005 1.6132200000000001 +0.041973099999999999 72.9084 1.44842 +1.04179 87.883700000000005 2.0527000000000002 +-0.73810900000000002 134.69999999999999 1.43743 +1.50325 84.148099999999999 2.0417200000000002 +1.50325 44.825400000000002 2.0417200000000002 +-4.1440999999999999 59.800800000000002 2.0087600000000001 +-4.3418599999999996 59.800800000000002 1.99777 +-5.9679500000000001 80.401499999999999 1.7890200000000001 +-2.53999 41.078800000000001 1.44842 +3.5688200000000001 134.69999999999999 1.8878999999999999 +-5.9679500000000001 104.738 1.7890200000000001 +-2.0345800000000001 89.762500000000003 2.0746799999999999 +-5.93499 57.921999999999997 1.8109900000000001 +2.72282 29.850100000000001 1.9758 +-4.5286400000000002 108.48399999999999 1.98678 +-0.73810900000000002 46.693199999999997 2.0746799999999999 +-3.7155999999999998 71.040599999999998 2.0307300000000001 +-3.49586 71.040599999999998 2.0417200000000002 +-4.8802300000000001 26.1035 1.9648099999999999 +2.8876200000000001 91.630300000000005 1.55829 +3.9753400000000001 114.099 1.72309 +-3.2651300000000001 127.206 2.0417200000000002 +-1.7818799999999999 121.581 2.0746799999999999 +3.9753400000000001 138.435 1.72309 +1.04179 112.22 1.4594 +2.72282 35.464500000000001 1.5472999999999999 +1.2725200000000001 39.210999999999999 1.4703900000000001 +-4.1440999999999999 67.283000000000001 1.50335 +-0.990811 132.821 2.0746799999999999 +-3.7155999999999998 72.9084 1.4923599999999999 +-2.0345800000000001 91.630300000000005 2.0746799999999999 +2.8876200000000001 22.3569 1.9648099999999999 +-5.7482100000000003 108.48399999999999 1.85494 +-3.49586 102.85899999999999 1.4813799999999999 +-2.7816999999999998 110.363 2.0636899999999998 +-5.3197099999999997 89.762500000000003 1.92086 +-5.93499 142.18199999999999 1.8109900000000001 +-3.7155999999999998 65.426199999999994 1.4923599999999999 +-5.5614299999999997 59.800800000000002 1.6242099999999999 +-5.9899199999999997 65.426199999999994 1.7450699999999999 +1.04179 42.946599999999997 1.4594 +-5.9679500000000001 129.07400000000001 1.72309 +-5.3197099999999997 136.56700000000001 1.6022400000000001 +3.8984299999999998 76.654899999999998 1.6901299999999999 +3.94238 110.363 1.71211 +2.5360399999999998 125.339 1.98678 +3.94238 84.148099999999999 1.71211 +3.8325100000000001 35.464500000000001 1.6791400000000001 +-2.53999 82.269300000000001 1.44842 +3.1952600000000002 74.787099999999995 1.58026 +-0.73810900000000002 110.363 1.43743 +-0.990811 112.22 1.43743 +0.29467500000000002 22.3569 2.0746799999999999 +2.72282 54.186399999999999 1.5472999999999999 +-0.990811 37.332299999999996 2.0856699999999999 +-1.2544999999999999 31.7179 1.43743 +3.67869 130.953 1.64618 +-2.0345800000000001 48.572000000000003 2.0746799999999999 +-5.93499 46.693199999999997 1.8109900000000001 +3.9973100000000001 78.5227 1.7450699999999999 +-2.7816999999999998 104.738 2.0636899999999998 +3.5688200000000001 119.71299999999999 1.6242099999999999 +3.4589500000000002 121.581 1.6132200000000001 +-5.66031 99.123500000000007 1.64618 +0.80008000000000001 112.22 2.0636899999999998 +-0.21073 99.123500000000007 2.0746799999999999 +-5.5614299999999997 87.883700000000005 1.6242099999999999 +-0.47442000000000001 50.439799999999998 1.43743 +3.8984299999999998 84.148099999999999 1.6901299999999999 +1.50325 114.099 2.0417200000000002 +3.7555999999999998 54.186399999999999 1.85494 +-4.7154199999999999 22.3569 1.5472999999999999 +-0.990811 41.078800000000001 1.43743 +1.50325 35.464500000000001 2.0417200000000002 +-3.7155999999999998 22.3569 1.4923599999999999 +-5.8251200000000001 37.332299999999996 1.6791400000000001 +-5.5614299999999997 31.7179 1.8878999999999999 +-0.21073 63.547400000000003 1.43743 +2.3492600000000001 69.161799999999999 1.51434 +2.1514899999999999 71.040599999999998 1.50335 +-4.8802300000000001 69.161799999999999 1.9648099999999999 +1.7339800000000001 59.800800000000002 1.4923599999999999 +3.94238 14.8637 1.8109900000000001 +3.8325100000000001 37.332299999999996 1.84395 +-4.5286400000000002 59.800800000000002 1.98678 +1.2725200000000001 121.581 2.0417200000000002 +2.72282 138.435 1.5472999999999999 +-4.5286400000000002 71.040599999999998 1.98678 +-4.5286400000000002 72.9084 1.98678 +3.94238 12.995900000000001 1.71211 +-5.7482100000000003 16.7425 1.85494 +-3.9353400000000001 78.5227 2.0197400000000001 +0.80008000000000001 71.040599999999998 1.4594 +-5.66031 99.123500000000007 1.8769100000000001 +0.041973099999999999 119.71299999999999 2.0746799999999999 +2.1514899999999999 114.099 1.50335 +3.9753400000000001 125.339 1.7890200000000001 +3.8325100000000001 18.610299999999999 1.6791400000000001 +-3.7155999999999998 46.693199999999997 1.4923599999999999 +-2.28728 41.078800000000001 2.0746799999999999 +3.9973100000000001 115.97799999999999 1.77803 +3.1952600000000002 72.9084 1.9318500000000001 +3.9753400000000001 72.9084 1.72309 +-5.0450400000000002 125.339 1.9428300000000001 +2.8876200000000001 29.850100000000001 1.9648099999999999 +-3.7155999999999998 86.015900000000002 1.4923599999999999 +1.7339800000000001 76.654899999999998 1.4923599999999999 +-3.49586 67.283000000000001 2.0417200000000002 +-2.7816999999999998 114.099 1.4594 +3.8984299999999998 129.07400000000001 1.8219799999999999 +3.7555999999999998 125.339 1.85494 +-4.3418599999999996 50.439799999999998 1.51434 +-3.0234200000000002 39.210999999999999 1.4594 +3.1952600000000002 22.3569 1.58026 +-0.47442000000000001 42.946599999999997 2.0746799999999999 +-0.47442000000000001 41.078800000000001 2.0746799999999999 +-1.5181899999999999 121.581 2.0746799999999999 +-0.990811 24.224699999999999 1.43743 +-0.73810900000000002 22.3569 1.43743 +3.9973100000000001 134.69999999999999 1.77803 +0.80008000000000001 140.31399999999999 2.0636899999999998 +-4.5286400000000002 52.307600000000001 1.98678 +-1.5181899999999999 48.572000000000003 2.0746799999999999 +-1.2544999999999999 50.439799999999998 2.0746799999999999 +3.3380899999999998 33.585700000000003 1.6022400000000001 +1.7339800000000001 114.099 1.4923599999999999 +-2.7816999999999998 97.244699999999995 1.4594 +-2.7816999999999998 95.376900000000006 1.4594 +-5.8251200000000001 52.307600000000001 1.84395 +-1.5181899999999999 119.71299999999999 2.0746799999999999 +3.4589500000000002 140.31399999999999 1.6132200000000001 +3.94238 56.065199999999997 1.71211 +-5.8251200000000001 125.339 1.6791400000000001 +-5.8800499999999998 127.206 1.6901299999999999 +-3.49586 95.376900000000006 2.0417200000000002 +2.72282 140.31399999999999 1.9758 +-5.4515599999999997 114.099 1.6132200000000001 +-4.7154199999999999 18.610299999999999 1.9758 +-4.7154199999999999 42.946599999999997 1.9758 +-5.8251200000000001 24.224699999999999 1.84395 +-3.2651300000000001 99.123500000000007 1.4703900000000001 +2.5360399999999998 136.56700000000001 1.5253300000000001 +2.5360399999999998 44.825400000000002 1.5253300000000001 +2.72282 67.283000000000001 1.9758 +3.94238 114.099 1.8109900000000001 +3.9973100000000001 84.148099999999999 1.7450699999999999 +-4.3418599999999996 91.630300000000005 1.99777 +-0.73810900000000002 65.426199999999994 2.0746799999999999 +-1.5181899999999999 114.099 2.0746799999999999 +-3.9353400000000001 142.18199999999999 1.4923599999999999 +-5.0450400000000002 78.5227 1.9428300000000001 +3.8984299999999998 14.8637 1.8219799999999999 +-5.9899199999999997 52.307600000000001 1.7450699999999999 +-5.8251200000000001 87.883700000000005 1.6791400000000001 +0.54737800000000003 95.376900000000006 1.44842 +-5.1878700000000002 112.22 1.58026 +-5.5614299999999997 142.18199999999999 1.6242099999999999 +2.1514899999999999 57.921999999999997 2.0087600000000001 +2.72282 142.18199999999999 1.5472999999999999 +-5.66031 106.60599999999999 1.64618 +-2.53999 115.97799999999999 1.44842 +0.041973099999999999 142.18199999999999 1.44842 +2.1514899999999999 56.065199999999997 1.50335 +-3.0234200000000002 46.693199999999997 2.0527000000000002 +-5.0450400000000002 114.099 1.5692699999999999 +-5.1878700000000002 110.363 1.58026 +-5.0450400000000002 59.800800000000002 1.5692699999999999 +2.3492600000000001 99.123500000000007 1.99777 +-5.8251200000000001 84.148099999999999 1.84395 +-5.7482100000000003 84.148099999999999 1.85494 +2.3492600000000001 42.946599999999997 1.51434 +3.0524300000000002 48.572000000000003 1.5692699999999999 +-0.21073 87.883700000000005 2.0746799999999999 +-0.21073 71.040599999999998 2.0746799999999999 +3.67869 76.654899999999998 1.64618 +-1.5181899999999999 95.376900000000006 2.0746799999999999 +2.8876200000000001 24.224699999999999 1.55829 +3.4589500000000002 54.186399999999999 1.6132200000000001 +3.5688200000000001 54.186399999999999 1.6242099999999999 +-4.7154199999999999 46.693199999999997 1.5472999999999999 +-5.7482100000000003 80.401499999999999 1.65717 +-5.1878700000000002 102.85899999999999 1.9318500000000001 +0.54737800000000003 84.148099999999999 1.44842 +0.29467500000000002 106.60599999999999 2.0746799999999999 +-5.93499 54.186399999999999 1.71211 +-5.5614299999999997 29.850100000000001 1.8878999999999999 +-0.47442000000000001 72.9084 2.0746799999999999 +-5.8800499999999998 63.547400000000003 1.8219799999999999 +-4.5286400000000002 91.630300000000005 1.98678 +0.80008000000000001 39.210999999999999 1.4594 +-5.8800499999999998 57.921999999999997 1.6901299999999999 +0.29467500000000002 129.07400000000001 2.0636899999999998 +3.1952600000000002 108.48399999999999 1.58026 +-3.9353400000000001 104.738 2.0197400000000001 +2.3492600000000001 138.435 1.99777 +-0.21073 42.946599999999997 1.43743 +0.041973099999999999 54.186399999999999 2.0746799999999999 +3.8984299999999998 37.332299999999996 1.8219799999999999 +2.72282 39.210999999999999 1.5472999999999999 +-5.1878700000000002 61.668599999999998 1.58026 +-5.0450400000000002 61.668599999999998 1.5692699999999999 +3.5688200000000001 108.48399999999999 1.6242099999999999 +2.1514899999999999 74.787099999999995 2.0087600000000001 +3.9753400000000001 35.464500000000001 1.72309 +0.80008000000000001 50.439799999999998 2.0636899999999998 +3.94238 20.489100000000001 1.71211 +0.29467500000000002 108.48399999999999 2.0746799999999999 +-2.0345800000000001 65.426199999999994 1.44842 +-4.3418599999999996 127.206 1.51434 +0.54737800000000003 87.883700000000005 2.0636899999999998 +-3.9353400000000001 16.7425 1.50335 +2.3492600000000001 39.210999999999999 1.51434 +-1.5181899999999999 82.269300000000001 2.0746799999999999 +1.50325 63.547400000000003 1.4813799999999999 +2.72282 127.206 1.5472999999999999 +-3.49586 54.186399999999999 1.4813799999999999 +-3.7155999999999998 89.762500000000003 2.0307300000000001 +-5.5614299999999997 115.97799999999999 1.6242099999999999 +-2.7816999999999998 59.800800000000002 2.0636899999999998 +2.8876200000000001 93.498099999999994 1.55829 +-5.4515599999999997 108.48399999999999 1.6132200000000001 +2.1514899999999999 130.953 1.50335 +3.7555999999999998 14.8637 1.85494 +3.67869 12.995900000000001 1.8769100000000001 +-5.3197099999999997 14.8637 1.6022400000000001 +-2.0345800000000001 108.48399999999999 2.0746799999999999 +-1.7818799999999999 119.71299999999999 1.43743 +-2.7816999999999998 119.71299999999999 2.0636899999999998 +2.5360399999999998 57.921999999999997 1.98678 +-1.2544999999999999 102.85899999999999 1.43743 +-3.2651300000000001 132.821 2.0417200000000002 +-1.2544999999999999 65.426199999999994 1.43743 +3.8325100000000001 82.269300000000001 1.84395 +-1.2544999999999999 24.224699999999999 1.43743 +3.8984299999999998 110.363 1.6901299999999999 +0.29467500000000002 61.668599999999998 1.44842 +1.04179 65.426199999999994 1.4594 +-3.7155999999999998 42.946599999999997 1.4923599999999999 +2.5360399999999998 97.244699999999995 1.5253300000000001 +1.50325 20.489100000000001 1.4813799999999999 +1.04179 22.3569 1.4594 +1.50325 119.71299999999999 2.0417200000000002 +-5.93499 130.953 1.71211 +3.8325100000000001 56.065199999999997 1.84395 +2.8876200000000001 106.60599999999999 1.55829 +-4.5286400000000002 33.585700000000003 1.5253300000000001 +3.8325100000000001 84.148099999999999 1.84395 +-2.0345800000000001 104.738 1.44842 +2.8876200000000001 110.363 1.9648099999999999 +-5.8800499999999998 114.099 1.6901299999999999 +0.80008000000000001 102.85899999999999 1.4594 +0.29467500000000002 29.850100000000001 1.44842 +-2.0345800000000001 93.498099999999994 2.0746799999999999 +-2.7816999999999998 89.762500000000003 1.4594 +2.8876200000000001 12.995900000000001 1.9648099999999999 +1.04179 89.762500000000003 2.0527000000000002 +-2.53999 138.435 1.44842 +-2.28728 97.244699999999995 1.44842 +-3.49586 89.762500000000003 2.0417200000000002 +3.9753400000000001 44.825400000000002 1.7890200000000001 +-2.0345800000000001 129.07400000000001 2.0746799999999999 +1.2725200000000001 71.040599999999998 2.0417200000000002 +3.7555999999999998 37.332299999999996 1.85494 +3.9753400000000001 76.654899999999998 1.7890200000000001 +3.0524300000000002 22.3569 1.5692699999999999 +3.5688200000000001 89.762500000000003 1.8878999999999999 +-3.2651300000000001 140.31399999999999 2.0417200000000002 +4.0083000000000002 31.7179 1.7560500000000001 +3.8984299999999998 48.572000000000003 1.8219799999999999 +2.8876200000000001 37.332299999999996 1.55829 +-1.2544999999999999 61.668599999999998 1.43743 +1.7339800000000001 127.206 2.0307300000000001 +1.50325 127.206 2.0417200000000002 +-5.8800499999999998 93.498099999999994 1.6901299999999999 +2.72282 57.921999999999997 1.5472999999999999 +2.8876200000000001 56.065199999999997 1.55829 +-2.7816999999999998 82.269300000000001 1.4594 +-3.0234200000000002 56.065199999999997 2.0527000000000002 +0.80008000000000001 91.630300000000005 2.0636899999999998 +1.04179 108.48399999999999 1.4594 +0.80008000000000001 108.48399999999999 1.4594 +-4.7154199999999999 84.148099999999999 1.5472999999999999 +-4.5286400000000002 112.22 1.98678 +2.72282 93.498099999999994 1.9758 +-5.3197099999999997 57.921999999999997 1.92086 +-5.1878700000000002 57.921999999999997 1.9318500000000001 +-0.21073 48.572000000000003 1.43743 +0.54737800000000003 117.845 1.44842 +3.9753400000000001 26.1035 1.7890200000000001 +3.94238 142.18199999999999 1.71211 +1.9427300000000001 114.099 2.0197400000000001 +3.4589500000000002 48.572000000000003 1.90987 +3.0524300000000002 86.015900000000002 1.5692699999999999 +-4.3418599999999996 48.572000000000003 1.99777 +1.2725200000000001 97.244699999999995 2.0417200000000002 +2.5360399999999998 33.585700000000003 1.98678 +-3.2651300000000001 123.45999999999999 2.0417200000000002 +-2.0345800000000001 142.18199999999999 1.44842 +-5.3197099999999997 140.31399999999999 1.92086 +-5.4515599999999997 140.31399999999999 1.90987 +-2.28728 50.439799999999998 1.44842 +0.80008000000000001 31.7179 1.4594 +0.80008000000000001 35.464500000000001 1.4594 +2.5360399999999998 80.401499999999999 1.5253300000000001 +0.54737800000000003 99.123500000000007 1.44842 +-2.7816999999999998 72.9084 1.4594 +-4.8802300000000001 129.07400000000001 1.9648099999999999 +-4.8802300000000001 130.953 1.9648099999999999 +-5.93499 108.48399999999999 1.8109900000000001 +1.9427300000000001 134.69999999999999 2.0197400000000001 +-0.990811 67.283000000000001 1.43743 +-3.49586 74.787099999999995 1.4813799999999999 +-4.3418599999999996 114.099 1.99777 +-1.5181899999999999 110.363 2.0746799999999999 +-2.28728 87.883700000000005 2.0746799999999999 +0.041973099999999999 121.592 1.44842 +-5.8800499999999998 31.7179 1.8219799999999999 +-2.0345800000000001 138.435 2.0746799999999999 +-5.66031 14.8637 1.8769100000000001 +3.0524300000000002 82.269300000000001 1.5692699999999999 +3.9753400000000001 69.161799999999999 1.72309 +-5.0450400000000002 14.8637 1.5692699999999999 +-2.53999 129.07400000000001 2.0636899999999998 +-2.7816999999999998 114.099 2.0636899999999998 +3.1952600000000002 106.60599999999999 1.58026 +3.0524300000000002 121.581 1.5692699999999999 +-5.66031 125.339 1.8769100000000001 +-3.49586 101.002 1.4813799999999999 +-4.8802300000000001 140.31399999999999 1.9648099999999999 +1.2725200000000001 63.547400000000003 2.0417200000000002 +-0.21073 35.464500000000001 2.0746799999999999 +-5.8800499999999998 24.224699999999999 1.8219799999999999 +1.2725200000000001 80.401499999999999 1.4703900000000001 +1.04179 82.269300000000001 1.4594 +-5.9899199999999997 69.161799999999999 1.7450699999999999 +-0.73810900000000002 121.581 2.0746799999999999 +-5.1878700000000002 31.7179 1.9318500000000001 +-0.990811 119.71299999999999 2.0746799999999999 +0.54737800000000003 48.572000000000003 1.44842 +-5.8251200000000001 26.1035 1.84395 +-5.9899199999999997 54.186399999999999 1.77803 +-1.2544999999999999 76.654899999999998 1.43743 +-5.5614299999999997 99.123500000000007 1.6242099999999999 +-2.0345800000000001 72.9084 2.0746799999999999 +-0.47442000000000001 59.800800000000002 2.0746799999999999 +1.9427300000000001 129.07400000000001 2.0197400000000001 +0.041973099999999999 106.60599999999999 2.0746799999999999 +-3.0234200000000002 41.078800000000001 1.4594 +3.4589500000000002 84.148099999999999 1.6132200000000001 +-1.2544999999999999 39.210999999999999 2.0746799999999999 +0.29467500000000002 119.71299999999999 1.44842 +-1.2544999999999999 114.099 2.0746799999999999 +3.8325100000000001 12.995900000000001 1.84395 +-2.0345800000000001 20.489100000000001 2.0746799999999999 +3.0524300000000002 20.489100000000001 1.5692699999999999 +1.7339800000000001 50.439799999999998 1.4923599999999999 +2.8876200000000001 104.738 1.55829 +3.5688200000000001 65.426199999999994 1.6242099999999999 +3.9753400000000001 14.8637 1.72309 +0.80008000000000001 48.572000000000003 2.0636899999999998 +1.9427300000000001 142.18199999999999 1.4923599999999999 +0.041973099999999999 129.07400000000001 2.0746799999999999 +3.0524300000000002 44.825400000000002 1.9428300000000001 +-5.0450400000000002 78.5227 1.5692699999999999 +-4.1440999999999999 102.85899999999999 2.0087600000000001 +-0.21073 99.123500000000007 1.43743 +-5.66031 91.630300000000005 1.64618 +2.72282 91.630300000000005 1.5472999999999999 +-3.49586 78.5227 1.4813799999999999 +0.041973099999999999 16.7425 2.0746799999999999 +-3.0234200000000002 119.71299999999999 2.0527000000000002 +-2.28728 78.5227 2.0746799999999999 +-1.2544999999999999 44.825400000000002 2.0746799999999999 +2.8876200000000001 97.244699999999995 1.9648099999999999 +-4.5286400000000002 119.71299999999999 1.5253300000000001 +-5.7482100000000003 59.800800000000002 1.65717 +-2.53999 140.31399999999999 2.0636899999999998 +-4.1440999999999999 140.31399999999999 2.0087600000000001 +3.8325100000000001 114.099 1.84395 +-5.66031 46.693199999999997 1.8769100000000001 +1.9427300000000001 101.002 2.0197400000000001 +-2.53999 59.800800000000002 1.44842 +-4.7154199999999999 33.585700000000003 1.5472999999999999 +-0.47442000000000001 61.668599999999998 2.0746799999999999 +-4.1440999999999999 136.56700000000001 1.50335 +0.54737800000000003 102.85899999999999 1.44842 +-5.3197099999999997 42.946599999999997 1.6022400000000001 +3.94238 110.363 1.8109900000000001 +-2.0345800000000001 57.921999999999997 2.0746799999999999 +-5.66031 65.426199999999994 1.8769100000000001 +1.04179 50.439799999999998 2.0527000000000002 +-5.1878700000000002 99.123500000000007 1.58026 +3.94238 136.56700000000001 1.8109900000000001 +0.041973099999999999 54.186399999999999 1.44842 +-0.990811 84.148099999999999 2.0746799999999999 +-5.0450400000000002 142.18199999999999 1.5692699999999999 +1.7339800000000001 129.07400000000001 2.0307300000000001 +-3.9353400000000001 50.439799999999998 1.50335 +-5.9679500000000001 136.56700000000001 1.7890200000000001 +0.29467500000000002 50.439799999999998 1.44842 +-5.7482100000000003 106.60599999999999 1.65717 +1.50325 117.845 2.0417200000000002 +-5.93499 87.883700000000005 1.8109900000000001 +2.72282 61.668599999999998 1.9758 +3.5688200000000001 12.995900000000001 1.6242099999999999 +2.72282 26.1035 1.5472999999999999 +0.80008000000000001 101.002 2.0636899999999998 +-4.3418599999999996 76.654899999999998 1.99777 +-5.3197099999999997 48.572000000000003 1.6022400000000001 +-5.93499 129.07400000000001 1.71211 +-1.5181899999999999 140.31399999999999 1.43743 +2.72282 72.9084 1.5472999999999999 +-1.2544999999999999 12.995900000000001 1.43743 +3.9973100000000001 117.845 1.77803 +3.9973100000000001 132.821 1.77803 +3.5688200000000001 110.363 1.6242099999999999 +-0.47442000000000001 78.5227 1.43743 +-5.5614299999999997 125.339 1.8878999999999999 +3.8984299999999998 87.883700000000005 1.8219799999999999 +-1.7818799999999999 95.376900000000006 2.0746799999999999 +-0.990811 114.099 2.0746799999999999 +2.3492600000000001 84.148099999999999 1.51434 +-1.5181899999999999 129.07400000000001 2.0746799999999999 +-4.7154199999999999 106.60599999999999 1.9758 +-2.53999 52.307600000000001 1.44842 +-2.7816999999999998 52.307600000000001 1.4594 +-4.8802300000000001 63.547400000000003 1.55829 +0.54737800000000003 61.668599999999998 2.0636899999999998 +-1.2544999999999999 78.5227 1.43743 +3.5688200000000001 52.307600000000001 1.8878999999999999 +-4.3418599999999996 35.464500000000001 1.99777 +3.9753400000000001 117.845 1.72309 +-5.93499 18.610299999999999 1.8109900000000001 +1.7339800000000001 89.762500000000003 2.0307300000000001 +3.7555999999999998 35.464500000000001 1.85494 +-0.47442000000000001 119.71299999999999 1.43743 +0.80008000000000001 93.498099999999994 1.4594 +2.5360399999999998 35.464500000000001 1.98678 +3.4589500000000002 142.18199999999999 1.6132200000000001 +-0.73810900000000002 132.821 1.43743 +-0.990811 22.3569 1.43743 +-0.73810900000000002 20.489100000000001 1.43743 +-4.7154199999999999 78.5227 1.5472999999999999 +-1.7818799999999999 129.07400000000001 1.43743 +3.3380899999999998 106.60599999999999 1.92086 +2.1514899999999999 134.69999999999999 2.0087600000000001 +-4.7154199999999999 71.040599999999998 1.5472999999999999 +2.5360399999999998 112.22 1.98678 +1.2725200000000001 127.206 1.4703900000000001 +3.0524300000000002 61.668599999999998 1.5692699999999999 +-4.7154199999999999 130.953 1.9758 +-1.2544999999999999 138.435 1.43743 +-5.8800499999999998 67.283000000000001 1.6901299999999999 +-4.8802300000000001 115.97799999999999 1.55829 +-3.9353400000000001 35.464500000000001 2.0197400000000001 +3.8984299999999998 104.738 1.6901299999999999 +2.1514899999999999 29.850100000000001 1.50335 +-5.0450400000000002 59.800800000000002 1.9428300000000001 +1.7339800000000001 101.002 2.0307300000000001 +-5.9679500000000001 52.307600000000001 1.72309 +-4.5286400000000002 61.668599999999998 1.5253300000000001 +-5.1878700000000002 87.883700000000005 1.58026 +-4.3418599999999996 72.9084 1.51434 +-4.3418599999999996 16.7425 1.99777 +2.8876200000000001 14.8637 1.9648099999999999 +-3.2651300000000001 142.18199999999999 1.4703900000000001 +-5.9899199999999997 125.339 1.7450699999999999 +-1.2544999999999999 82.269300000000001 1.43743 +-1.2544999999999999 123.45999999999999 2.0746799999999999 +2.72282 56.065199999999997 1.5472999999999999 +-4.8802300000000001 71.040599999999998 1.55829 +-5.0450400000000002 71.040599999999998 1.5692699999999999 +-3.49586 14.8637 2.0417200000000002 +-5.8800499999999998 140.31399999999999 1.8219799999999999 +-5.8800499999999998 42.946599999999997 1.8219799999999999 +3.3380899999999998 56.065199999999997 1.92086 +3.67869 142.18199999999999 1.64618 +-3.9353400000000001 52.307600000000001 2.0197400000000001 +-4.7154199999999999 56.065199999999997 1.9758 +-0.990811 84.148099999999999 1.43743 +-5.4515599999999997 115.97799999999999 1.90987 +-5.3197099999999997 93.498099999999994 1.92086 +1.2725200000000001 61.668599999999998 2.0417200000000002 +-4.5286400000000002 63.547400000000003 1.5253300000000001 +-5.93499 74.787099999999995 1.71211 +-4.5286400000000002 46.693199999999997 1.5253300000000001 +-4.3418599999999996 46.693199999999997 1.51434 +-5.5614299999999997 14.8637 1.8878999999999999 +2.8876200000000001 97.244699999999995 1.55829 +3.7555999999999998 142.18199999999999 1.65717 +-3.49586 42.946599999999997 1.4813799999999999 +-3.2651300000000001 24.224699999999999 1.4703900000000001 +-4.1440999999999999 48.572000000000003 1.50335 +-4.1440999999999999 50.439799999999998 1.50335 +1.04179 20.489100000000001 1.4594 +-1.2544999999999999 63.547400000000003 1.43743 +-4.7154199999999999 26.1035 1.9758 +-3.9353400000000001 52.307600000000001 1.50335 +-1.2544999999999999 65.426199999999994 2.0746799999999999 +-5.4515599999999997 16.7425 1.6132200000000001 +3.1952600000000002 12.995900000000001 1.9318500000000001 +3.9753400000000001 56.065199999999997 1.72309 +3.5688200000000001 76.654899999999998 1.6242099999999999 +3.8984299999999998 110.363 1.8219799999999999 +-4.3418599999999996 115.97799999999999 1.99777 +-3.0234200000000002 24.224699999999999 1.4594 +3.67869 37.332299999999996 1.64618 +-0.21073 41.078800000000001 1.43743 +2.3492600000000001 86.015900000000002 1.51434 +-5.3197099999999997 82.269300000000001 1.6022400000000001 +-5.93499 71.040599999999998 1.71211 +-5.0450400000000002 115.97799999999999 1.5692699999999999 +-5.9679500000000001 95.376900000000006 1.72309 +3.4589500000000002 74.787099999999995 1.90987 +-4.8802300000000001 24.224699999999999 1.9648099999999999 +-1.7818799999999999 31.7179 1.43743 +-4.3418599999999996 130.953 1.99777 +3.8325100000000001 78.5227 1.6791400000000001 +-1.5181899999999999 84.148099999999999 2.0746799999999999 +0.80008000000000001 12.995900000000001 1.4594 +0.54737800000000003 93.498099999999994 1.44842 +3.9973100000000001 67.283000000000001 1.7450699999999999 +2.5360399999999998 27.971299999999999 1.98678 +-3.49586 91.630300000000005 1.4813799999999999 +-1.2544999999999999 84.148099999999999 1.43743 +-3.7155999999999998 33.585700000000003 1.4923599999999999 +-5.9899199999999997 132.821 1.7450699999999999 +-3.0234200000000002 104.738 2.0527000000000002 +-5.3197099999999997 22.3569 1.92086 +-5.7482100000000003 35.464500000000001 1.65717 +-3.9353400000000001 65.426199999999994 1.50335 +-1.5181899999999999 127.206 1.43743 +-4.1440999999999999 106.60599999999999 1.50335 +-5.1878700000000002 69.161799999999999 1.58026 +-4.1440999999999999 93.498099999999994 1.50335 +1.2725200000000001 117.845 2.0417200000000002 +3.4589500000000002 57.921999999999997 1.90987 +-0.21073 142.18199999999999 1.43743 +3.4589500000000002 16.7425 1.6132200000000001 +0.29467500000000002 86.015900000000002 2.0746799999999999 +2.1514899999999999 89.762500000000003 2.0087600000000001 +3.8984299999999998 127.206 1.8219799999999999 +-5.9899199999999997 14.8637 1.7450699999999999 +-5.8251200000000001 14.8637 1.84395 +-2.53999 136.56700000000001 2.0636899999999998 +-3.49586 18.610299999999999 1.4813799999999999 +-4.7154199999999999 57.921999999999997 1.9758 +3.8984299999999998 142.18199999999999 1.8219799999999999 +-3.9353400000000001 14.8637 1.50335 +-3.7155999999999998 14.8637 2.0307300000000001 +-0.990811 140.31399999999999 2.0746799999999999 +3 0 4185 3658 +3 2 4 1 +3 4 3489 3 +3 5 8144 18 +3 5 7934 8144 +3 6 8180 19 +3 8180 7 19 +3 9 8 7 +3 9 6368 8 +3 10 3381 7902 +3 10 8032 3381 +3 12 11 7762 +3 12 13 11 +3 13 5260 11 +3 13 6182 5260 +3 14 6513 26 +3 8222 54 31 +3 15 6352 55 +3 7998 542 7453 +3 16 4011 81 +3 468 17 39 +3 468 3658 17 +3 1 41 6326 +3 1 3 41 +3 18 5588 3491 +3 19 20 550 +3 7 21 20 +3 8 72 21 +3 22 3430 6500 +3 11 23 24 +3 11 5260 23 +3 25 7158 5259 +3 25 26 7158 +3 26 8038 48 +3 7769 6001 27 +3 6001 6066 47 +3 28 7522 3305 +3 1034 5057 29 +3 30 5057 1034 +3 30 31 53 +3 31 54 52 +3 32 55 6352 +3 32 8112 55 +3 7632 6941 33 +3 6941 88 33 +3 7453 57 89 +3 7453 542 57 +3 542 58 57 +3 34 3680 3822 +3 36 61 35 +3 36 8152 62 +3 5462 65 37 +3 38 67 65 +3 39 5482 7663 +3 6326 3487 40 +3 6326 41 3487 +3 3491 5574 5306 +3 3476 550 42 +3 550 70 42 +3 550 20 70 +3 21 71 43 +3 21 72 71 +3 3009 75 7412 +3 3009 3382 75 +3 7762 7831 7604 +3 76 102 477 +3 24 45 44 +3 23 77 45 +3 5259 46 77 +3 7158 78 46 +3 48 583 78 +3 48 47 583 +3 6066 393 49 +3 393 3305 49 +3 51 5778 50 +3 29 5057 82 +3 53 52 514 +3 55 54 15 +3 55 56 54 +3 56 3198 52 +3 7633 33 87 +3 89 91 6288 +3 89 57 91 +3 57 4022 91 +3 57 58 4022 +3 59 4009 4027 +3 35 93 3685 +3 61 584 60 +3 62 6571 94 +3 37 64 63 +3 65 66 64 +3 67 5797 66 +3 7663 3656 5796 +3 68 99 7005 +3 68 40 99 +3 40 3487 69 +3 5306 5508 5374 +3 5587 42 100 +3 42 2200 100 +3 42 70 2200 +3 70 101 2200 +3 70 43 101 +3 43 71 137 +3 3429 71 72 +3 3429 73 71 +3 7412 5604 74 +3 7412 75 5604 +3 44 102 76 +3 44 105 102 +3 45 77 4499 +3 46 109 531 +3 46 78 109 +3 6067 7777 79 +3 545 80 3710 +3 7453 89 7770 +3 16 81 7117 +3 5688 82 7614 +3 82 83 7614 +3 6895 5422 83 +3 6895 84 5422 +3 6895 85 84 +3 53 85 30 +3 85 53 86 +3 86 84 85 +3 84 86 113 +3 635 117 7575 +3 635 87 117 +3 89 88 7770 +3 6288 466 90 +3 6288 118 466 +3 6288 91 118 +3 91 4019 118 +3 91 4022 4019 +3 4027 6496 6411 +3 6936 120 4954 +3 6936 3679 120 +3 93 92 122 +3 93 60 92 +3 584 125 7192 +3 584 94 125 +3 94 95 125 +3 96 127 95 +3 63 4449 97 +3 63 64 4449 +3 64 66 129 +3 66 5797 131 +3 5796 98 133 +3 5796 3656 98 +3 7005 3263 7103 +3 7005 99 3263 +3 99 3484 3263 +3 99 69 3484 +3 3475 135 5507 +3 3475 100 135 +3 2200 101 136 +3 101 139 136 +3 74 3380 3428 +3 74 5604 3380 +3 102 7213 477 +3 529 103 7214 +3 105 529 102 +3 104 103 529 +3 105 142 104 +3 105 7196 142 +3 7196 4499 106 +3 4499 107 106 +3 531 3327 107 +3 531 109 3327 +3 109 7885 108 +3 7885 110 108 +3 582 3303 110 +3 3272 572 8218 +3 581 7614 4434 +3 5422 111 152 +3 113 6649 112 +3 114 6649 514 +3 7575 117 7819 +3 117 115 7819 +3 117 116 115 +3 466 118 4373 +3 118 4019 119 +3 4954 120 157 +3 122 123 121 +3 92 159 123 +3 92 527 159 +3 7192 125 124 +3 125 164 124 +3 95 126 164 +3 95 127 126 +3 127 166 126 +3 97 4449 128 +3 129 169 168 +3 129 131 169 +3 131 130 169 +3 131 7673 130 +3 7673 4225 130 +3 133 5296 132 +3 134 7711 3473 +3 135 5339 247 +3 135 2201 5339 +3 2201 174 5339 +3 2201 136 174 +3 73 138 137 +3 138 139 137 +3 140 540 139 +3 3428 3376 175 +3 103 104 141 +3 104 176 141 +3 104 142 176 +3 142 106 178 +3 106 107 143 +3 107 3327 6680 +3 108 180 7482 +3 108 110 180 +3 110 181 180 +3 110 3303 181 +3 7061 144 145 +3 7061 549 144 +3 7061 3228 549 +3 7061 146 3228 +3 8218 147 146 +3 572 3229 147 +3 148 6947 3229 +3 7903 3430 149 +3 150 7270 3216 +3 7270 4433 3216 +3 4433 4432 3216 +3 4434 151 5109 +3 151 191 5109 +3 151 152 191 +3 152 192 191 +3 3181 112 6730 +3 112 153 6224 +3 7546 114 3198 +3 7546 154 114 +3 154 4161 153 +3 7819 155 8019 +3 4373 7672 539 +3 4701 4008 5132 +3 4701 7143 4008 +3 187 3678 156 +3 187 157 3678 +3 524 158 3688 +3 121 196 158 +3 121 123 196 +3 123 197 196 +3 123 159 197 +3 159 526 160 +3 526 5257 160 +3 526 161 5257 +3 162 198 161 +3 162 124 198 +3 124 164 163 +3 164 165 163 +3 126 200 165 +3 126 166 200 +3 166 201 200 +3 6333 204 167 +3 6333 128 204 +3 128 168 8049 +3 168 169 170 +3 130 171 1711 +3 4225 209 171 +3 7277 570 1802 +3 3494 3473 6109 +3 4613 172 173 +3 4613 247 172 +3 174 1863 523 +3 174 540 1863 +3 540 6714 1863 +3 175 6811 3426 +3 497 141 7968 +3 141 212 7968 +3 141 176 212 +3 176 177 212 +3 178 6593 177 +3 178 143 6593 +3 7482 180 179 +3 180 7661 179 +3 180 181 7661 +3 3302 182 4743 +3 183 219 3270 +3 549 7053 144 +3 548 7587 184 +3 548 185 3227 +3 549 3228 185 +3 560 3102 6576 +3 186 3104 3102 +3 4954 157 187 +3 582 79 3303 +3 5507 247 4613 +3 3491 5588 5574 +3 7904 4668 188 +3 4432 225 189 +3 5109 191 190 +3 191 226 190 +3 191 192 226 +3 192 1898 226 +3 111 5402 192 +3 5402 1898 192 +3 5402 193 1898 +3 5854 228 5235 +3 6730 6224 194 +3 4162 391 5934 +3 4162 8019 391 +3 5132 4007 195 +3 5132 4008 4007 +3 156 3676 3817 +3 156 3678 3676 +3 3688 158 7026 +3 158 233 7026 +3 158 196 233 +3 196 234 233 +3 197 160 6768 +3 5257 236 6116 +3 161 198 3144 +3 198 238 3144 +3 198 163 238 +3 163 8033 238 +3 163 165 8033 +3 165 199 8033 +3 165 200 199 +3 200 5727 199 +3 200 201 5727 +3 201 6856 5727 +3 167 203 202 +3 204 242 203 +3 8049 205 242 +3 170 206 205 +3 170 1711 206 +3 1711 207 206 +3 1711 171 207 +3 171 208 207 +3 171 209 208 +3 209 5275 208 +3 4224 5838 5214 +3 1802 3482 5647 +3 1802 210 3482 +3 6110 5849 6968 +3 523 251 249 +3 3426 6811 211 +3 7968 212 213 +3 177 258 585 +3 6593 6317 214 +3 216 260 215 +3 105 104 529 +3 216 179 260 +3 217 5672 3301 +3 3270 219 218 +3 219 4201 218 +3 219 3226 4201 +3 219 7587 3226 +3 7587 3227 3226 +3 7793 7944 220 +3 7793 221 7944 +3 221 223 8034 +3 223 3101 8034 +3 223 222 3101 +3 35 61 93 +3 3216 8179 150 +3 189 224 8179 +3 189 6774 224 +3 189 225 6774 +3 225 4431 6774 +3 190 226 6144 +3 226 264 6144 +3 5235 5110 227 +3 5235 228 5110 +3 228 194 2351 +3 391 470 6157 +3 229 7865 6570 +3 229 6956 7865 +3 6956 4017 533 +3 195 4007 532 +3 3817 269 3816 +3 3817 3676 269 +3 565 230 271 +3 7026 233 231 +3 233 232 231 +3 233 234 232 +3 234 5776 232 +3 6768 6116 5775 +3 6116 276 5775 +3 6116 236 276 +3 236 235 276 +3 236 521 235 +3 236 5595 521 +3 3144 277 237 +3 3144 238 277 +3 199 279 239 +3 202 283 240 +3 203 241 283 +3 203 242 241 +3 242 5079 241 +3 206 7732 243 +3 208 5275 244 +3 246 287 245 +3 246 5647 287 +3 5647 3481 287 +3 5647 3482 3481 +3 6968 7784 7693 +3 5458 6165 288 +3 568 172 247 +3 248 6165 5458 +3 248 249 250 +3 249 251 5656 +3 251 3425 5656 +3 3427 6057 252 +3 498 253 580 +3 256 498 254 +3 256 213 255 +3 213 289 255 +3 213 585 289 +3 585 258 257 +3 258 3325 257 +3 258 214 3325 +3 215 259 7564 +3 260 3300 259 +3 260 7086 3300 +3 3301 291 261 +3 3301 5672 291 +3 87 90 116 +3 4716 6852 7083 +3 6774 4431 262 +3 4431 292 262 +3 6144 264 4429 +3 264 263 4429 +3 264 265 263 +3 265 294 263 +3 193 6143 265 +3 6143 294 265 +3 227 5110 5162 +3 7549 267 7996 +3 6157 266 267 +3 6157 470 266 +3 3816 268 7386 +3 3816 269 268 +3 271 272 270 +3 230 536 272 +3 230 231 536 +3 231 274 536 +3 232 273 274 +3 5775 276 275 +3 276 892 275 +3 235 552 300 +3 237 277 301 +3 277 557 302 +3 239 303 556 +3 279 278 303 +3 279 5496 278 +3 5496 280 278 +3 281 307 280 +3 240 309 282 +3 240 283 309 +3 283 4871 309 +3 243 3691 312 +3 7732 6519 284 +3 6519 244 314 +3 244 285 314 +3 6834 4223 285 +3 4222 3651 286 +3 287 3479 559 +3 3472 7532 3471 +3 3472 288 7532 +3 6165 7369 3572 +3 252 3374 3424 +3 252 6057 3374 +3 253 255 323 +3 255 7947 323 +3 255 289 7947 +3 289 257 290 +3 257 3324 290 +3 257 3325 3324 +3 259 3300 3298 +3 261 291 327 +3 741 5645 6671 +3 573 3097 3095 +3 4196 3225 7228 +3 5582 3097 3224 +3 4717 4714 335 +3 262 5718 4666 +3 5718 338 4666 +3 262 292 5718 +3 292 5066 5718 +3 263 6147 293 +3 263 294 6147 +3 462 340 295 +3 462 5162 340 +3 7996 267 296 +3 6569 409 6383 +3 8016 5443 522 +3 270 5768 3690 +3 536 274 297 +3 273 299 298 +3 5828 347 299 +3 275 892 5925 +3 892 392 5925 +3 892 300 392 +3 300 350 392 +3 7648 301 352 +3 301 302 562 +3 556 5936 2792 +3 556 303 5936 +3 303 305 5936 +3 278 304 305 +3 278 280 304 +3 280 306 304 +3 280 307 306 +3 307 308 306 +3 282 309 308 +3 309 310 308 +3 4871 354 310 +3 4871 311 354 +3 311 312 355 +3 3691 284 357 +3 284 313 357 +3 284 314 313 +3 314 285 315 +3 285 360 315 +3 285 4223 360 +3 4223 4219 360 +3 316 286 3939 +3 318 317 3614 +3 318 559 317 +3 559 363 317 +3 559 3479 363 +3 3499 7351 319 +3 3572 7369 6015 +3 7369 5726 6015 +3 6108 367 5657 +3 3424 320 369 +3 579 321 322 +3 579 323 321 +3 323 7947 324 +3 7947 4760 324 +3 290 3324 547 +3 326 553 325 +3 553 373 325 +3 553 3298 373 +3 3299 327 3267 +3 328 3269 6142 +3 328 375 3269 +3 6597 331 329 +3 3049 330 331 +3 3050 563 3833 +3 3049 537 330 +3 6852 332 333 +3 262 4666 334 +3 5790 335 336 +3 335 4715 337 +3 333 4667 6026 +3 338 339 4664 +3 5066 4427 339 +3 403 402 6146 +3 295 340 6510 +3 340 341 6435 +3 4160 2351 194 +3 4159 4158 5111 +3 4158 341 5111 +3 4158 4169 341 +3 343 407 342 +3 343 296 407 +3 296 5218 5336 +3 3690 6972 6408 +3 3690 5768 6972 +3 344 297 413 +3 297 345 413 +3 297 298 345 +3 299 346 756 +3 299 347 346 +3 347 349 346 +3 5925 348 349 +3 392 350 415 +3 350 6461 7079 +3 6461 6661 7079 +3 6461 351 6661 +3 352 562 6037 +3 2792 418 561 +3 310 354 6911 +3 354 353 6911 +3 354 355 353 +3 355 525 421 +3 357 423 356 +3 313 315 358 +3 315 681 358 +3 315 360 681 +3 360 359 681 +3 4219 4218 359 +3 361 7753 427 +3 3614 362 3612 +3 317 6183 362 +3 317 363 6183 +3 365 430 364 +3 365 319 430 +3 5411 3863 3470 +3 5411 4988 3863 +3 4988 432 3863 +3 4988 3471 7532 +3 6016 5887 432 +3 6015 5726 366 +3 5726 367 3423 +3 369 368 8114 +3 322 499 370 +3 322 371 499 +3 321 324 372 +3 324 2523 372 +3 324 4760 2523 +3 1958 325 5229 +3 325 7727 5229 +3 325 373 7727 +3 5813 374 567 +3 375 7385 6793 +3 375 7804 7385 +3 3223 3091 7530 +3 3096 3223 376 +3 379 377 5224 +3 379 378 377 +3 379 564 378 +3 329 437 378 +3 329 331 5097 +3 331 4355 5097 +3 330 380 4837 +3 380 381 4837 +3 3833 4356 381 +3 383 384 382 +3 384 439 382 +3 384 8199 439 +3 8199 441 439 +3 385 386 7580 +3 386 443 7580 +3 386 387 443 +3 387 444 443 +3 387 388 444 +3 388 389 445 +3 389 448 445 +3 389 390 448 +3 390 449 448 +3 390 7588 449 +3 7588 451 449 +3 391 469 470 +3 5925 392 348 +3 28 3305 393 +3 6277 394 395 +3 336 337 5059 +3 397 399 396 +3 6026 398 399 +3 4664 554 400 +3 4664 339 554 +3 4428 6146 401 +3 6146 457 401 +3 6146 402 457 +3 402 405 457 +3 4256 403 294 +3 4256 4259 403 +3 4259 402 403 +3 4259 404 402 +3 404 7548 405 +3 463 4173 5503 +3 342 407 406 +3 407 465 406 +3 6382 473 471 +3 409 4013 408 +3 408 4013 472 +3 6615 4005 410 +3 411 3673 3814 +3 6972 5169 412 +3 5169 478 412 +3 5169 413 478 +3 413 5922 478 +3 346 480 479 +3 346 349 480 +3 349 1415 480 +3 348 415 1414 +3 415 7734 1414 +3 415 414 7734 +3 414 7460 416 +3 6661 7259 2026 +3 6037 482 574 +3 561 417 482 +3 561 418 417 +3 418 419 483 +3 419 484 483 +3 420 353 484 +3 353 421 484 +3 421 356 422 +3 356 423 486 +3 423 358 424 +3 358 488 424 +3 358 681 488 +3 359 489 425 +3 4218 426 489 +3 427 5141 4217 +3 3612 491 3611 +3 3612 362 491 +3 362 428 491 +3 362 6183 428 +3 364 429 555 +3 364 430 429 +3 3470 492 3469 +3 3470 3863 492 +3 432 431 494 +3 5887 495 431 +3 5887 366 495 +3 433 371 503 +3 371 434 503 +3 575 372 569 +3 372 504 569 +3 372 2523 504 +3 5229 506 576 +3 5229 7727 506 +3 7491 435 543 +3 5259 7158 46 +3 435 436 8136 +3 377 4351 5225 +3 377 4353 4351 +3 378 437 4353 +3 438 382 511 +3 382 513 511 +3 382 439 513 +3 439 441 440 +3 441 442 440 +3 7580 515 442 +3 7580 443 515 +3 443 444 6127 +3 444 445 446 +3 445 448 5971 +3 448 447 5971 +3 448 449 447 +3 449 451 5520 +3 451 541 450 +3 453 454 452 +3 454 518 452 +3 454 520 518 +3 55 8112 56 +3 3691 357 525 +3 524 121 158 +3 394 4251 7547 +3 7319 4712 7751 +3 396 399 4371 +3 371 575 434 +3 400 455 5930 +3 400 554 455 +3 554 4425 455 +3 4425 4424 455 +3 401 457 4426 +3 457 456 4426 +3 457 405 456 +3 405 4255 456 +3 113 458 84 +3 458 113 3181 +3 5854 459 460 +3 461 227 462 +3 462 6455 461 +3 4260 295 463 +3 6047 406 464 +3 406 4107 464 +3 406 465 4107 +3 466 467 116 +3 467 6957 115 +3 6957 155 115 +3 0 3658 468 +3 229 469 155 +3 6570 470 469 +3 6569 266 470 +3 6569 6383 266 +3 6383 5218 266 +3 6382 471 5336 +3 471 465 5336 +3 471 4106 465 +3 473 6387 5096 +3 473 472 6387 +3 6614 4003 474 +3 6614 410 4003 +3 3814 3776 3812 +3 3814 3673 3776 +3 6601 6686 3671 +3 6601 476 6686 +3 476 475 6686 +3 476 412 475 +3 76 477 7831 +3 412 3669 475 +3 412 478 3669 +3 478 3668 3669 +3 5922 1119 7471 +3 1119 3666 7471 +3 1119 479 3666 +3 479 480 481 +3 480 1415 3664 +3 1415 8029 3664 +3 416 6222 577 +3 7460 7618 6222 +3 2026 6415 7618 +3 574 482 5456 +3 482 528 5456 +3 417 483 6495 +3 483 484 422 +3 486 424 485 +3 424 488 4177 +3 488 487 4177 +3 488 425 487 +3 425 4178 487 +3 425 489 4178 +3 489 4179 4178 +3 426 4215 4179 +3 3611 491 490 +3 491 3478 490 +3 3469 492 2146 +3 492 3432 2146 +3 494 493 3432 +3 431 5146 493 +3 431 495 5146 +3 7942 5190 3421 +3 7942 7763 5190 +3 103 497 496 +3 497 3379 496 +3 497 254 3379 +3 254 3377 3379 +3 254 498 3377 +3 498 580 6929 +3 580 3375 6929 +3 580 370 3375 +3 370 499 6301 +3 499 433 500 +3 433 502 5850 +3 502 7877 5850 +3 502 501 535 +3 502 503 501 +3 503 538 501 +3 569 504 6808 +3 504 5480 6358 +3 576 3682 505 +3 576 506 3682 +3 566 8186 4361 +3 7241 507 7221 +3 4537 5108 3046 +3 4537 5899 508 +3 5899 509 508 +3 509 4349 508 +3 509 5128 4349 +3 509 543 5128 +3 543 4350 5128 +3 8136 510 4350 +3 5225 4351 510 +3 4584 511 6446 +3 511 513 512 +3 513 4233 512 +3 513 440 4233 +3 440 4236 4233 +3 440 442 4236 +3 3198 114 514 +3 515 6127 4240 +3 6127 516 4240 +3 446 5971 7022 +3 5520 7560 5616 +3 450 4243 7560 +3 450 517 4243 +3 517 452 6825 +3 452 518 4245 +3 518 4247 4245 +3 518 520 519 +3 520 4249 519 +3 274 298 297 +3 235 521 552 +3 756 479 1119 +3 570 210 1802 +3 313 358 423 +3 4029 522 4005 +3 5339 174 523 +3 3687 121 524 +3 312 3691 525 +3 356 486 422 +3 45 4499 7196 +3 418 483 417 +3 3424 3374 320 +3 56 52 54 +3 527 162 526 +3 417 6495 528 +3 102 529 7213 +3 7259 574 530 +3 77 46 531 +3 4028 532 5443 +3 344 413 5169 +3 6956 533 7865 +3 446 7022 516 +3 4716 534 6852 +3 4028 5443 8016 +3 502 535 7877 +3 3687 122 121 +3 272 536 344 +3 537 380 330 +3 546 288 3472 +3 154 153 114 +3 434 3328 538 +3 467 4373 539 +3 526 162 161 +3 136 139 540 +3 466 116 90 +3 241 5079 311 +3 7734 578 6361 +3 541 453 517 +3 8167 4024 542 +3 543 8136 4350 +3 545 6255 544 +3 6382 408 473 +3 20 43 70 +3 253 323 579 +3 546 5458 288 +3 515 4240 4238 +3 290 547 4760 +3 549 548 7053 +3 83 5422 152 +3 466 4373 467 +3 202 203 283 +3 6902 19 550 +3 6001 393 6066 +3 551 182 3302 +3 167 204 203 +3 552 7648 351 +3 6519 314 284 +3 267 266 5218 +3 259 3298 553 +3 4427 4425 554 +3 555 3468 3501 +3 557 239 556 +3 4668 558 534 +3 6255 50 544 +3 245 287 559 +3 560 186 3102 +3 562 2792 561 +3 563 5469 3833 +3 564 329 378 +3 3688 7026 565 +3 567 8186 566 +3 568 248 172 +3 575 569 434 +3 7103 3263 570 +3 4665 571 4371 +3 572 148 3229 +3 573 3224 3097 +3 7593 6037 574 +3 342 406 6047 +3 321 372 575 +3 3323 576 6168 +3 416 577 578 +3 4449 168 128 +3 580 579 370 +3 399 4665 4371 +3 442 515 4238 +3 215 260 259 +3 392 415 348 +3 107 6680 143 +3 424 4177 485 +3 5688 7614 581 +3 583 6067 582 +3 62 94 584 +3 179 7086 260 +3 212 177 585 +3 587 586 611 +3 587 588 586 +3 588 4378 6424 +3 589 612 4380 +3 589 7836 612 +3 590 614 7233 +3 591 6343 6633 +3 591 7119 6343 +3 6564 617 592 +3 5564 8090 593 +3 5735 594 8090 +3 595 7248 594 +3 595 5365 7248 +3 597 596 5364 +3 597 599 596 +3 599 8217 598 +3 8217 7499 598 +3 601 1214 600 +3 602 4527 7105 +3 604 3014 603 +3 5201 7810 6719 +3 8156 3273 3235 +3 5361 628 1364 +3 606 605 628 +3 606 7609 605 +3 607 5844 629 +3 608 4109 8153 +3 2701 609 7010 +3 5274 609 2099 +3 5274 610 609 +3 611 7611 698 +3 4380 612 613 +3 8075 4759 614 +3 4759 615 7233 +3 6677 5683 637 +3 616 5261 4887 +3 617 6698 7936 +3 6698 618 4112 +3 618 7473 641 +3 593 5875 6041 +3 596 619 644 +3 596 598 619 +3 598 6745 619 +3 598 7499 6745 +3 7499 621 620 +3 621 5455 620 +3 621 600 5455 +3 600 838 622 +3 838 646 622 +3 4530 623 648 +3 624 649 623 +3 624 625 649 +3 625 3015 649 +3 625 603 3015 +3 3183 6611 626 +3 6611 3184 4899 +3 6719 7810 6558 +3 4442 1011 6762 +3 5149 5192 627 +3 1364 628 5770 +3 605 653 7068 +3 605 630 653 +3 630 1216 653 +3 630 629 1216 +3 8057 7457 631 +3 632 7142 7585 +3 632 5497 6130 +3 5497 4113 6130 +3 698 634 633 +3 7611 2407 634 +3 7611 7541 2407 +3 636 703 4381 +3 7633 87 635 +3 636 613 703 +3 6318 637 668 +3 637 638 7434 +3 639 7620 8064 +3 4887 5368 4883 +3 4887 5261 5368 +3 5261 640 6635 +3 640 6512 6635 +3 4112 641 6347 +3 641 6041 6346 +3 6041 5875 5632 +3 5875 671 5632 +3 8131 7084 642 +3 7247 644 643 +3 644 4064 643 +3 6745 620 645 +3 5455 674 1466 +3 622 646 647 +3 648 676 4533 +3 623 678 676 +3 623 649 678 +3 649 3016 678 +3 649 3015 3016 +3 651 719 650 +3 7107 680 652 +3 7068 653 5961 +3 653 1216 654 +3 655 3384 7389 +3 6083 656 725 +3 657 763 656 +3 657 5720 763 +3 658 3525 3595 +3 658 7815 3525 +3 2236 1025 7874 +3 659 3566 3567 +3 6909 4181 3618 +3 660 687 4183 +3 660 7800 687 +3 7800 6602 687 +3 662 6491 661 +3 6433 6502 663 +3 6433 664 6502 +3 664 738 6502 +3 664 737 738 +3 665 5419 3378 +3 665 6130 5419 +3 634 666 5297 +3 4381 703 6348 +3 7722 5311 3542 +3 4758 668 706 +3 668 7434 667 +3 4883 5368 669 +3 6512 4948 670 +3 6347 6722 3120 +3 671 642 7652 +3 5927 643 672 +3 643 712 672 +3 4064 673 713 +3 673 645 3440 +3 645 715 3440 +3 1466 674 675 +3 647 4521 7197 +3 4533 676 677 +3 676 678 679 +3 678 3016 1295 +3 650 6076 7294 +3 652 5416 6342 +3 652 680 5416 +3 681 425 488 +3 6761 1366 682 +3 6761 1365 1366 +3 3975 721 683 +3 5961 654 6950 +3 656 762 2202 +3 684 6964 3436 +3 7874 5557 685 +3 3618 5348 3620 +3 3618 4181 5348 +3 4183 687 686 +3 687 7545 686 +3 661 730 7392 +3 7481 732 730 +3 689 733 688 +3 690 691 3734 +3 691 5873 3734 +3 693 692 898 +3 693 5256 692 +3 663 694 735 +3 6502 738 695 +3 3378 7067 739 +3 697 696 5716 +3 698 7298 5979 +3 633 700 699 +3 700 5400 5359 +3 702 701 4384 +3 6967 612 7836 +3 6925 6451 613 +3 6451 5490 703 +3 704 6943 6445 +3 704 3542 6943 +3 615 6910 705 +3 706 5002 7176 +3 706 667 5002 +3 7097 6320 6518 +3 707 669 744 +3 5367 708 709 +3 670 4948 746 +3 4948 3120 710 +3 6844 711 7236 +3 672 712 5382 +3 712 5695 5382 +3 712 713 5695 +3 713 714 5695 +3 3440 752 714 +3 3440 715 752 +3 715 6233 752 +3 715 675 6233 +3 717 754 716 +3 717 677 754 +3 677 679 5116 +3 679 718 5116 +3 3184 6935 4899 +3 3184 3186 6935 +3 3186 3153 6935 +3 5630 720 6558 +3 720 719 6558 +3 682 1366 1368 +3 683 721 6896 +3 721 6077 6058 +3 7799 722 8094 +3 3339 3340 723 +3 724 6596 6565 +3 724 7677 6596 +3 6083 725 726 +3 725 2994 3383 +3 2994 5809 7689 +3 2202 762 5124 +3 727 6136 6344 +3 685 8125 7327 +3 5557 3569 7989 +3 3620 728 6546 +3 3620 5348 728 +3 6899 686 729 +3 7392 768 6180 +3 7392 730 768 +3 730 732 731 +3 732 5095 769 +3 688 733 770 +3 733 6014 770 +3 5873 3780 3735 +3 735 736 734 +3 694 3973 736 +3 665 737 7142 +3 739 695 738 +3 739 814 695 +3 740 8206 775 +3 5400 4388 777 +3 6445 6802 5992 +3 742 218 741 +3 6445 6943 6802 +3 7176 5005 4763 +3 7176 5002 5005 +3 5001 780 5003 +3 6518 6320 743 +3 4882 781 4881 +3 4882 744 781 +3 708 746 745 +3 746 710 2677 +3 710 6727 783 +3 7236 748 747 +3 748 8119 785 +3 5382 749 750 +3 714 752 751 +3 752 5528 751 +3 6233 753 4518 +3 716 788 7219 +3 716 754 788 +3 6488 755 791 +3 298 299 756 +3 6075 7529 3236 +3 757 5266 7736 +3 3274 4897 758 +3 4897 794 758 +3 4897 1368 794 +3 6058 7060 6624 +3 5955 759 2448 +3 5955 801 759 +3 761 760 7678 +3 761 762 760 +3 761 1972 5124 +3 762 763 760 +3 763 684 760 +3 684 3436 760 +3 761 6150 1972 +3 761 7678 6150 +3 4210 6152 764 +3 7327 8125 803 +3 7088 806 765 +3 729 6725 806 +3 767 766 6725 +3 6180 768 5931 +3 768 731 5560 +3 731 808 5560 +3 731 769 808 +3 769 809 808 +3 5095 770 811 +3 7946 3729 771 +3 3735 3780 3736 +3 3780 6010 3736 +3 6397 772 5329 +3 6397 5614 772 +3 734 773 1405 +3 736 813 773 +3 814 6457 5465 +3 775 774 7029 +3 5279 5932 8206 +3 5932 774 8206 +3 7922 3739 776 +3 3739 777 4258 +3 777 4387 4258 +3 4763 2069 778 +3 4763 5005 2069 +3 780 743 779 +3 4881 781 7252 +3 6568 782 1395 +3 6568 6009 782 +3 6009 821 782 +3 6009 745 821 +3 2677 783 8123 +3 783 3838 7562 +3 3838 5213 1205 +3 6491 7481 661 +3 5213 7139 1205 +3 747 785 784 +3 785 5649 784 +3 4939 750 825 +3 749 3851 786 +3 751 787 827 +3 751 5528 787 +3 5528 829 787 +3 4518 6377 829 +3 7219 788 7656 +3 788 789 7656 +3 7901 831 789 +3 7901 5761 831 +3 3187 3154 7034 +3 3187 3189 3154 +3 791 948 790 +3 7736 5266 792 +3 793 758 6193 +3 758 794 6684 +3 7394 6476 795 +3 6476 834 795 +3 7060 1219 796 +3 3340 797 1218 +3 797 1220 1218 +3 798 2732 5755 +3 798 3386 2732 +3 2448 799 5551 +3 759 800 799 +3 1935 759 801 +3 1935 800 759 +3 7326 802 6577 +3 803 839 802 +3 803 3570 839 +3 805 804 840 +3 765 841 5065 +3 765 806 841 +3 806 6725 807 +3 5560 808 6159 +3 808 6440 6159 +3 809 7708 1185 +3 809 7013 7708 +3 7013 811 810 +3 811 7662 6829 +3 7076 844 812 +3 7076 771 844 +3 771 6452 844 +3 771 1697 6452 +3 773 845 1404 +3 773 813 845 +3 814 3973 695 +3 5092 1922 813 +3 776 4258 3731 +3 5739 931 815 +3 4621 884 3170 +3 817 778 816 +3 778 5006 816 +3 6655 4931 818 +3 6655 779 4931 +3 4879 7252 819 +3 7252 820 819 +3 1395 1528 820 +3 782 821 2090 +3 821 852 2090 +3 821 822 852 +3 822 6952 852 +3 7562 823 8211 +3 1205 7660 823 +3 7139 784 824 +3 5649 825 7171 +3 825 6422 7171 +3 3851 826 4323 +3 3851 827 826 +3 827 828 826 +3 787 855 828 +3 787 829 855 +3 7656 789 830 +3 789 831 832 +3 6105 856 3238 +3 833 1333 5978 +3 833 795 1333 +3 795 858 1333 +3 834 7616 858 +3 799 835 836 +3 1973 3438 6038 +3 1973 6151 3438 +3 5901 837 7338 +3 838 7105 646 +3 802 839 8025 +3 840 6918 860 +3 5065 841 6022 +3 841 807 7128 +3 807 7871 7128 +3 807 6208 7871 +3 6208 8041 7871 +3 5281 6155 8041 +3 5281 842 6155 +3 842 843 6155 +3 6159 861 843 +3 6159 6440 861 +3 1185 7708 4661 +3 6829 5865 865 +3 812 844 7414 +3 6452 4885 870 +3 6011 3781 873 +3 1404 845 5203 +3 1922 847 846 +3 847 6801 846 +3 849 848 879 +3 3731 4389 7812 +3 850 815 882 +3 816 5006 887 +3 818 4931 851 +3 819 2148 6642 +3 819 820 2148 +3 820 3261 2148 +3 2090 852 5945 +3 8211 823 853 +3 7660 854 893 +3 824 895 854 +3 7171 6422 896 +3 4621 3170 5076 +3 826 2087 6792 +3 855 7535 7584 +3 5328 2481 4538 +3 7087 900 2481 +3 830 832 2131 +3 3190 951 904 +3 3190 7543 951 +3 3238 856 5729 +3 857 905 3276 +3 857 6718 905 +3 6718 1369 905 +3 858 6432 7073 +3 859 3437 910 +3 6118 5072 3439 +3 3528 914 3550 +3 3528 3504 914 +3 860 5719 7952 +3 843 861 2971 +3 861 2098 2971 +3 861 2719 2098 +3 2719 863 862 +3 863 921 862 +3 6509 923 864 +3 6509 2002 923 +3 2002 865 5182 +3 865 867 866 +3 867 5375 5964 +3 8056 925 868 +3 8056 7414 925 +3 7414 869 925 +3 6453 926 869 +3 6453 870 926 +3 870 871 7910 +3 873 872 7649 +3 3965 6525 874 +3 2245 8097 4072 +3 2245 875 8097 +3 876 846 5743 +3 846 877 5743 +3 846 6801 877 +3 879 8146 878 +3 878 8146 929 +3 7721 1014 7603 +3 1014 848 7603 +3 1013 6006 8146 +3 776 7813 8089 +3 7813 880 8089 +3 7813 881 880 +3 881 5184 4290 +3 881 2140 5184 +3 4390 882 934 +3 883 988 4622 +3 883 4645 988 +3 4754 4751 884 +3 4751 3170 884 +3 4217 3650 885 +3 4765 886 936 +3 886 887 7304 +3 888 5653 5007 +3 7617 851 889 +3 891 890 938 +3 6642 2148 6237 +3 5945 5889 3124 +3 6951 941 5888 +3 6951 853 941 +3 853 893 943 +3 235 300 892 +3 893 6379 943 +3 854 894 6379 +3 854 895 894 +3 895 6311 894 +3 895 7172 6311 +3 7172 4680 6311 +3 7172 896 4680 +3 6792 2087 897 +3 4538 2481 3079 +3 898 5614 6397 +3 900 3020 899 +3 3188 901 3157 +3 901 902 3157 +3 5073 6875 902 +3 5073 903 6875 +3 904 947 5483 +3 5153 3277 7106 +3 5153 5729 3277 +3 3276 953 5728 +3 3276 905 953 +3 905 1369 906 +3 907 955 1370 +3 907 1334 955 +3 195 532 4028 +3 1334 6847 955 +3 7073 6432 956 +3 1975 908 5212 +3 7358 1137 963 +3 909 912 1137 +3 911 859 910 +3 911 909 835 +3 226 1898 264 +3 835 800 859 +3 800 6038 859 +3 911 6975 912 +3 3439 5072 7422 +3 3550 967 913 +3 790 7543 3190 +3 3550 914 967 +3 7952 4187 915 +3 7952 5719 4187 +3 4186 969 916 +3 6023 5321 917 +3 5779 919 918 +3 919 6156 6795 +3 920 6048 6245 +3 2971 2098 973 +3 862 921 977 +3 921 922 976 +3 8102 6271 922 +3 864 923 978 +3 923 5182 924 +3 868 925 6743 +3 869 6553 8224 +3 926 7305 6553 +3 3783 4383 3738 +3 7783 874 927 +3 4072 6302 7518 +3 5726 3423 366 +3 6296 5743 928 +3 878 929 2763 +3 2763 929 1112 +3 929 6006 1111 +3 6481 3219 1113 +3 5184 2140 6867 +3 2140 930 6867 +3 6072 987 4391 +3 6608 932 931 +3 932 815 931 +3 7653 933 882 +3 933 986 934 +3 4622 988 935 +3 6644 936 1994 +3 5007 937 5008 +3 5007 5653 937 +3 938 940 7447 +3 890 939 940 +3 5696 4398 7287 +3 5888 941 6818 +3 941 942 6818 +3 943 1038 942 +3 894 990 6378 +3 4680 992 7995 +3 6860 7224 944 +3 7224 945 944 +3 897 5226 945 +3 7052 946 5226 +3 3079 995 7007 +3 899 3020 994 +3 5483 7742 3191 +3 5483 947 7742 +3 3237 948 755 +3 3237 949 948 +3 950 951 7543 +3 3239 947 951 +3 5728 998 5346 +3 953 906 952 +3 1370 955 954 +3 955 1001 954 +3 6847 1003 1001 +3 956 1223 1003 +3 956 6431 1223 +3 957 3388 3345 +3 5551 5786 2448 +3 6879 6523 958 +3 2678 964 959 +3 964 960 959 +3 962 961 960 +3 964 5174 962 +3 964 963 5174 +3 963 1137 5173 +3 912 3441 965 +3 912 6975 3441 +3 966 5277 6976 +3 966 5319 5277 +3 967 6744 1005 +3 915 4187 7308 +3 916 968 5905 +3 916 969 968 +3 969 1009 968 +3 969 917 1009 +3 548 3227 7587 +3 917 970 1009 +3 917 971 970 +3 971 1012 970 +3 971 918 1012 +3 918 6795 1015 +3 6245 1017 972 +3 6245 6048 1017 +3 973 975 8148 +3 975 974 8148 +3 977 1019 974 +3 977 976 1019 +3 976 922 6459 +3 978 924 1021 +3 924 1022 1021 +3 5181 979 1022 +3 5181 981 979 +3 981 5638 979 +3 981 980 5638 +3 980 5294 7997 +3 6375 6743 7997 +3 7305 5552 4719 +3 7305 982 5552 +3 982 6043 5552 +3 982 6329 6043 +3 6329 1023 6043 +3 983 927 7487 +3 7518 1024 984 +3 7594 6668 5293 +3 6668 928 1540 +3 277 302 301 +3 928 985 1540 +3 2763 1112 2765 +3 3219 6867 1016 +3 339 4427 554 +3 987 986 4624 +3 7443 1117 6691 +3 4750 935 988 +3 7322 1994 7300 +3 5008 6784 5011 +3 937 4670 6783 +3 7447 3733 6207 +3 939 5291 1030 +3 5291 989 5675 +3 989 1032 5675 +3 6818 942 6819 +3 990 7995 1041 +3 992 991 8030 +3 992 944 991 +3 944 1042 991 +3 944 945 1042 +3 945 993 1042 +3 5542 1045 4540 +3 7007 995 6522 +3 995 994 3021 +3 3191 1501 6439 +3 3240 5345 996 +3 5346 997 1047 +3 5346 998 997 +3 998 952 1049 +3 999 1050 1371 +3 999 954 1050 +3 954 1000 1050 +3 954 1001 1000 +3 1001 1002 1000 +3 1003 1222 1002 +3 3345 3464 3346 +3 3345 3388 3464 +3 961 1515 3389 +3 961 962 1515 +3 962 1004 1515 +3 962 5174 1004 +3 1006 1005 6259 +3 1005 6744 7496 +3 7995 992 8030 +3 1007 7765 3622 +3 968 5460 1008 +3 968 1009 5460 +3 1009 7028 5460 +3 970 1012 1010 +3 1011 627 1365 +3 1012 1055 1010 +3 1012 1015 1055 +3 1014 1013 848 +3 1015 972 6933 +3 972 8015 6933 +3 972 1017 8015 +3 3219 1016 1026 +3 1017 1018 8015 +3 7636 5897 1018 +3 974 1019 7702 +3 1019 5947 1057 +3 5947 1020 7536 +3 5947 6459 1020 +3 6459 4263 1020 +3 7940 1021 1061 +3 1022 6770 7078 +3 979 5638 1063 +3 6043 1023 7701 +3 1023 1066 7701 +3 3785 5215 5664 +3 7188 4061 3968 +3 7188 7487 4061 +3 5261 6635 5368 +3 1024 7138 7445 +3 1025 3567 3569 +3 1026 5706 1114 +3 1016 1027 5706 +3 1016 5324 1027 +3 1028 5305 5780 +3 6691 3125 4623 +3 6691 1117 3125 +3 6784 4928 6056 +3 6207 1074 1029 +3 6207 3733 1074 +3 3733 6356 6117 +3 6356 1076 6117 +3 6356 1030 1076 +3 5675 6258 6119 +3 5675 1032 6258 +3 1032 7906 1031 +3 7906 1033 1031 +3 2992 30 1034 +3 5353 1081 1035 +3 6819 1036 1037 +3 1038 8115 1036 +3 1036 8115 1083 +3 592 617 640 +3 6070 1039 1040 +3 1041 1382 1039 +3 1041 8030 1382 +3 1042 1044 6772 +3 993 1043 1044 +3 1045 5436 4540 +3 6522 3021 6088 +3 6439 1502 5921 +3 7127 996 1046 +3 1047 1048 1087 +3 997 1372 1048 +3 997 1049 1372 +3 1050 1051 7513 +3 1000 8093 1051 +3 1000 1002 8093 +3 1002 1222 6199 +3 3346 1088 3347 +3 3346 3464 1088 +3 1004 5772 5692 +3 5732 1052 1138 +3 5731 5825 3442 +3 1053 1089 6659 +3 3622 7765 6916 +3 4188 1008 5943 +3 1008 1093 5943 +3 7028 1010 7774 +3 1010 1054 7774 +3 1055 6932 1054 +3 7796 1098 7809 +3 7702 1057 1056 +3 1057 1058 1056 +3 7536 1100 1058 +3 1020 1102 1059 +3 1020 4263 1102 +3 4263 5473 1102 +3 4263 3038 5473 +3 3038 1060 5473 +3 1061 8002 1060 +3 7078 6770 1062 +3 6770 7485 1062 +3 6770 1063 7485 +3 7485 5553 1062 +3 5553 1064 1062 +3 5553 1065 1064 +3 1065 7497 1064 +3 800 1935 6038 +3 7701 1066 5808 +3 3968 1106 1067 +3 3968 4061 1106 +3 1152 2784 1068 +3 6230 1069 2766 +3 2766 1069 6715 +3 1114 5706 1070 +3 1071 7897 1115 +3 1071 5780 7897 +3 4623 1116 1072 +3 4623 3125 1116 +3 6056 4927 4493 +3 6056 4928 4927 +3 1029 1074 1073 +3 1074 3865 1073 +3 1076 6119 1075 +3 569 6808 3328 +3 6119 1077 1075 +3 6258 1122 1077 +3 1031 1078 1122 +3 1035 1079 6094 +3 1035 1081 1079 +3 1081 1037 1080 +3 1037 5625 1080 +3 1083 1040 1082 +3 1040 5903 1082 +3 1039 1382 2425 +3 1382 6280 2425 +3 7967 1084 6280 +3 6772 6276 1084 +3 1044 4514 6276 +3 5436 5093 4312 +3 6794 6088 5662 +3 5921 1502 1503 +3 1085 1046 3278 +3 1087 1086 1126 +3 8111 1128 4439 +3 7682 672 4940 +3 8111 7513 1128 +3 7513 6254 1128 +3 3347 6817 3348 +3 3347 1088 6817 +3 3442 2206 5505 +3 3442 5825 2206 +3 5159 1139 3532 +3 6659 1089 1090 +3 1089 3575 1140 +3 1091 5046 4189 +3 1091 5943 5046 +3 1093 7605 1092 +3 7605 7774 7218 +3 6932 1095 1842 +3 2820 1094 1095 +3 1096 5468 6120 +3 7809 1098 1097 +3 1098 6367 1097 +3 197 6768 234 +3 1098 1056 6367 +3 1058 1099 5228 +3 1058 1100 1099 +3 1100 1146 1099 +3 1100 7907 1146 +3 1059 1101 7907 +3 1102 5472 1101 +3 350 414 415 +3 1060 1103 6619 +3 1060 8002 1103 +3 8002 1064 1103 +3 7497 1104 1103 +3 7497 5808 1104 +3 5808 7976 1104 +3 5216 3786 3742 +3 1067 1105 3969 +3 1067 1106 1105 +3 6406 1153 1107 +3 7554 1068 1154 +3 1068 7166 1108 +3 6715 1109 1110 +3 1111 1112 929 +3 5156 4810 1112 +3 5157 1069 4810 +3 1026 6128 1113 +3 1026 1114 6128 +3 1114 5133 7235 +3 5133 5634 7235 +3 1070 1725 1156 +3 1115 1489 4392 +3 1116 7844 7500 +3 4749 1117 935 +3 4493 4927 1118 +3 4874 1073 1158 +3 1073 3865 7788 +3 345 756 1119 +3 3865 7840 1120 +3 7840 1121 1120 +3 5165 3674 8134 +3 1075 5354 1121 +3 1075 1077 5354 +3 1077 1122 1160 +3 5974 1507 4766 +3 1122 6351 1160 +3 1078 6094 5493 +3 1080 5625 1161 +3 4312 7775 4313 +3 1123 8005 7344 +3 3192 3160 5956 +3 5767 1124 5843 +3 3193 1503 1125 +3 3241 3278 5396 +3 1126 1165 1164 +3 1086 1127 1165 +3 4439 1128 1167 +3 1128 6254 1129 +3 6254 7780 1169 +3 3344 1183 2986 +3 1183 1130 2986 +3 1131 1224 1130 +3 3348 6817 1132 +3 7390 1171 1516 +3 7390 5691 1171 +3 5691 1133 1171 +3 5691 1134 1133 +3 1134 4968 1133 +3 1135 1136 5298 +3 1135 1134 5772 +3 6092 5732 1136 +3 5173 1137 965 +3 965 1052 5732 +3 5732 1138 1136 +3 3532 5304 5495 +3 3532 1139 5304 +3 1139 3578 7970 +3 1139 1090 3578 +3 1090 1140 3578 +3 4189 5046 1141 +3 6472 1175 5479 +3 6472 1092 1175 +3 1092 5759 1175 +3 7218 1142 5759 +3 5918 2573 1142 +3 5918 1842 2573 +3 1842 1177 2573 +3 1842 1095 1177 +3 1095 1178 1177 +3 1094 1143 1178 +3 6120 1179 1143 +3 6120 5468 1179 +3 5468 1097 1144 +3 1097 1181 1144 +3 1097 6367 1181 +3 6367 1145 1181 +3 5228 1182 1145 +3 1099 1146 6033 +3 1146 1186 6033 +3 1146 1187 1186 +3 1101 5472 1147 +3 5472 1148 1147 +3 7976 1149 1148 +3 1150 3724 1149 +3 1107 1151 6826 +3 5293 1152 5331 +3 1152 7138 5331 +3 7554 1155 1153 +3 1155 1107 1153 +3 1155 1151 1107 +3 1155 6164 1151 +3 1155 1154 6164 +3 7929 1156 3054 +3 4392 7431 4393 +3 4392 1489 7431 +3 7500 7844 4747 +3 5544 5016 4767 +3 5013 1195 5014 +3 5013 1157 1195 +3 1157 4925 1195 +3 1157 1118 4925 +3 6538 1158 1198 +3 1158 7055 1198 +3 1158 7788 7055 +3 1120 1518 1159 +3 5354 1160 7416 +3 1160 6351 5737 +3 6351 1201 5737 +3 6625 1161 5622 +3 1161 1202 5622 +3 1161 1162 1202 +3 1162 1204 1202 +3 1162 7075 1204 +3 7137 7704 1208 +3 6395 4512 7704 +3 4313 7775 1211 +3 1164 1163 1213 +3 1165 6704 1163 +3 7700 1215 5237 +3 7700 1167 1215 +3 130 4225 171 +3 1167 1166 1215 +3 1167 1129 1166 +3 1169 1225 2437 +3 1169 1168 1225 +3 7824 4969 5677 +3 1516 4445 1170 +3 1516 1171 4445 +3 1171 1172 4445 +3 1133 6213 1172 +3 4968 6246 1173 +3 1174 4191 7749 +3 1175 5758 1233 +3 2573 1177 1176 +3 1177 8100 1176 +3 1177 1178 8100 +3 1143 7828 8031 +3 1179 1236 7828 +3 1179 1144 1236 +3 1144 1180 1236 +3 1144 1181 1180 +3 1181 1145 1238 +3 1145 5723 1238 +3 1145 1182 5723 +3 1183 1131 1130 +3 6033 1186 1184 +3 1186 1240 1184 +3 809 1185 6440 +3 1186 1241 1240 +3 1187 1430 1241 +3 1187 8050 1430 +3 8050 7122 1430 +3 1147 1149 7122 +3 3971 1188 5847 +3 4074 1243 6997 +3 1190 6826 1189 +3 1151 6164 3094 +3 5310 4288 7393 +3 5310 4289 4288 +3 5438 1247 1191 +3 3054 4394 1192 +3 4767 1193 4768 +3 5014 6678 6020 +3 1195 1194 6678 +3 1197 1196 1253 +3 1197 1198 1196 +3 1198 1255 1196 +3 1159 1518 7288 +3 1518 1257 7288 +3 1518 1199 1257 +3 1199 1200 1257 +3 7416 7533 1200 +3 1201 5043 1816 +3 1201 7731 5043 +3 5622 1202 1203 +3 1202 1204 3447 +3 3838 1205 7562 +3 1204 7074 1206 +3 7074 1207 6535 +3 1207 1208 2080 +3 1208 4509 2080 +3 3693 1209 3698 +3 1211 6665 1209 +3 1211 1210 6665 +3 7398 3196 5070 +3 3242 3280 5710 +3 1213 7914 1212 +3 1214 602 838 +3 1215 1266 1878 +3 1166 2437 7553 +3 5489 1217 629 +3 1217 8072 1216 +3 723 6950 654 +3 723 1218 6950 +3 1218 1220 722 +3 1220 1219 722 +3 1220 1221 1219 +3 1221 1976 796 +3 1976 6294 796 +3 1130 1222 1223 +3 1224 4970 6199 +3 7824 1168 6200 +3 7824 1226 1168 +3 3428 3380 3376 +3 1226 8067 1225 +3 1226 5677 8183 +3 6855 3392 1227 +3 6855 3390 3392 +3 1170 1270 1519 +3 4445 1172 1271 +3 1172 1228 1271 +3 1172 6213 1228 +3 5303 1273 1229 +3 7749 4651 3625 +3 1230 6221 7744 +3 6221 7310 1231 +3 1233 7286 1232 +3 5758 1234 7286 +3 6216 5756 5288 +3 5756 1276 5288 +3 1176 1277 1276 +3 8031 7410 1235 +3 7828 1236 1237 +3 1180 1278 7600 +3 1180 1238 1278 +3 1238 5723 7528 +3 8003 7339 5722 +3 8003 1184 7339 +3 1184 1239 7339 +3 1184 1240 1239 +3 1240 7238 1239 +3 1240 5621 7238 +3 1240 1241 5621 +3 6997 1243 1242 +3 1243 1283 1242 +3 1243 1189 1283 +3 1189 1244 1283 +3 7388 3094 5408 +3 3094 1245 5408 +3 7393 1284 1246 +3 1247 1285 6314 +3 1247 1192 1285 +3 1248 1490 4395 +3 1249 7845 5963 +3 7845 5523 5963 +3 816 887 886 +3 7845 1250 5523 +3 4768 1286 1251 +3 6020 1287 1252 +3 1253 1254 4870 +3 1196 5521 1254 +3 1196 1255 5521 +3 1255 6803 1256 +3 7288 1257 6581 +3 1257 1200 1258 +3 1200 5428 1258 +3 5043 1259 1260 +3 7730 5816 1259 +3 7730 1261 5816 +3 3447 1292 4329 +3 4509 1262 7959 +3 1209 1263 1264 +3 5710 1297 3243 +3 5710 3280 1297 +3 1212 1298 1265 +3 1212 7914 1298 +3 7914 5919 1298 +3 1878 1428 2142 +3 1878 1266 1428 +3 1266 1268 1428 +3 7553 1267 1268 +3 1227 1299 1269 +3 1227 3392 1299 +3 1519 1300 1520 +3 1519 1270 1300 +3 1271 1272 6060 +3 1228 6574 1272 +3 1229 1303 3214 +3 1229 1273 1303 +3 4375 1304 3627 +3 4375 1274 1304 +3 3625 4651 1274 +3 1275 5451 1305 +3 1232 7286 5965 +3 5288 1276 7470 +3 1276 1306 7470 +3 1277 1235 1307 +3 7600 1278 2432 +3 1278 1309 2432 +3 1278 7528 1309 +3 7528 7714 1309 +3 5722 7339 7669 +3 1239 1279 1310 +3 5962 1311 1280 +3 31 30 2992 +3 5822 4059 1312 +3 5822 1281 4059 +3 7181 1313 1282 +3 1242 5421 1313 +3 1242 1283 5421 +3 1283 7712 5421 +3 6977 1246 2770 +3 2770 1246 1315 +3 1246 1284 4285 +3 6314 1285 8080 +3 5513 6079 6559 +3 4746 1251 4070 +3 1251 1286 5018 +3 1252 8212 5017 +3 1252 1287 8212 +3 4870 1320 7337 +3 4870 1254 1320 +3 1254 1321 1320 +3 1254 5521 1321 +3 5521 1288 1321 +3 1256 5609 1288 +3 1289 7504 5609 +3 1258 6882 5199 +3 1258 5428 6882 +3 5428 7195 6882 +3 5428 1290 7195 +3 1291 1125 5998 +3 1260 1325 6049 +3 1259 5816 7634 +3 5747 1328 5815 +3 4329 1292 6955 +3 1292 7114 6955 +3 6370 1293 7114 +3 6370 7960 1293 +3 7960 4505 1293 +3 4314 1331 1294 +3 679 1295 718 +3 4314 1264 1331 +3 3199 1506 1296 +3 3243 7601 5253 +3 3243 1297 7601 +3 1265 1335 3281 +3 1265 1298 1335 +3 1298 4976 1335 +3 1298 5919 4976 +3 1374 5119 5920 +3 1374 2142 5119 +3 1269 1299 3394 +3 1520 1300 6399 +3 7596 3521 1301 +3 527 526 159 +3 3214 7203 1302 +3 3214 1303 7203 +3 3627 1304 4761 +3 1305 1342 4194 +3 5451 1343 1342 +3 5451 7576 1343 +3 5965 1344 7200 +3 5540 5515 1345 +3 7470 1306 1346 +3 1306 6444 1346 +3 1306 1307 6444 +3 1307 6961 6444 +3 1307 7993 6961 +3 7993 1308 1347 +3 2432 6030 5777 +3 2432 1309 6030 +3 1310 3719 7668 +3 1280 1311 3747 +3 1312 4057 3978 +3 1282 1352 4077 +3 1313 1397 1352 +3 5421 7712 1314 +3 7712 6486 1314 +3 7712 5407 6486 +3 2770 1315 7051 +3 6966 1316 6332 +3 1316 4396 6332 +3 7839 3856 1317 +3 6559 1318 4629 +3 5017 8212 1319 +3 8212 4922 1319 +3 7337 1320 7378 +3 1320 1356 7378 +3 1320 1321 1356 +3 1288 6618 1357 +3 1288 5609 6618 +3 7504 5199 1322 +3 5199 1358 1322 +3 7653 882 815 +3 7195 1324 1323 +3 6049 1359 1324 +3 6049 1325 1359 +3 1325 1326 1359 +3 7634 1361 1326 +3 7634 5815 1361 +3 5815 1327 1361 +3 5815 1328 1327 +3 1328 6955 1329 +3 1293 4504 1362 +3 1293 4505 4504 +3 1294 1331 6735 +3 1331 6338 6735 +3 1331 1330 6338 +3 1296 1506 1332 +3 3281 8135 7448 +3 3281 1335 8135 +3 5978 1333 1334 +3 1335 1375 8135 +3 1335 4976 1375 +3 1336 1338 7016 +3 7355 1337 1338 +3 7355 2281 1337 +3 3350 3396 1339 +3 1340 5387 3445 +3 1340 1301 5387 +3 1302 3581 1341 +3 3628 6081 3629 +3 3628 4761 6081 +3 4195 1388 4762 +3 4195 1389 1388 +3 4194 1342 1389 +3 1342 1343 1390 +3 1343 7863 1390 +3 1344 7266 1547 +3 1345 5450 7266 +3 6753 1346 1392 +3 1347 7905 6386 +3 7905 5777 5178 +3 5777 7179 5178 +3 6030 5666 1348 +3 5666 6126 1394 +3 7668 3719 7207 +3 3747 1350 1349 +3 1350 2439 1349 +3 3978 1351 7279 +3 3978 4057 1351 +3 4077 6685 5821 +3 4077 1352 6685 +3 1352 1397 7381 +3 1314 1399 1398 +3 1314 6486 1399 +3 6486 5881 1399 +3 4285 7123 1315 +3 6332 4396 4399 +3 1318 6263 7350 +3 1353 6263 1318 +3 6562 7644 1354 +3 7212 1319 1355 +3 1319 4922 4920 +3 7378 1356 6640 +3 1356 1357 1407 +3 1322 1358 6672 +3 1324 1411 5900 +3 1324 1359 1411 +3 1326 1360 1413 +3 853 943 941 +3 1361 5601 1360 +3 1329 8065 6610 +3 6529 1362 7930 +3 1362 4504 1417 +3 6735 6338 6225 +3 5740 6693 7302 +3 5740 3741 6693 +3 5077 6670 5167 +3 5077 1332 6670 +3 2665 194 6224 +3 8135 1375 1363 +3 1364 5192 7969 +3 7703 3975 627 +3 683 1366 1365 +3 1367 1368 1366 +3 7394 794 1368 +3 7394 833 794 +3 833 5978 6684 +3 907 1369 7232 +3 907 1370 1369 +3 1370 906 1369 +3 1370 999 906 +3 8072 723 654 +3 1371 1049 952 +3 8111 4439 1372 +3 1373 7724 6704 +3 1373 1374 7724 +3 1374 5919 7724 +3 1376 1363 1375 +3 7165 1377 1376 +3 7165 7017 1377 +3 7017 5886 1377 +3 1338 2283 7626 +3 7615 1378 2280 +3 1378 1379 7284 +3 1380 6350 1522 +3 6339 1381 6177 +3 1382 7967 6280 +3 6836 7202 3444 +3 6836 1426 1381 +3 6836 3444 1426 +3 3445 1383 1427 +3 3445 5387 1383 +3 5273 1341 1429 +3 1341 1384 1429 +3 1385 5353 6981 +3 4762 1386 1387 +3 4762 1388 1386 +3 1388 7354 1386 +3 1389 1390 6648 +3 1390 5996 6648 +3 7266 5450 1391 +3 5450 7461 1391 +3 5450 1392 7461 +3 1392 4197 1431 +3 1282 1313 1352 +3 6443 6171 1433 +3 6386 5526 1393 +3 7179 7740 6651 +3 1348 1394 8207 +3 7208 6658 7001 +3 781 6568 1395 +3 5821 5806 1396 +3 5821 6685 5806 +3 7381 6299 5805 +3 1314 1398 1397 +3 1398 7381 1397 +3 1398 1399 6805 +3 2771 1400 5342 +3 7654 1454 1401 +3 7654 2249 1454 +3 2249 4399 1402 +3 4397 5712 6541 +3 4397 6473 5712 +3 4631 7350 1403 +3 1354 7124 2788 +3 1354 5019 7124 +3 4049 5188 5021 +3 1405 1404 2246 +3 6883 5074 5578 +3 1407 1459 1457 +3 1407 1406 1459 +3 1406 1409 1408 +3 359 4218 489 +3 1409 5522 1408 +3 1409 5135 5522 +3 3378 5419 7067 +3 5135 1410 5522 +3 6672 5707 1410 +3 6672 7909 5707 +3 5900 1411 1461 +3 1411 1413 7512 +3 1413 1412 7512 +3 1360 4420 1412 +3 1360 5601 4420 +3 348 1414 1415 +3 7930 6100 1416 +3 7930 1417 6100 +3 5435 1418 6592 +3 6809 3027 1418 +3 6809 6225 3027 +3 5704 6465 3163 +3 1420 3914 1419 +3 1421 1422 3231 +3 1422 1363 7330 +3 1376 1464 1423 +3 1377 1465 1464 +3 1377 5886 1465 +3 5886 2004 1465 +3 7626 2283 1424 +3 3351 1769 1425 +3 1522 6823 1524 +3 1381 1426 5951 +3 1427 4958 3446 +3 2142 1428 1336 +3 3535 1470 3536 +3 697 5716 7010 +3 3535 1429 1470 +3 1429 8060 1470 +3 3630 1686 6983 +3 1386 1473 8086 +3 1386 7354 1473 +3 7354 1474 1473 +3 6648 5996 1475 +3 7201 6630 7249 +3 1241 1430 3722 +3 1391 1477 1476 +3 1431 5446 5746 +3 7629 1433 1432 +3 1433 1393 1479 +3 1393 6262 1479 +3 6651 1481 5525 +3 8207 1435 6789 +3 7001 1434 1435 +3 7001 6658 1434 +3 8044 7624 3749 +3 1436 4054 5538 +3 5805 6299 1437 +3 6299 1438 1437 +3 6299 6805 1438 +3 1440 4111 7716 +3 7234 705 1439 +3 1440 7424 4111 +3 7424 8078 6607 +3 8078 4114 6607 +3 2760 4115 1441 +3 3145 1442 5527 +3 1442 4117 5527 +3 1442 2762 4117 +3 2762 4118 4117 +3 2762 1443 4118 +3 7310 1232 1231 +3 1443 2764 6405 +3 2764 1445 6622 +3 1445 2767 1444 +3 2767 5891 1444 +3 1446 1447 5891 +3 2768 4120 1447 +3 2768 6639 4120 +3 6269 7466 4121 +3 6269 1449 7466 +3 1449 4123 7466 +3 1449 1448 4123 +3 1448 1451 7988 +3 1451 1450 7988 +3 1451 7690 1450 +3 4282 1401 1452 +3 1401 1453 1452 +3 1401 1454 1453 +3 1454 1486 1453 +3 1454 1402 1486 +3 6541 5712 8022 +3 1455 2788 7135 +3 5021 5188 1456 +3 6973 1457 1493 +3 1457 1459 1458 +3 1459 1408 5941 +3 5522 1410 1496 +3 7445 7138 1153 +3 1410 5707 3271 +3 7175 3559 1460 +3 7175 1461 3559 +3 1461 6674 3559 +3 1412 1497 8045 +3 5830 7984 1498 +3 1463 1416 1462 +3 1416 4498 1462 +3 1418 3027 1500 +3 3163 6763 3165 +3 1419 7282 3246 +3 1419 3914 7282 +3 1423 4847 7331 +3 1423 1464 4847 +3 1464 1465 1511 +3 6324 3354 2284 +3 6324 6149 3354 +3 1467 3397 3352 +3 645 1466 715 +3 1467 1425 3397 +3 7612 6711 1468 +3 3446 4958 1529 +3 3536 1470 1531 +3 1470 1469 1531 +3 6984 7257 3631 +3 1472 8086 1471 +3 8086 3543 1471 +3 8086 1473 3543 +3 1473 6631 3543 +3 1473 1474 6631 +3 1474 7012 6631 +3 1474 1535 7012 +3 1475 5995 1535 +3 6629 1476 2293 +3 1476 1477 1478 +3 1477 5746 7655 +3 5746 5446 1539 +3 5446 1541 1539 +3 5446 1432 1541 +3 1432 1542 1541 +3 1432 1479 1542 +3 1481 6789 1480 +3 6789 1482 1480 +3 1435 3716 1482 +3 3749 7624 3750 +3 7624 1544 3750 +3 5272 1437 1483 +3 1437 7621 1483 +3 4526 1484 2106 +3 1485 1452 4016 +3 1453 5154 1833 +3 1094 6120 1143 +3 1453 1486 5154 +3 1487 5780 5305 +3 7816 1488 1489 +3 7430 7900 6087 +3 7900 1490 6087 +3 1491 5712 6473 +3 4633 6231 8022 +3 6373 1550 6298 +3 5020 1456 2378 +3 1456 6897 2378 +3 1456 4917 6897 +3 7820 5973 4868 +3 1492 1493 1552 +3 1493 7937 1552 +3 1493 1458 7937 +3 1458 1494 7937 +3 1458 5941 1494 +3 6341 1496 5283 +3 1496 1495 5283 +3 1496 3271 1495 +3 8045 1497 4379 +3 1497 1498 1499 +3 7984 1462 1556 +3 7178 3029 5323 +3 3627 4761 3628 +3 7178 1500 3029 +3 7324 5120 5863 +3 3809 1501 7741 +3 287 3481 3479 +3 3809 1502 1501 +3 5534 1503 1502 +3 1504 1125 1503 +3 1504 5711 1125 +3 8095 7881 1505 +3 3244 1332 1506 +3 3244 3562 1332 +3 4766 1507 5015 +3 3562 6670 1332 +3 3561 1508 6669 +3 1508 6112 5539 +3 7216 1561 1509 +3 7331 1564 1510 +3 7331 4847 1564 +3 1511 1512 1565 +3 6748 2285 1512 +3 6748 1513 2285 +3 3352 1514 1566 +3 1084 6395 7137 +3 3352 3397 1514 +3 6419 3389 1515 +3 6419 6944 3389 +3 7390 1516 7242 +3 1170 1517 6985 +3 1170 1519 1517 +3 1121 1199 1518 +3 1519 3391 1517 +3 1520 5307 4901 +3 5307 1380 3393 +3 1380 1521 3393 +3 1380 1522 1521 +3 1522 1523 1521 +3 1524 1805 1523 +3 1526 1525 7031 +3 6229 5423 1526 +3 1527 1468 7180 +3 1468 5313 7180 +3 1468 7477 5313 +3 1530 3519 8053 +3 820 1528 3261 +3 1530 1529 3519 +3 7847 5289 1569 +3 7847 1531 5289 +3 1531 5982 5289 +3 1533 1532 7258 +3 1533 1471 1532 +3 6631 7012 1534 +3 7012 1535 7745 +3 1536 5548 7745 +3 1536 1557 5548 +3 2293 1538 1537 +3 1478 5713 1538 +3 7655 1539 1574 +3 6668 1540 5293 +3 1541 2895 3908 +3 1542 5094 1576 +3 1480 1543 7325 +3 1482 3715 1543 +3 1482 3716 3715 +3 3750 1544 1578 +3 1545 6532 2082 +3 6532 1546 2082 +3 6532 7773 1546 +3 8026 1547 6630 +3 1483 7621 3497 +3 7621 1548 3497 +3 7621 2124 1548 +3 5511 6543 1664 +3 1833 5154 1584 +3 1549 6400 1620 +3 6298 1550 1551 +3 5751 3870 1587 +3 1552 6035 5597 +3 5784 6547 5968 +3 1495 1553 6153 +3 1553 1554 5137 +3 6560 4379 1555 +3 4379 1592 1555 +3 6695 1556 6643 +3 1556 3135 1593 +3 3135 4495 1593 +3 5519 3185 4318 +3 1557 1537 5548 +3 5323 3029 1558 +3 5863 5120 5161 +3 1560 7446 1559 +3 1509 1561 1562 +3 1561 6616 1563 +3 1510 5040 3306 +3 1510 1564 5040 +3 1564 6974 5040 +3 1564 1565 6974 +3 1565 6238 6974 +3 1512 2286 6238 +3 1566 3399 4246 +3 1526 5423 1599 +3 5423 7251 1599 +3 7566 7180 1567 +3 1569 1568 3539 +3 5289 5982 6187 +3 5230 7004 3634 +3 7258 7666 1570 +3 7328 1571 1604 +3 1534 1572 5769 +3 1572 1605 5769 +3 1572 1573 1605 +3 7745 5548 1573 +3 1537 1538 7569 +3 1538 3343 7569 +3 1538 5713 3343 +3 5713 1606 3343 +3 5713 1574 1606 +3 1574 5397 1606 +3 1574 3908 5397 +3 2895 1608 4534 +3 1576 1609 1608 +3 1576 1575 1609 +3 1575 7486 1577 +3 1543 1611 6594 +3 1543 3715 1611 +3 862 977 975 +3 1578 3792 1612 +3 6215 4050 1579 +3 6215 7332 4050 +3 2736 1617 1616 +3 2736 3497 1617 +3 2773 1580 4129 +3 1580 2774 6567 +3 1581 1710 6557 +3 6557 1710 1582 +3 1583 2105 1484 +3 8192 1710 2105 +3 4015 4401 6449 +3 4015 1584 4401 +3 1585 1621 4402 +3 1585 1620 1621 +3 2034 1586 4634 +3 4742 1587 7210 +3 5022 3778 8214 +3 6585 1625 1588 +3 6585 2231 1625 +3 5597 7667 7182 +3 6035 7415 1589 +3 7415 1590 1589 +3 5968 1626 1590 +3 5137 1628 6355 +3 7610 1591 1628 +3 5859 2497 1591 +3 5859 1555 2497 +3 1555 1592 6205 +3 1592 8200 6205 +3 6643 1593 5877 +3 1593 4496 5877 +3 4318 1594 1631 +3 3185 1558 1595 +3 6017 3056 3203 +3 7269 6868 3943 +3 1562 5896 6545 +3 1562 1563 5896 +3 3306 5040 1596 +3 6238 2286 1597 +3 3353 1598 7537 +3 1598 2287 7537 +3 6437 1643 6393 +3 6437 1599 1643 +3 1599 5134 1643 +3 6723 7963 1600 +3 3539 1644 5086 +3 1568 1601 1644 +3 3634 7004 4199 +3 7666 1647 5152 +3 7666 1603 1647 +3 1603 1604 1602 +3 1604 5280 1648 +3 5280 1651 1648 +3 1605 6345 1653 +3 3343 1606 7855 +3 1606 5397 8099 +3 5397 1657 8099 +3 4534 1607 1657 +3 4534 1608 1607 +3 1609 1577 6729 +3 1577 1610 6729 +3 1577 2303 1610 +3 6594 1611 7814 +3 1612 3794 3753 +3 3794 7333 3753 +3 1579 4050 1613 +3 7336 1614 4081 +3 5554 1752 1614 +3 2736 1546 7773 +3 1616 6816 1546 +3 1616 1615 6816 +3 1616 1617 1661 +3 1617 6359 1661 +3 6449 5082 1618 +3 4402 1621 1619 +3 7220 1621 1620 +3 7679 1619 1621 +3 5047 5104 1622 +3 8214 1623 2496 +3 1588 1624 4866 +3 1625 1670 1624 +3 7182 7667 6497 +3 1589 4706 1672 +3 1626 1674 5766 +3 1626 5600 1674 +3 1628 3779 1627 +3 1591 2497 5219 +3 8116 1630 1629 +3 5877 4492 1630 +3 1631 5517 4319 +3 1594 1595 3032 +3 3203 3056 1632 +3 3247 5161 6111 +3 1683 1632 3056 +3 5166 1633 5444 +3 1634 1596 1684 +3 1635 1685 6008 +3 1635 1637 1685 +3 1637 1597 1636 +3 1638 3400 3355 +3 6393 4099 6437 +3 6393 1639 4099 +3 1640 1687 1639 +3 6393 1643 1641 +3 1643 1642 1641 +3 1600 7963 1691 +3 5086 1644 4407 +3 1644 7315 4407 +3 1645 4199 1693 +3 6188 7958 1646 +3 5152 1647 1694 +3 1602 1648 1695 +3 1648 1651 1649 +3 1651 1650 7255 +3 1653 1652 1698 +3 1653 6345 4138 +3 7570 1654 7126 +3 8099 7932 1655 +3 1657 1656 7932 +3 5596 6729 1658 +3 1610 7161 1659 +3 1610 3395 7161 +3 3395 7814 6505 +3 3980 1613 4048 +3 4081 6003 1660 +3 4081 1614 6003 +3 1615 1707 1753 +3 1615 1661 1707 +3 1661 4132 1707 +3 5926 1662 6620 +3 6620 1662 1663 +3 7953 4280 1664 +3 8046 1665 4403 +3 1619 4637 1665 +3 665 3378 737 +3 1667 7211 1666 +3 7211 4740 1666 +3 6467 1586 1551 +3 480 3664 481 +3 1668 4740 7211 +3 1622 5104 5715 +3 5104 1669 5715 +3 1624 1670 7933 +3 1670 7442 1671 +3 6497 1672 1673 +3 5766 1674 6123 +3 1674 6241 7032 +3 6241 1675 7032 +3 5929 5117 1675 +3 5929 1627 5117 +3 1627 1723 5117 +3 1627 3779 1723 +3 3779 1724 1723 +3 1676 1729 1726 +3 1676 1629 1729 +3 1629 1630 1728 +3 1630 4488 1728 +3 4319 5517 1677 +3 5517 3032 1731 +3 1680 1678 6923 +3 3202 3166 1679 +3 3202 3205 3166 +3 3205 1680 3166 +3 3205 1678 1680 +3 3204 5223 1681 +3 1632 1682 5223 +3 1632 1683 1682 +3 6434 1733 5105 +3 6434 3283 1733 +3 1633 5627 5852 +3 3307 7132 3308 +3 3307 1684 7132 +3 1684 6008 5185 +3 6008 1737 5185 +3 1685 1636 1738 +3 3629 6081 1686 +3 1687 7945 7307 +3 1640 1641 1688 +3 1690 1689 3449 +3 1690 1742 1642 +3 1690 3449 6421 +3 1692 1691 3516 +3 3635 7375 6575 +3 3635 1693 7375 +3 1646 7958 6417 +3 6378 990 6070 +3 1694 2534 1744 +3 2534 1746 1744 +3 2534 1695 1746 +3 1695 4587 1746 +3 1695 1649 4587 +3 1649 7255 1696 +3 1697 4885 6452 +3 710 783 2677 +3 1698 1699 2963 +3 1652 1748 1699 +3 1652 5254 1748 +3 7125 1655 1700 +3 1655 7932 7710 +3 620 5455 1466 +3 1656 1701 1702 +3 1656 7449 1701 +3 6976 5277 5824 +3 7449 1658 5565 +3 1658 1750 5565 +3 1658 1659 1750 +3 1703 5038 3754 +3 5038 6012 3754 +3 1704 4047 3981 +3 1704 4048 4047 +3 6003 5475 1705 +3 1753 1755 1706 +3 1753 1707 1755 +3 2774 4130 6567 +3 1708 4400 4130 +3 1709 1663 5106 +3 6097 1582 1710 +3 6097 5572 1582 +3 169 130 1711 +3 5572 1662 1582 +3 4278 1712 1663 +3 4277 1713 4151 +3 7550 1714 7833 +3 4403 7746 5500 +3 1665 4637 1715 +3 4635 8141 4636 +3 1666 4740 6905 +3 4773 5024 1716 +3 2345 1757 5023 +3 7630 1717 1758 +3 6539 7933 2271 +3 7933 5399 2271 +3 1673 1719 1718 +3 1719 1720 1718 +3 4705 1761 1720 +3 7032 1762 6122 +3 1675 1721 1762 +3 5117 1723 6531 +3 1723 1722 6531 +3 1723 1724 1722 +3 1724 1763 1722 +3 1156 1725 4394 +3 6209 6737 1763 +3 6209 1726 6737 +3 1726 1729 1727 +3 1729 5196 1727 +3 1729 1728 5196 +3 1730 1677 1765 +3 1677 1767 1765 +3 1677 1731 1767 +3 823 893 853 +3 1681 1732 1771 +3 1681 5223 1732 +3 5105 1733 6374 +3 5852 5627 1734 +3 3308 7132 1735 +3 5185 5788 1736 +3 5185 1737 5788 +3 1737 1738 5302 +3 6673 1741 2288 +3 1741 1739 2288 +3 1741 1740 1739 +3 1740 8098 6544 +3 7945 7348 7306 +3 7945 1688 7348 +3 1742 5676 5665 +3 1742 6421 5676 +3 3450 7244 3451 +3 6575 6595 1743 +3 6417 7889 1779 +3 6572 1780 7889 +3 43 137 101 +3 6572 1744 1780 +3 1744 1746 1745 +3 1746 7852 1745 +3 4587 1696 1747 +3 1696 1783 1747 +3 1696 2963 1783 +3 1748 1789 1785 +3 1748 1749 1789 +3 5254 6760 1749 +3 7710 1790 7691 +3 1701 1792 6990 +3 1750 6746 3889 +3 3754 6012 3755 +3 3981 1751 1794 +3 3981 4047 1751 +3 1615 1753 1752 +3 1753 5475 1752 +3 1706 1705 5475 +3 1706 1754 1705 +3 1706 7262 1754 +3 1706 1755 7262 +3 1755 7035 1756 +3 5795 4151 5101 +3 4151 5084 5101 +3 5500 5702 3326 +3 5500 7746 5702 +3 7746 4638 5702 +3 4636 1841 6086 +3 4636 8141 1841 +3 1716 5025 1801 +3 1716 5024 5025 +3 5023 1757 5347 +3 1757 7366 5347 +3 1757 4914 7366 +3 1758 7488 4864 +3 1717 2271 1759 +3 5399 1760 1811 +3 1760 5390 5240 +3 5390 5114 5240 +3 1718 7458 5114 +3 1718 1720 7458 +3 1720 1813 7458 +3 1761 7382 1813 +3 1762 5541 5478 +3 1722 1763 1817 +3 1727 6638 1764 +3 1766 1765 6814 +3 1765 1767 8188 +3 1768 3206 3208 +3 1339 3396 1769 +3 1191 6314 1770 +3 1771 1772 3207 +3 1732 3249 1772 +3 1732 3248 3249 +3 244 6834 285 +3 1773 6374 5357 +3 5333 7334 2721 +3 1774 1734 3310 +3 5626 6953 3309 +3 1735 1736 4886 +3 1736 1823 4886 +3 1736 5788 1823 +3 6804 7403 5536 +3 1775 6252 3404 +3 1776 5665 1872 +3 5665 5676 5299 +3 3451 7244 5262 +3 5835 1825 3544 +3 5835 1777 1825 +3 1777 6785 3586 +3 1743 1778 7432 +3 1779 6135 6364 +3 1780 1745 6858 +3 1745 1781 6858 +3 1745 7852 1781 +3 7852 1782 1781 +3 1747 1830 1782 +3 1747 1783 1830 +3 1783 1784 1831 +3 1784 1785 1786 +3 1785 1789 1787 +3 1789 1834 1787 +3 1789 1788 1834 +3 1749 5532 1788 +3 7691 1790 7994 +3 1790 6990 1791 +3 6990 7204 1791 +3 6990 1792 7204 +3 1792 3889 1793 +3 3889 3972 1793 +3 3889 6746 3972 +3 6746 7938 3711 +3 1794 4046 6927 +3 4084 1796 1795 +3 1797 1891 1796 +3 1754 2276 1890 +3 1754 7262 2276 +3 7262 1798 2276 +3 1800 4133 4131 +3 1800 1799 4133 +3 6086 1840 4639 +3 4738 1801 7961 +3 7277 1802 1803 +3 1801 5025 1804 +3 6229 7031 1805 +3 1807 1808 1806 +3 5347 4911 1808 +3 5347 7366 4911 +3 1759 1809 1843 +3 1809 1810 1843 +3 1811 7023 1810 +3 6342 1812 757 +3 7458 1813 8204 +3 1813 7382 8159 +3 7382 1814 8159 +3 5478 5541 1850 +3 5255 4606 1815 +3 5255 5415 4606 +3 5415 1817 5736 +3 5737 1201 1816 +3 1817 7862 5736 +3 1817 7006 7862 +3 7006 1764 1818 +3 1764 6850 1818 +3 1819 1853 4322 +3 1819 6814 1853 +3 6814 8101 1853 +3 3207 8028 1820 +3 3309 7825 5301 +3 4886 1865 1862 +3 4886 1823 1865 +3 1823 1821 1865 +3 1823 1822 1821 +3 7493 1871 1824 +3 5263 1873 3452 +3 3544 7343 3546 +3 3544 1825 7343 +3 1825 3586 1826 +3 1828 4326 1827 +3 1828 6364 4326 +3 1033 1035 6094 +3 6858 1879 1829 +3 1781 1880 1879 +3 1781 1782 1880 +3 1830 8074 6430 +3 1831 1786 5725 +3 1786 1787 8198 +3 1834 1883 1832 +3 1452 1453 1833 +3 1834 5605 1883 +3 5485 1835 5605 +3 5485 7994 1835 +3 7994 7268 1835 +3 7204 1885 1884 +3 1793 3972 1836 +3 725 2202 2994 +3 3972 1887 1836 +3 6927 4046 7299 +3 1795 1796 1837 +3 1796 1838 1837 +3 2616 6525 3965 +3 1796 1891 1838 +3 4276 6807 5791 +3 5944 6755 6707 +3 4405 1894 6021 +3 4405 3018 1894 +3 4639 1840 1839 +3 1840 4737 1839 +3 4739 7280 1841 +3 1808 4911 4909 +3 7271 6404 6189 +3 1054 6932 1842 +3 6404 7956 6189 +3 6388 1843 7728 +3 1843 1810 1844 +3 1810 7023 1845 +3 7023 1904 1845 +3 7023 1847 1904 +3 1847 7459 1846 +3 7459 8147 1846 +3 8159 7509 1848 +3 1814 1850 1849 +3 1850 1815 1908 +3 4606 5736 1851 +3 7862 1818 1852 +3 4322 1853 6963 +3 1853 6107 6963 +3 1855 1854 7999 +3 3208 7972 1768 +3 3208 1856 7972 +3 1856 1855 7972 +3 1856 1854 1855 +3 1820 1913 6391 +3 1857 8028 1772 +3 1859 1858 6514 +3 3284 7748 1860 +3 7825 1862 1861 +3 1862 1864 1861 +3 7829 5667 5442 +3 523 1863 251 +3 8072 654 1216 +3 1865 2290 1864 +3 4398 1866 7287 +3 3359 2289 1867 +3 5837 1868 7521 +3 1870 1824 1869 +3 1824 6239 1869 +3 5356 1824 1871 +3 1871 1776 1872 +3 1319 4920 1355 +3 3452 3514 1921 +3 3452 1873 3514 +3 7343 3588 1874 +3 7683 4200 3637 +3 7683 5350 4200 +3 1827 4326 3728 +3 4326 1924 3728 +3 1875 1877 1925 +3 1877 1829 1876 +3 5237 1215 1878 +3 1829 1927 1876 +3 1829 1879 1927 +3 1879 1880 5894 +3 1880 6430 1928 +3 6430 1881 1928 +3 6430 8074 1881 +3 8074 5724 1881 +3 8198 1832 1882 +3 1832 1883 6185 +3 1883 4368 1930 +3 1883 5605 4368 +3 7268 1884 1933 +3 1884 1885 1934 +3 1836 1886 1937 +3 1836 1887 1886 +3 1889 1888 5993 +3 1889 1837 1888 +3 1890 1891 6634 +3 7849 1838 1891 +3 7849 1982 1838 +3 7849 5461 1982 +3 7848 4136 5461 +3 7848 4134 4136 +3 7091 6806 7205 +3 1893 1892 2021 +3 6967 6925 612 +3 6707 1946 1892 +3 6707 6755 1946 +3 6021 1894 1895 +3 1894 4640 1896 +3 1839 1897 5177 +3 1839 4737 1897 +3 1898 265 264 +3 6042 5862 1899 +3 5862 5028 1899 +3 764 837 5901 +3 5862 5026 5028 +3 5027 6652 5029 +3 3332 4909 5441 +3 6189 1901 1900 +3 7956 7642 1901 +3 1844 1950 1902 +3 1845 1903 1950 +3 1845 1904 1903 +3 1904 6065 1903 +3 1904 1846 6065 +3 1846 8147 4974 +3 8147 1951 4974 +3 1848 1952 1951 +3 7509 1905 1952 +3 7509 1849 1905 +3 1849 1906 1905 +3 1849 1908 1906 +3 1908 1907 1906 +3 1908 1909 1907 +3 1909 1953 1907 +3 1909 1851 1953 +3 1851 1910 6736 +3 1910 1852 1911 +3 6391 1913 1912 +3 1913 6958 6148 +3 3250 6514 5953 +3 1915 1957 1914 +3 1915 1860 1957 +3 1860 5639 1957 +3 1860 3311 5639 +3 1916 1917 3312 +3 5287 1918 1917 +3 1861 1960 1918 +3 1861 1864 1960 +3 1864 2292 1960 +3 1864 2290 2292 +3 7912 1919 4430 +3 3405 6480 3407 +3 7044 5546 2815 +3 1869 6239 1962 +3 6239 3455 1962 +3 1921 1920 4141 +3 1874 3590 7048 +3 1922 876 845 +3 5544 5015 5016 +3 3637 4200 1964 +3 1924 5890 1923 +3 1925 1876 5220 +3 1876 1926 5220 +3 1927 1968 1926 +3 1927 5894 1968 +3 5894 4503 1968 +3 1928 4198 4503 +3 1881 1929 4198 +3 6185 1930 1974 +3 1930 1977 1931 +3 1930 4368 1977 +3 6663 1933 1932 +3 1933 1979 1932 +3 1933 1934 1979 +3 1934 1937 5848 +3 1973 6038 1935 +3 1937 1936 5848 +3 6050 3798 3758 +3 3983 5774 2535 +3 5993 1980 4087 +3 1888 1983 1938 +3 5461 4136 1939 +3 2775 1940 8082 +3 2775 1941 1940 +3 7091 7205 1942 +3 1942 7205 1943 +3 1944 7205 6806 +3 1892 1985 1945 +3 1892 1946 1985 +3 1946 4411 1985 +3 1947 1899 8122 +3 1899 1948 8122 +3 6844 7236 5176 +3 6917 1949 1989 +3 1900 1991 1949 +3 1900 1901 1991 +3 1901 5372 1991 +3 1901 7642 5372 +3 7642 1992 5372 +3 7642 1902 1992 +3 1902 5754 1992 +3 1950 2950 5754 +3 4974 1951 1995 +3 1952 8096 7129 +3 1906 1996 6534 +3 1907 1997 1996 +3 1907 1953 1997 +3 1953 7099 1997 +3 6736 1911 7098 +3 3321 1954 4327 +3 2464 6261 1954 +3 1955 7586 4253 +3 7440 2001 3209 +3 5954 7411 6751 +3 1914 1957 2003 +3 1957 1956 2003 +3 3312 1917 7739 +3 1917 1918 5531 +3 326 325 1958 +3 1918 1959 5531 +3 1918 1960 1959 +3 1960 2006 1959 +3 1960 2292 2006 +3 2815 1961 2008 +3 5546 1962 2049 +3 1963 5984 3547 +3 1963 7048 5984 +3 3639 1964 1965 +3 1966 6632 5856 +3 1923 5890 2010 +3 5220 1926 1967 +3 1926 1968 3422 +3 1968 4503 7583 +3 1929 2372 1969 +3 1929 6064 2372 +3 7159 1970 2013 +3 6186 1974 8051 +3 1974 1971 8051 +3 1973 6756 1972 +3 1974 1931 1971 +3 984 1024 7445 +3 1931 4039 1971 +3 1931 2018 4039 +3 3342 1975 1976 +3 1931 1977 2018 +3 1977 1932 2018 +3 1979 1978 2017 +3 1979 5848 1978 +3 3798 3067 6949 +3 4087 1980 7472 +3 1980 1938 1981 +3 1982 1983 1838 +3 1984 1938 1983 +3 1984 6162 1938 +3 1945 1985 1986 +3 1985 4411 4412 +3 678 1295 679 +3 6968 5849 7784 +3 1987 5155 5186 +3 1988 6653 5163 +3 6653 5679 7349 +3 2536 5071 7830 +3 1989 1990 4855 +3 1949 6493 1990 +3 1949 1991 6493 +3 5372 1992 7318 +3 2950 1993 6908 +3 2950 6217 1993 +3 1995 2031 2029 +3 1994 5009 8054 +3 1995 7129 2031 +3 6534 2033 7341 +3 6534 1996 2033 +3 1996 1997 1998 +3 1997 7099 6960 +3 4327 1999 2036 +3 1018 1096 8017 +3 1079 6625 7148 +3 1954 6261 2000 +3 3209 2040 3211 +3 3350 3394 3396 +3 3209 2001 2040 +3 6475 2001 1912 +3 8182 2040 2001 +3 6829 865 2002 +3 6751 7370 7854 +3 6751 7411 7370 +3 8197 2003 7723 +3 2003 3313 7723 +3 2004 1424 1513 +3 7739 5531 2005 +3 1959 2006 7943 +3 3362 3408 7253 +3 6734 3407 6480 +3 449 5520 447 +3 6734 5187 3407 +3 6734 2007 6499 +3 2008 6132 2007 +3 3547 2009 7516 +3 3547 5984 2009 +3 5984 3592 2009 +3 5856 5195 6830 +3 5195 2010 2055 +3 6401 2011 7567 +3 1967 2057 2011 +3 4502 1969 5689 +3 1969 6881 5689 +3 1969 2372 6881 +3 8050 1147 7122 +3 2372 2012 6881 +3 2013 2014 2012 +3 1970 2061 2014 +3 1971 5760 2015 +3 4039 2018 2016 +3 2018 2017 2016 +3 6949 3067 7771 +3 7830 5071 2158 +3 5961 6950 7799 +3 6162 5088 2108 +3 2020 5580 2019 +3 7275 6184 2777 +3 2777 6184 2066 +3 1945 5211 2021 +3 1945 6873 5211 +3 1986 2070 6872 +3 1986 4412 2070 +3 4410 2022 6327 +3 4410 5155 2022 +3 5155 2682 2022 +3 8043 4734 5466 +3 4734 2023 5405 +3 4775 2420 2024 +3 4855 5379 6390 +3 4855 1990 5379 +3 1990 2025 5379 +3 1990 6493 2025 +3 314 315 313 +3 6493 6273 2025 +3 7079 6661 2026 +3 5942 2027 6392 +3 6908 2028 2027 +3 1993 2078 2028 +3 8021 2029 2079 +3 2031 2030 6566 +3 2031 7342 2030 +3 7342 3662 2030 +3 7341 2033 2081 +3 2033 1998 2032 +3 2034 1551 1586 +3 1998 6960 2083 +3 5958 4480 2035 +3 2036 2037 5338 +3 1999 3034 2037 +3 1999 2000 3034 +3 3169 7729 2038 +3 3211 2040 2711 +3 2040 2039 2711 +3 2040 8182 2039 +3 7854 2041 2042 +3 7854 7370 2041 +3 7723 3313 2043 +3 2045 2044 3314 +3 2045 2047 2044 +3 2047 2046 2044 +3 2047 2005 2046 +3 707 744 4882 +3 7523 2294 2085 +3 2048 3412 3363 +3 6133 2049 3456 +3 6133 2091 4336 +3 6133 3456 2091 +3 5170 5177 5466 +3 2050 6573 3510 +3 2009 3592 2051 +3 7296 2093 3640 +3 7296 5906 2093 +3 2053 2052 2094 +3 6831 2054 2052 +3 6830 2096 2054 +3 2055 3060 2096 +3 7567 2011 2056 +3 2011 2097 2056 +3 2011 2057 2097 +3 2057 4062 2097 +3 2058 3788 4062 +3 2058 5690 3788 +3 5689 5642 2059 +3 2012 2014 6005 +3 2014 2061 2101 +3 2061 2060 2101 +3 2061 2015 2060 +3 6613 2306 7501 +3 2016 7186 6612 +3 7186 2062 3706 +3 2063 7121 5694 +3 7402 7070 2107 +3 5711 5998 1125 +3 7402 3820 7070 +3 2108 5088 2064 +3 6987 2065 3384 +3 2776 2778 4137 +3 2778 6938 4137 +3 2778 5437 6938 +3 2777 2066 5559 +3 5559 2066 5568 +3 4275 2067 6184 +3 2067 2066 6184 +3 2067 6090 2066 +3 8164 6243 2068 +3 778 2069 5006 +3 6243 2109 2068 +3 6872 2070 4413 +3 2072 6839 2071 +3 2024 5207 2073 +3 5031 2115 8142 +3 5031 4078 2115 +3 6390 2695 2074 +3 6390 5379 2695 +3 2025 6273 2075 +3 6273 6870 6841 +3 6392 2076 2077 +3 6392 2027 2076 +3 2027 4110 2076 +3 2027 2028 4110 +3 2028 5832 4110 +3 2028 2078 5832 +3 2078 2079 2119 +3 6535 2080 7960 +3 2030 2121 2120 +3 2030 3662 2121 +3 2081 2125 7680 +3 2081 2032 2125 +3 1545 2082 7505 +3 2032 2083 2127 +3 2083 6084 2126 +3 6084 6337 2126 +3 2037 3035 5885 +3 2137 2711 2712 +3 3285 5045 2084 +3 2046 2085 2134 +3 2085 2294 2086 +3 7436 5611 4058 +3 2087 7584 7052 +3 5432 2088 2295 +3 3363 2135 5189 +3 2089 5363 2729 +3 2089 8193 5363 +3 782 2090 1528 +3 8193 5937 5363 +3 4336 2091 2092 +3 7882 6418 6903 +3 7882 2051 6418 +3 3640 2093 6667 +3 2094 2095 4202 +3 2052 2145 2095 +3 2054 5395 2145 +3 2054 2096 5395 +3 2096 6219 5395 +3 2056 2097 7866 +3 3788 2151 5243 +3 2098 862 975 +3 5980 5274 2099 +3 2059 5641 2151 +3 6880 8023 2100 +3 2101 2102 7069 +3 2060 2154 2102 +3 2060 5136 2154 +3 5136 2103 2154 +3 7501 2156 2103 +3 7501 2306 2156 +3 2306 3704 2156 +3 6612 3706 2305 +3 3759 2104 2157 +3 2106 2105 1581 +3 5694 7121 4042 +3 2107 2160 6526 +3 6162 1981 1938 +3 2108 5681 6256 +3 5681 6396 6256 +3 5681 2161 2205 +3 2064 5087 2163 +3 2068 2109 5802 +3 2109 4413 2110 +3 7437 6124 4414 +3 2112 2111 2167 +3 2112 2071 2111 +3 2113 2073 8126 +3 3079 899 995 +3 2073 2114 8126 +3 8142 2115 6442 +3 2115 7256 6441 +3 2074 5168 4854 +3 2695 7985 2116 +3 7985 5858 2116 +3 7985 2075 5858 +3 2075 6841 2291 +3 2076 2117 6095 +3 5832 2119 2118 +3 2119 2174 2118 +3 2119 7590 2174 +3 7590 2120 2175 +3 2120 2121 2176 +3 2121 2123 2176 +3 7680 2122 2123 +3 7680 2125 2122 +3 1438 4128 2124 +3 2125 2178 2122 +3 2125 2127 2178 +3 2127 7772 2178 +3 2127 2126 7772 +3 2126 6337 2128 +3 2129 7759 4655 +3 5885 3035 2130 +3 3252 3287 3289 +3 2084 5044 6912 +3 7782 2132 3315 +3 830 2131 900 +3 7399 2133 2132 +3 3341 2897 2133 +3 3341 2134 2897 +3 2134 2296 2897 +3 2134 2086 2296 +3 5189 3413 6336 +3 5189 2135 3413 +3 2729 5363 2136 +3 7781 2092 2186 +3 3211 2711 2137 +3 6842 2138 2139 +3 7812 2511 2140 +3 2141 2190 5112 +3 2141 6903 2190 +3 1373 1878 2142 +3 6903 3596 2190 +3 4202 2143 2192 +3 2095 2145 2144 +3 2145 5394 2144 +3 3469 2146 3434 +3 6517 2147 7853 +3 6517 7866 2147 +3 2148 5697 6237 +3 4063 2150 2149 +3 5243 4508 2150 +3 5243 2151 4508 +3 2151 5646 4508 +3 5641 2152 5646 +3 5641 2100 2152 +3 5046 5479 1141 +3 2100 2195 2152 +3 2100 8023 2195 +3 8023 2198 2195 +3 7069 2153 2198 +3 7069 2102 2153 +3 2102 2154 7169 +3 2103 2155 7439 +3 1239 7238 1279 +3 2156 7697 2155 +3 2157 3801 3760 +3 3801 6740 3760 +3 7830 2158 2063 +3 3988 4042 4041 +3 2160 2159 2204 +3 2205 2161 2162 +3 2161 2163 5392 +3 5558 2164 2208 +3 6090 5568 2066 +3 5325 2165 2211 +3 2167 8213 2166 +3 2168 2071 6839 +3 2168 8151 2071 +3 6442 2169 6888 +3 4854 2218 2170 +3 5168 2219 2218 +3 2116 6335 2219 +3 2291 7309 2171 +3 6885 2172 7309 +3 6095 2221 2172 +3 2117 2222 2221 +3 6946 5792 5958 +3 2173 2223 2222 +3 2173 2118 2223 +3 2118 2174 2224 +3 2174 2175 6503 +3 2175 2176 2226 +3 2176 2123 2177 +3 2122 2178 4525 +3 2128 5292 5855 +3 4655 6586 4332 +3 4655 7759 6586 +3 2179 6471 3173 +3 3212 6713 3366 +3 6713 2179 3366 +3 6713 6471 2179 +3 6591 2713 6712 +3 3253 3288 2180 +3 6040 5535 2181 +3 2132 2133 2182 +3 2897 2296 2183 +3 6336 3413 2234 +3 2184 2136 5773 +3 2136 2185 5773 +3 5362 2238 2185 +3 4330 2186 2187 +3 2189 2139 2188 +3 5112 7671 3551 +3 5112 2190 7671 +3 2190 3596 2191 +3 2192 2193 4204 +3 2143 5898 2193 +3 2143 2144 5898 +3 2144 2240 5898 +3 2144 5394 2240 +3 5394 6790 6250 +3 6790 2241 6250 +3 2147 2242 2194 +3 2147 2149 2242 +3 2152 2195 2250 +3 2195 2198 2196 +3 2497 2197 5219 +3 2198 2199 2196 +3 2153 4771 2199 +3 2153 7169 4771 +3 7169 3862 4771 +3 7439 2155 2253 +3 2155 4830 2253 +3 2155 7697 4830 +3 6764 4041 6999 +3 965 3441 1052 +3 100 2200 2201 +3 6407 2203 6697 +3 2994 2202 5809 +3 2204 4500 2203 +3 2205 7368 7185 +3 5505 2206 2207 +3 2162 5392 6864 +3 2208 8014 2779 +3 2779 8014 7647 +3 2211 2209 8190 +3 6008 1685 1737 +3 2211 8132 2209 +3 2211 2210 8132 +3 2165 2212 2210 +3 2165 5703 2212 +3 2215 2685 5474 +3 4386 2213 931 +3 2215 2214 2685 +3 2166 2216 6664 +3 2166 8213 2216 +3 8213 4190 4732 +3 3194 5730 5650 +3 3194 5032 5730 +3 6888 2217 7707 +3 2170 2262 4853 +3 2170 2218 2262 +3 2218 2219 2264 +3 6335 2171 2267 +3 2171 7396 2267 +3 7309 2172 2220 +3 2172 2268 2220 +3 2172 2221 2268 +3 7820 5075 5973 +3 2221 2222 7573 +3 2222 2223 7990 +3 2224 2225 7435 +3 6503 2272 2225 +3 2226 2177 2634 +3 2228 2229 2227 +3 4525 7455 2229 +3 4525 4339 7455 +3 5855 4476 6007 +3 4332 7591 2274 +3 6712 2715 2230 +3 2180 5576 7037 +3 2180 3288 5576 +3 2181 3361 3290 +3 2231 7807 5290 +3 5535 2232 3361 +3 6300 2182 2233 +3 2182 7418 2233 +3 2182 5748 7418 +3 4472 7419 2297 +3 2235 2234 4875 +3 2730 2300 5529 +3 2185 2301 5486 +3 2236 659 1025 +3 2185 2238 2301 +3 2238 2187 2237 +3 2239 7823 3457 +3 2239 2188 7823 +3 3551 2302 6201 +3 4204 2193 6478 +3 2240 2307 5409 +3 2241 2194 7413 +3 2242 2311 4364 +3 2242 6945 2311 +3 6945 2243 2311 +3 2247 2244 2312 +3 2246 875 2245 +3 2247 7646 2244 +3 5878 3856 5322 +3 6917 1900 1949 +3 7646 2248 2244 +3 7646 2250 2248 +3 6332 4399 2249 +3 2250 2196 5561 +3 2196 2251 5561 +3 4771 3862 2316 +3 3862 2252 2316 +3 3862 2253 2252 +3 2253 4830 7787 +3 6309 7502 3763 +3 2254 1124 3196 +3 6309 2255 7503 +3 6654 4040 2256 +3 6697 2203 2319 +3 2203 2257 2319 +3 4500 5914 2320 +3 5914 2258 2320 +3 5914 2259 2258 +3 2259 4142 2258 +3 2779 7647 5452 +3 5452 7647 7719 +3 7647 2322 7719 +3 5474 2685 2688 +3 2216 4732 2260 +3 4853 2329 2261 +3 4853 2262 2329 +3 2262 5654 2329 +3 2262 2264 5654 +3 2264 2263 5654 +3 2264 2265 2263 +3 478 5922 3668 +3 2265 2266 2263 +3 2267 7887 2266 +3 2220 2268 6426 +3 7990 2269 2270 +3 2271 1809 1759 +3 7990 7435 2269 +3 7435 5591 2269 +3 7435 2225 5591 +3 2225 2272 5590 +3 2272 2634 2273 +3 2274 2337 4338 +3 7591 4520 2275 +3 2276 4134 7848 +3 2277 1191 5895 +3 2230 2715 6032 +3 7037 2703 3257 +3 3290 6046 6492 +3 3290 3361 6046 +3 2279 8201 2278 +3 8201 2342 2278 +3 7539 1267 5698 +3 7539 2280 1267 +3 2280 2281 1267 +3 7284 1337 2281 +3 7284 2282 1337 +3 2282 2283 1337 +3 6324 1424 2283 +3 6324 2284 1424 +3 2284 1513 1424 +3 7537 2287 2285 +3 2287 2288 2286 +3 2288 1597 2286 +3 1739 1636 1597 +3 1739 6544 1636 +3 2289 1822 5302 +3 2289 7521 1822 +3 7401 2290 1821 +3 5268 2292 2290 +3 2075 2291 5858 +3 4058 2006 2292 +3 4058 5611 2006 +3 5611 7943 2006 +3 5611 2295 7943 +3 2293 1478 1538 +3 2295 7409 2294 +3 7578 4472 2296 +3 4472 2297 2183 +3 2297 4544 2298 +3 5529 2348 2299 +3 5529 2300 2348 +3 1713 7550 7833 +3 2300 5486 2350 +3 2301 2352 2349 +3 2301 2237 2352 +3 3457 4684 2354 +3 3457 7823 4684 +3 2302 6749 2355 +3 2303 3395 1610 +3 5617 2304 7376 +3 5403 2698 6190 +3 2306 6612 2305 +3 5409 5125 2698 +3 5409 2307 5125 +3 2307 2309 2308 +3 2309 2358 2308 +3 4364 2310 7827 +3 2311 8178 2310 +3 2312 2313 6323 +3 914 3573 6340 +3 2244 5721 2313 +3 2314 2366 2364 +3 2314 2316 2366 +3 2316 2315 2366 +3 2252 2317 2315 +3 2252 7787 2317 +3 3763 2318 6139 +3 3763 7502 2318 +3 2256 4038 3991 +3 6384 5179 4091 +3 6384 2319 5179 +3 2257 2320 6788 +3 1359 1326 1413 +3 2320 5902 6788 +3 2258 4142 2371 +3 7719 4271 2321 +3 7719 2322 4271 +3 6381 5502 2373 +3 4415 2687 6767 +3 2324 2323 2375 +3 5378 2260 2325 +3 2326 2327 5035 +3 6657 2379 2327 +3 2261 2328 6285 +3 2261 2329 2328 +3 2329 6874 2328 +3 2263 2381 7374 +3 6721 6173 6265 +3 2263 2266 2381 +3 2266 7887 2330 +3 7887 2382 2330 +3 4084 1797 1796 +3 7887 7395 2382 +3 7395 2384 2382 +3 6001 7769 393 +3 2269 5591 2385 +3 5591 7757 2385 +3 5590 2273 2331 +3 416 7460 6222 +3 2273 6690 2331 +3 2273 2333 6690 +3 2333 2332 6690 +3 2333 4963 2332 +3 4963 2388 2332 +3 4963 2334 2388 +3 2334 2389 2388 +3 7916 2335 2389 +3 4338 2337 2336 +3 2337 2275 6484 +3 3174 6264 2338 +3 2339 2716 2392 +3 3316 2278 2340 +3 2278 2341 2340 +3 276 235 892 +3 2278 2342 2341 +3 2342 2343 2341 +3 2344 2531 2343 +3 1622 5715 2345 +3 4544 6416 2346 +3 2654 6089 2347 +3 2299 2400 6758 +3 2299 2348 2400 +3 2348 2492 2400 +3 2350 2402 2492 +3 2350 2349 2402 +3 4159 5111 2351 +3 2349 2352 2353 +3 2354 5004 3458 +3 7002 5583 3554 +3 5781 7387 5583 +3 5781 2355 7387 +3 5535 6582 2232 +3 2356 5098 2404 +3 5125 2308 2357 +3 2358 7827 2408 +3 2310 7170 2359 +3 2310 8178 7170 +3 8178 2360 7170 +3 8178 6323 2360 +3 6323 2313 2361 +3 6709 7707 5033 +3 2313 5721 2362 +3 5721 2411 2362 +3 5069 2412 2411 +3 1135 6246 4968 +3 5069 7371 2412 +3 7371 2363 2412 +3 2364 2365 2363 +3 2366 2367 2365 +3 2315 6069 2367 +3 6139 2368 2369 +3 3991 6220 3992 +3 4091 2370 4092 +3 4091 5179 2370 +3 5179 2508 2370 +3 6788 5118 5344 +3 2258 2371 5902 +3 8 22 72 +3 6788 5902 5118 +3 2372 2013 2012 +3 7189 2321 2421 +3 6052 2373 2422 +3 2375 7879 2374 +3 6838 4053 7332 +3 2323 2325 7880 +3 2377 8140 2376 +3 5020 2378 3803 +3 5035 2327 2424 +3 2327 2379 6410 +3 2328 2380 5818 +3 2328 6874 2380 +3 6874 6019 2380 +3 7374 2381 6018 +3 2381 2330 4788 +3 2330 2427 4788 +3 2330 2382 2427 +3 2382 2384 2383 +3 2384 8175 7950 +3 3443 2429 4936 +3 3443 5714 2429 +3 5714 2431 2429 +3 5714 2385 2431 +3 2332 2386 2435 +3 2332 2388 2386 +3 2388 2387 2386 +3 2388 2389 2387 +3 2389 7665 2387 +3 6791 2391 2390 +3 2336 2438 2391 +3 2392 2717 6289 +3 3256 3293 5798 +3 3256 3291 3293 +3 7024 2442 6771 +3 6045 2393 2442 +3 6045 6995 2393 +3 2395 2394 5738 +3 2395 2340 2394 +3 2340 2443 2394 +3 2341 2396 2443 +3 2341 2343 2396 +3 2343 2531 5121 +3 2397 2346 6158 +3 6758 2400 2398 +3 2400 2399 2398 +3 2402 2353 2401 +3 3458 5004 8083 +3 3554 2403 5620 +3 3554 5583 2403 +3 6498 8162 3643 +3 4206 2404 3474 +3 2405 5126 2454 +3 5126 7507 2454 +3 2357 8063 7507 +3 2357 2406 8063 +3 2408 2457 4085 +3 634 2407 666 +3 2408 2359 2457 +3 2359 7170 5370 +3 2360 2409 2410 +3 2360 2361 2409 +3 2361 2460 2409 +3 2361 2362 2460 +3 2362 6907 2460 +3 2362 2411 6907 +3 2411 2412 2413 +3 2412 2363 6799 +3 2363 2462 6799 +3 2363 2365 2462 +3 2365 2414 2462 +3 2367 6069 2415 +3 2369 3808 2416 +3 3992 2417 2418 +3 3992 6220 2417 +3 2370 2508 2509 +3 5344 5118 2465 +3 5118 4144 2465 +3 7189 2421 2419 +3 2024 2420 5207 +3 2419 2421 2466 +3 7329 2468 7492 +3 2422 7420 8055 +3 2374 2423 4646 +3 2376 5036 3128 +3 7599 5427 5037 +3 2424 4904 5427 +3 5903 2425 5946 +3 2380 8061 2473 +3 6019 2475 8061 +3 6018 4788 2426 +3 2427 2476 4787 +3 2427 2383 2476 +3 2383 5198 2476 +3 7950 2479 5198 +3 4936 2429 2428 +3 2429 2480 2428 +3 2431 2430 2480 +3 4847 1565 1564 +3 2431 7112 2430 +3 7600 2432 5628 +3 7112 2433 4335 +3 2433 7915 2434 +3 2435 2436 2484 +3 2386 6334 2436 +3 2390 2391 5251 +3 2437 5698 7553 +3 2391 6456 5251 +3 2391 2438 6456 +3 1349 2439 7873 +3 6289 5811 2440 +3 6771 2442 2441 +3 2442 6781 2441 +3 2443 5840 6754 +3 5205 5244 6588 +3 6090 4273 5568 +3 7639 2445 2444 +3 2398 2491 2445 +3 5620 2446 2494 +3 2403 2447 2446 +3 2403 3600 2447 +3 7676 5955 2448 +3 3643 4209 2449 +3 3643 8162 4209 +3 4207 2450 2451 +3 3474 2452 2450 +3 8107 2499 2452 +3 8107 2453 2499 +3 2453 2454 2498 +3 2454 7506 2498 +3 8063 4085 2455 +3 4085 2456 2455 +3 2457 2458 2456 +3 5370 2502 2458 +3 2410 2459 2502 +3 2409 2503 2459 +3 2409 2460 2503 +3 2460 6304 2503 +3 6799 2462 2461 +3 2462 5334 2461 +3 2416 3808 7685 +3 3358 4547 3402 +3 4547 2507 3402 +3 1888 1938 1980 +3 4547 2509 2507 +3 5314 5053 2510 +3 6963 2463 2464 +3 5314 2465 5053 +3 2465 4146 5053 +3 2467 2466 2512 +3 6247 2421 2321 +3 7492 2514 7870 +3 7492 2468 2514 +3 2468 8055 2469 +3 4417 2691 2470 +3 7846 2423 7879 +3 7846 4731 2423 +3 3128 5036 2471 +3 5282 5817 2472 +3 5817 2519 2472 +3 5817 2473 2519 +3 2473 2521 2519 +3 60 7192 527 +3 8061 2475 2474 +3 2475 2522 2474 +3 2475 2426 2522 +3 4787 2476 2524 +3 5198 2479 2477 +3 2479 2428 2478 +3 2428 2480 2525 +3 2480 2483 2525 +3 2481 899 3079 +3 2430 2482 2483 +3 2430 4335 2482 +3 2434 2484 6871 +3 2485 7131 4340 +3 5251 6456 2486 +3 7524 6687 3176 +3 3215 8129 2338 +3 2440 5811 2528 +3 5271 6688 3260 +3 2487 2529 6716 +3 2487 2441 2529 +3 3317 5841 5985 +3 5841 6754 2488 +3 5840 7033 2530 +3 7380 6266 2489 +3 6588 5244 2490 +3 2444 8216 7134 +3 2444 2445 8216 +3 2445 2491 6641 +3 2491 6628 6641 +3 5160 6851 5270 +3 5160 2399 6851 +3 2399 2492 6851 +3 5160 5270 2493 +3 2494 7837 5447 +3 2450 5085 2495 +3 2450 2452 5085 +3 5104 2496 1669 +3 2452 2542 5085 +3 2452 2499 2542 +3 2499 2544 2542 +3 2497 6205 2197 +3 2499 2498 2544 +3 2498 7506 2500 +3 2456 2545 7036 +3 2458 2501 2545 +3 2502 6637 2501 +3 2459 2503 8068 +3 2503 6304 2504 +3 6862 7898 5783 +3 7898 2461 6204 +3 5334 6321 2505 +3 3766 2506 2549 +3 3766 7685 2506 +3 3402 2507 2552 +3 2507 2554 2552 +3 5314 2509 2508 +3 2510 2507 2509 +3 2510 2554 2507 +3 2467 2512 2783 +3 2783 2512 2555 +3 2512 4268 2555 +3 2140 2511 930 +3 2512 3604 4268 +3 6074 2557 7312 +3 7329 4270 2513 +3 7329 7492 4270 +3 2514 2469 4418 +3 2470 2691 2515 +3 6540 6235 2516 +3 7065 5976 6800 +3 5976 2517 6800 +3 5039 7467 2518 +3 2472 5799 5989 +3 2519 6312 5799 +3 5053 4146 4147 +3 2521 2474 2520 +3 2474 2563 2520 +3 686 7545 767 +3 2522 2564 2563 +3 2522 7353 2564 +3 7353 2524 4728 +3 2523 5480 504 +3 2524 3576 6330 +3 2477 2566 6062 +3 2478 2567 2566 +3 2478 2525 2567 +3 2525 2483 5867 +3 2483 2526 5867 +3 3899 6871 5158 +3 6871 4735 5158 +3 5222 6703 4468 +3 7131 2527 7842 +3 3356 6104 5430 +3 3356 2528 6104 +3 3260 6971 2569 +3 2529 7811 6776 +3 5985 2488 2572 +3 2488 2530 5433 +3 2397 2531 7658 +3 2489 5839 5121 +3 2489 2761 5839 +3 2761 2532 7033 +3 2533 2490 5171 +3 1647 1602 2534 +3 2536 2535 5071 +3 6641 2537 8155 +3 1430 7122 3721 +3 6641 6628 2537 +3 6628 2493 3217 +3 3460 4793 2538 +3 5447 2539 2540 +3 7837 2577 2539 +3 7837 6683 2577 +3 5923 4208 2578 +3 4234 2495 7565 +3 2542 2541 2582 +3 2544 2500 2543 +3 6569 7756 409 +3 2500 5648 2543 +3 447 5520 5616 +3 2500 5880 5648 +3 5880 7043 5648 +3 5880 7101 7043 +3 7101 2585 7043 +3 7101 7036 2585 +3 7036 2586 2585 +3 7036 2545 2586 +3 2545 2588 2586 +3 2501 7404 2588 +3 2501 6637 7404 +3 8068 2546 6527 +3 2504 2591 2546 +3 2504 2547 2591 +3 2547 3200 2591 +3 5921 1503 3193 +3 6204 5335 2548 +3 5335 3701 2548 +3 2549 3810 3769 +3 267 5218 296 +3 2550 7965 2594 +3 5882 2551 6843 +3 2552 2553 2551 +3 2554 2597 2553 +3 2554 5054 2597 +3 5054 2598 2597 +3 5054 4147 2598 +3 7105 4524 646 +3 2783 2555 2599 +3 2555 7640 2556 +3 2557 2601 7557 +3 2557 6196 2601 +3 6196 4421 2601 +3 6196 4418 4421 +3 5551 958 5786 +3 5115 2696 2558 +3 2516 2559 2696 +3 2560 2518 7559 +3 5989 2561 2562 +3 5799 6312 2604 +3 2520 5846 7173 +3 2520 2563 5846 +3 2564 4727 5845 +3 6330 2606 2565 +3 6062 2566 5514 +3 2567 5867 2609 +3 2568 7153 5327 +3 4468 4466 6460 +3 5487 5242 4342 +3 2345 5715 1757 +3 2569 6970 4157 +3 6776 4535 2570 +3 4234 7565 2580 +3 6776 7811 4535 +3 8181 2617 2571 +3 6297 6316 2617 +3 6297 2572 6316 +3 2572 5433 6315 +3 5433 3517 6315 +3 1142 2573 5756 +3 4773 6031 5024 +3 2532 4585 7227 +3 2575 7209 2574 +3 7209 6025 2574 +3 2537 3461 2576 +3 2539 2577 5631 +3 2579 2578 6892 +3 2580 2623 5629 +3 2582 7876 2581 +3 2541 2543 2583 +3 2543 2584 2583 +3 2543 5648 2584 +3 7043 2585 7478 +3 2585 2586 2587 +3 2586 2588 2627 +3 6527 2589 5349 +3 6527 2546 2589 +3 2546 2591 2590 +3 2591 6175 2590 +3 2548 3699 2592 +3 3769 3810 2593 +3 2595 2594 4035 +3 4097 6843 2596 +3 2551 2553 2636 +3 700 4291 699 +3 2553 2597 2635 +3 2597 2598 2637 +3 2599 2556 8020 +3 7557 2601 2600 +3 2601 2722 2600 +3 2601 4421 2722 +3 2558 2697 3506 +3 2558 2696 2697 +3 5457 5340 6436 +3 5876 2643 2602 +3 4849 2603 7551 +3 4849 2562 2603 +3 2562 8105 2603 +3 2561 2604 8104 +3 2604 6780 8104 +3 5846 2646 4334 +3 4727 2565 2605 +3 2565 2648 2605 +3 2565 2606 2648 +3 5514 2607 5429 +3 5506 2609 2650 +3 2609 2608 2650 +3 2609 8073 2608 +3 5327 7347 7426 +3 7153 2612 2610 +3 2612 2611 2610 +3 2612 6460 2611 +3 5242 3039 2613 +3 2614 5789 2708 +3 4157 6970 2615 +3 2570 2656 5834 +3 2570 4535 2656 +3 2616 7675 6525 +3 2571 2617 2658 +3 6316 5250 5744 +3 6315 3517 5249 +3 3368 7750 2618 +3 4923 2574 2619 +3 2574 2620 2619 +3 2574 6025 2620 +3 2576 3461 2662 +3 4221 3507 2664 +3 3555 3548 3557 +3 2621 3602 3548 +3 5629 2622 5673 +3 2623 2667 2622 +3 2623 2914 2667 +3 2914 2668 2667 +3 2914 2581 2668 +3 2551 2636 3119 +3 2606 5514 5429 +3 2583 2625 6464 +3 2584 2624 2625 +3 2584 2626 2624 +3 2626 2669 2624 +3 2626 7478 2669 +3 2587 2627 7163 +3 5827 5349 7335 +3 2589 2590 2672 +3 2590 2628 2672 +3 6175 2675 2628 +3 6175 4125 2675 +3 2592 2629 2676 +3 2592 3699 2629 +3 2630 4582 8157 +3 2630 2593 4582 +3 3994 4034 2631 +3 3994 4035 4034 +3 4098 5567 2632 +3 4098 2596 5567 +3 2596 2633 5567 +3 2636 7808 7359 +3 2634 2333 2273 +3 2636 2635 7808 +3 2635 2637 4149 +3 2639 7832 2638 +3 2641 2679 2640 +3 2343 5121 2396 +3 2641 2600 2679 +3 2600 2680 2679 +3 3996 5231 2692 +3 6436 5340 2642 +3 2643 8177 8077 +3 2603 8105 2699 +3 8104 7980 2644 +3 6780 4334 2645 +3 4334 2646 6054 +3 4790 2605 2647 +3 2605 2648 5911 +3 2607 2649 7747 +3 2607 2650 2649 +3 8071 4744 1550 +3 2650 7292 2649 +3 2610 6832 7346 +3 4343 2651 2707 +3 3672 5151 2651 +3 2653 2652 7476 +3 3364 6089 2654 +3 4156 2724 3262 +3 2460 6907 6304 +3 4156 2615 2724 +3 2655 6542 3654 +3 5834 2656 5820 +3 2474 2522 2563 +3 6914 2657 6894 +3 2658 3802 2657 +3 2658 5744 3802 +3 5250 2659 7597 +3 2532 7227 7383 +3 2199 2314 2251 +3 7227 3517 7383 +3 6934 2660 5249 +3 3367 2618 2661 +3 1759 1843 6388 +3 8109 2619 7081 +3 2619 7226 7081 +3 2740 2662 2663 +3 2664 7237 3462 +3 2665 4160 194 +3 3557 2744 3558 +3 3548 3602 2666 +3 5673 2622 7884 +3 2622 2748 7884 +3 2622 2667 2748 +3 2667 2749 2748 +3 2667 2668 2749 +3 2668 2750 2749 +3 7835 4747 1250 +3 2668 6398 2750 +3 6398 2753 2750 +3 2624 6928 2755 +3 2624 2669 6928 +3 2669 7164 7803 +3 7163 2670 2671 +3 5584 2672 6223 +3 2672 2674 6223 +3 2628 2673 2674 +3 2628 2675 2673 +3 2675 2676 6331 +3 2676 3696 6331 +3 745 2677 822 +3 2631 4033 3995 +3 2678 7358 963 +3 2631 4034 4033 +3 2640 2679 2789 +3 2679 2680 2681 +3 2684 2022 2682 +3 2684 2683 2022 +3 5665 5299 1872 +3 4643 6380 2214 +3 6380 2686 2685 +3 2686 2688 2685 +3 5236 2687 2688 +3 5236 2689 2687 +3 2689 5749 2687 +3 2690 7718 5749 +3 4647 5366 2691 +3 5366 2515 2691 +3 5366 4648 2515 +3 4648 5413 2515 +3 4648 5232 5413 +3 2693 4649 2692 +3 4649 2794 2692 +3 5940 5826 8088 +3 5940 2694 5826 +3 2074 2695 5168 +3 7788 1159 7055 +3 4729 2697 2696 +3 6765 2694 2697 +3 4726 6427 2796 +3 5570 2798 6160 +3 6190 2698 2405 +3 7045 2699 6115 +3 2644 7980 2700 +3 6470 609 2701 +3 2645 5556 2702 +3 6054 3953 5556 +3 7495 2647 3952 +3 5911 5417 6599 +3 3257 2703 3291 +3 2704 7265 5417 +3 1202 3447 1203 +3 2704 7747 7265 +3 7425 7346 2705 +3 7346 5801 2705 +3 2707 2706 4346 +3 2651 5151 3041 +3 2708 3178 2614 +3 2708 2709 3178 +3 2709 3179 3178 +3 2710 2804 3218 +3 3251 2712 2711 +3 3254 6590 2712 +3 2714 3255 2713 +3 3255 2715 2713 +3 3231 7330 6617 +3 5273 1429 3535 +3 3255 8037 2715 +3 8037 6032 2715 +3 3258 2716 6032 +3 3259 2717 2716 +3 4663 2718 2528 +3 1185 863 2719 +3 2718 7858 6104 +3 6890 2720 2652 +3 2721 7748 3284 +3 5245 2804 7476 +3 2600 2722 2680 +3 3262 4192 2723 +3 3262 2724 4192 +3 6542 3318 2725 +3 2657 5330 2726 +3 3802 7597 2727 +3 422 486 6495 +3 2659 3334 2728 +3 3369 2809 5547 +3 3369 2661 2809 +3 2729 3411 3410 +3 2729 2184 3411 +3 2184 6353 3411 +3 2184 2730 6353 +3 2730 5529 2731 +3 5755 2732 2733 +3 2299 3414 6354 +3 2299 6758 3414 +3 6033 1184 8003 +3 6758 5440 3414 +3 2444 7519 2734 +3 2575 2735 7133 +3 8109 2738 5147 +3 1483 3497 2736 +3 2737 2810 3415 +3 2738 7971 2737 +3 7081 2739 7971 +3 7081 7226 2739 +3 2741 2620 2740 +3 2741 2663 6604 +3 2482 2568 2526 +3 3558 2744 2742 +3 2744 2743 2742 +3 2744 2666 2743 +3 2746 2745 3647 +3 2746 6365 2745 +3 7884 2748 2747 +3 2748 7538 2747 +3 2748 2749 7538 +3 2749 2750 2751 +3 2750 2753 2752 +3 4342 3672 4343 +3 2753 2754 2752 +3 4359 2816 2754 +3 4359 2755 2816 +3 6928 2818 7095 +3 5373 7318 6870 +3 6508 2822 2756 +3 2673 5518 2757 +3 3995 4033 6738 +3 6646 2827 6833 +3 6093 5969 2827 +3 6093 2758 5969 +3 2701 1440 7377 +3 2701 5717 1440 +3 740 775 2759 +3 775 2760 2759 +3 2761 3365 2532 +3 775 7029 2760 +3 7029 849 3145 +3 849 1442 3145 +3 849 879 1442 +3 879 2762 1442 +3 878 1443 2762 +3 878 2763 1443 +3 2763 2765 2764 +3 2765 1445 2764 +3 2765 6230 1445 +3 6230 2766 2767 +3 7063 2768 1446 +3 2769 7474 618 +3 6977 2770 1449 +3 2770 7051 1448 +3 7051 1451 1448 +3 7051 6752 1451 +3 6752 2771 7690 +3 4526 2772 6773 +3 2106 2773 2772 +3 1581 1580 2773 +3 6557 5926 2774 +3 5926 6620 1708 +3 6357 6447 1799 +3 6447 2775 1799 +3 2772 2773 5034 +3 7275 2776 7687 +3 7275 2777 2776 +3 2777 5559 2778 +3 5559 5437 2778 +3 2208 2829 6322 +3 2208 2779 2829 +3 2779 6114 2829 +3 2779 5452 6114 +3 5452 2831 6114 +3 3879 7189 2780 +3 2419 2834 2781 +3 2419 2467 2834 +3 7905 5178 6386 +3 2467 2782 2834 +3 2467 2783 2782 +3 2783 2835 2782 +3 1540 6174 2784 +3 2783 2599 2835 +3 2599 8020 2837 +3 8020 2785 2837 +3 2639 2838 2785 +3 2639 6701 2838 +3 6701 7635 6901 +3 7635 6986 6901 +3 6701 2786 7635 +3 7557 2641 7864 +3 2641 6846 7864 +3 2640 2787 6846 +3 6563 1354 2788 +3 5883 7531 2787 +3 5883 2789 2790 +3 3975 5194 721 +3 2789 2681 2791 +3 302 556 2792 +3 2794 2793 2841 +3 6726 1505 5870 +3 2795 2796 7859 +3 2796 8165 7859 +3 5042 2797 8166 +3 6160 2798 2844 +3 3820 6256 6396 +3 6115 2847 4617 +3 6786 2849 2847 +3 6786 2700 2849 +3 5417 7265 2799 +3 7966 2800 2856 +3 2800 6293 2856 +3 7291 8018 2801 +3 8018 2858 2801 +3 8018 2705 2858 +3 2705 2802 2858 +3 5801 4461 2802 +3 3218 2803 2861 +3 3218 2804 2803 +3 2804 5245 2805 +3 2723 2864 3264 +3 3204 1632 5223 +3 2723 4192 2864 +3 2807 2806 5131 +3 4193 2725 6930 +3 2725 3318 4859 +3 6893 2726 2808 +3 2726 5586 2808 +3 5547 3417 6797 +3 5547 2809 3417 +3 2810 2811 3416 +3 2737 2869 2811 +3 2737 7971 2869 +3 6779 3463 2925 +3 2812 2872 6369 +3 2812 2742 2872 +3 2813 8039 2874 +3 2747 5384 5439 +3 7538 2751 2814 +3 2751 2877 2814 +3 2751 2752 2877 +3 7525 7044 2815 +3 2752 2878 2877 +3 2816 2879 7695 +3 2816 7095 2879 +3 1228 6212 6574 +3 7095 2817 2879 +3 7095 2818 2817 +3 2818 2819 2817 +3 7802 2880 2819 +3 2756 2883 2882 +3 2820 8017 1094 +3 2822 2885 2883 +3 2822 2821 2885 +3 2700 2823 2849 +3 5518 4460 4006 +3 5518 2824 4460 +3 2826 2825 3770 +3 2826 6131 2825 +3 3998 6738 4032 +3 6833 2827 6202 +3 6705 4153 5661 +3 7418 2298 7658 +3 6705 4152 4153 +3 6322 4139 2828 +3 6322 2829 4139 +3 2829 6068 4139 +3 6114 2831 2830 +3 2831 4140 2830 +3 2831 2780 4140 +3 2780 2832 4140 +3 2780 2781 2832 +3 2781 2834 4143 +3 2834 2833 4143 +3 2782 4145 2833 +3 2782 2835 4145 +3 2837 2836 7692 +3 2838 4148 5618 +3 6901 4150 4148 +3 6901 6986 4150 +3 2839 2892 2890 +3 2839 2790 2892 +3 2790 2791 6998 +3 2840 3819 4422 +3 2840 2841 3819 +3 2841 4653 3819 +3 8166 5078 2842 +3 745 822 821 +3 2845 2900 2843 +3 2845 2844 2900 +3 2844 4617 2846 +3 4617 2902 2846 +3 4617 2847 2902 +3 2847 2849 2848 +3 2849 2850 2848 +3 2823 5977 2850 +3 6710 2852 2851 +3 2852 7572 2851 +3 2854 2853 7572 +3 2854 6600 2853 +3 5418 2799 2904 +3 2799 2906 2904 +3 7577 2856 5637 +3 2856 2855 5637 +3 6293 2801 2857 +3 2801 2858 2909 +3 2858 2802 2910 +3 2802 2859 2910 +3 6137 2912 6828 +3 6731 2860 3043 +3 7966 2856 7577 +3 2861 2862 5935 +3 2803 3265 2862 +3 3264 3294 2863 +3 3264 2864 3294 +3 6930 4859 2865 +3 2808 2866 2919 +3 2808 5586 2866 +3 5586 2921 2866 +3 6797 3417 2867 +3 3416 2923 2868 +3 3416 2811 2923 +3 611 5979 6662 +3 2811 2869 6267 +3 2869 2924 6267 +3 2869 2926 2924 +3 2870 5987 2929 +3 6369 2872 5404 +3 2872 2871 3607 +3 3648 4212 7463 +3 4211 4539 2873 +3 4211 2874 4539 +3 5384 2875 6394 +3 2814 2877 2876 +3 2877 5352 2876 +3 2878 2934 5352 +3 2878 7695 2934 +3 7695 7272 2934 +3 7695 2879 7272 +3 2819 2880 2939 +3 2880 3737 2881 +3 1774 3310 7334 +3 3737 2882 5269 +3 2882 2883 2940 +3 2883 2884 2940 +3 2885 2943 2884 +3 2885 7843 2943 +3 7563 5803 5659 +3 7563 4032 5803 +3 6202 6869 2886 +3 5669 2948 5680 +3 5427 4904 2887 +3 5661 2888 2948 +3 5661 4153 2888 +3 7184 2951 2949 +3 7184 6837 2951 +3 2839 2890 2889 +3 2890 5950 4265 +3 2890 2892 2891 +3 2892 6998 2953 +3 4422 3819 4437 +3 4652 6504 2893 +3 6504 2955 2893 +3 4724 2894 5708 +3 1542 1576 2895 +3 2842 2896 2958 +3 2133 2897 5748 +3 5078 7177 2896 +3 5078 2898 7177 +3 2843 2899 2959 +3 2843 2900 2899 +3 2900 6992 2899 +3 2900 2846 6992 +3 2902 2848 2901 +3 6629 2293 1557 +3 2850 5977 7582 +3 2084 6912 6039 +3 5977 2851 2962 +3 2851 2964 2962 +3 2853 6002 2903 +3 7090 2904 2967 +3 2904 7875 2967 +3 2906 5637 2905 +3 6260 1107 6826 +3 2855 2907 2908 +3 2855 2857 2907 +3 1975 7776 6294 +3 2857 2970 2907 +3 2857 2909 2970 +3 2910 4457 7720 +3 6828 2912 2911 +3 2912 7850 2911 +3 2912 3043 7850 +3 7264 2913 7851 +3 7565 6948 2914 +3 7264 2915 2913 +3 2915 2916 2917 +3 2862 3265 3232 +3 2863 3294 3296 +3 3295 6059 2978 +3 2919 2920 2918 +3 2866 2979 2920 +3 2866 2921 2979 +3 2921 7939 2922 +3 7939 3338 2922 +3 2923 2982 6506 +3 6267 2984 2982 +3 6267 2924 2984 +3 2924 2927 2984 +3 2928 2925 8042 +3 2926 2739 2925 +3 2928 3467 2927 +3 2929 3503 3465 +3 5098 2405 2453 +3 2930 5589 2987 +3 2930 5404 5589 +3 2873 2990 2931 +3 4539 5401 2990 +3 5129 6394 2932 +3 2876 7794 7407 +3 2934 7246 2933 +3 7272 2935 7246 +3 8052 6919 2935 +3 3546 1874 2936 +3 2938 2937 6919 +3 2939 2881 7111 +3 2940 2942 6732 +3 2884 2941 2942 +3 2884 2943 2941 +3 2943 6098 6073 +3 6098 2944 6073 +3 6098 7136 2944 +3 3772 7146 2945 +3 5659 7231 2946 +3 4102 2947 6978 +3 4102 2886 2947 +3 1685 1738 1737 +3 2886 4105 2947 +3 2886 6869 4105 +3 5680 2948 3004 +3 942 1038 1036 +3 2949 4164 7738 +3 1903 6217 2950 +3 2949 4171 4165 +3 2951 5533 4171 +3 4171 5533 2952 +3 2891 4423 7625 +3 2891 2953 4423 +3 7628 4437 2954 +3 8066 2893 6489 +3 2893 4721 6489 +3 2893 2955 4721 +3 4722 3230 2956 +3 2958 2957 3007 +3 2896 7177 5924 +3 2959 8027 4843 +3 6992 2960 7688 +3 2901 5200 5524 +3 2901 7293 5200 +3 1567 2961 1689 +3 7582 2962 3010 +3 2963 1784 1783 +3 2962 2964 2965 +3 2903 6002 2966 +3 6002 2967 3012 +3 2905 5745 2968 +3 2905 2908 5745 +3 2908 2969 5745 +3 2907 5470 2969 +3 2907 2970 5470 +3 2970 7720 5670 +3 4347 5917 6272 +3 843 2971 920 +3 2911 3044 5917 +3 2911 7850 3044 +3 6211 3220 3090 +3 2973 2972 3221 +3 2975 2974 6251 +3 2975 3296 2974 +3 2977 2978 2976 +3 2978 3485 2976 +3 6921 3329 3320 +3 2920 2979 3331 +3 2979 2922 2980 +3 7866 2149 2147 +3 2922 3338 6848 +3 2181 5535 3361 +3 3372 6810 2981 +3 6506 2982 3433 +3 2116 5858 6335 +3 6357 2983 6447 +3 2982 2984 2985 +3 2984 2927 6310 +3 2927 6376 6310 +3 2986 1223 6431 +3 2927 3467 6376 +3 1885 1836 1937 +3 3465 3477 3466 +3 2987 3564 3563 +3 2989 4214 3659 +3 2989 2988 4214 +3 2990 5113 3164 +3 5401 2991 5113 +3 2932 6717 2991 +3 2932 3537 6717 +3 7147 4398 5696 +3 2992 8222 31 +3 3537 2993 6717 +3 2994 3385 3383 +3 7794 2933 3663 +3 2933 2995 3663 +3 2933 7246 2995 +3 2935 3665 2996 +3 2937 3667 2997 +3 6732 2942 3670 +3 2941 2998 7225 +3 3775 2945 2999 +3 2137 2712 3213 +3 2946 7231 7102 +3 6978 3002 3000 +3 2947 3001 3002 +3 918 1015 1012 +3 4104 4108 3003 +3 4104 3004 4108 +3 3004 4154 4108 +3 3004 8154 4154 +3 2952 3893 4172 +3 5949 5499 5986 +3 7625 4423 4293 +3 3006 2954 3005 +3 6490 4296 4657 +3 2956 5048 5051 +3 3007 5393 5049 +3 5524 4304 3008 +3 7902 3382 3009 +3 7054 3010 4305 +3 3010 2965 4306 +3 2966 3012 3011 +3 3012 5434 3011 +3 8187 2968 4982 +3 2968 3013 4982 +3 2968 5745 3013 +3 2969 7869 4309 +3 5917 3044 7891 +3 3051 4469 3014 +3 4469 603 3014 +3 3053 7821 3015 +3 7821 3016 3015 +3 6988 1295 3016 +3 3017 3058 718 +3 4640 1894 3018 +3 3058 5761 718 +3 3058 3019 5761 +3 3019 831 5761 +3 3019 7199 831 +3 7199 832 831 +3 7198 2131 832 +3 7198 3059 2131 +3 3059 3020 2131 +3 3059 6861 3020 +3 1416 6100 4498 +3 6915 5358 3021 +3 7405 3062 5662 +3 3062 3022 3023 +3 3022 3024 1210 +3 3025 5376 1263 +3 5376 3026 1330 +3 3064 6225 6338 +3 3066 1500 3027 +3 3222 3092 3028 +3 3066 7918 1500 +3 6355 1627 5929 +3 3068 1558 3029 +3 7409 2086 2294 +3 3068 3030 1558 +3 3030 1595 1558 +3 3030 3031 1595 +3 3031 3032 1595 +3 3070 1731 3032 +3 6244 3033 1767 +3 7040 8101 8188 +3 7983 2463 6107 +3 3072 2000 6261 +3 6650 3075 3034 +3 3075 3035 3034 +3 3036 3401 7758 +3 3037 3080 2486 +3 3080 2527 2486 +3 7940 1061 3038 +3 1629 1728 1729 +3 3040 3039 2527 +3 3081 2613 3039 +3 3081 5952 2613 +3 7637 2860 3041 +3 7822 3042 3043 +3 3045 7891 3044 +3 7427 7049 3046 +3 7049 4537 3046 +3 7400 3047 5899 +3 3085 436 435 +3 3085 6556 436 +3 6556 5224 436 +3 6645 988 4645 +3 6556 3048 5224 +3 3048 379 5224 +3 3048 5337 379 +3 5753 3049 6597 +3 3089 537 3049 +3 3089 6516 537 +3 6516 3050 537 +3 7838 3052 3051 +3 3052 4469 3051 +3 7766 3055 3053 +3 5438 3054 1247 +3 3055 7674 7821 +3 2095 2144 2143 +3 3150 3017 6988 +3 3247 1683 3056 +3 3150 3057 3017 +3 3057 5308 3058 +3 2939 7111 2937 +3 5308 3019 3058 +3 5308 7894 3019 +3 3147 7066 3059 +3 6449 4401 5082 +3 7066 6609 6861 +3 3060 2056 6517 +3 6609 3061 6915 +3 3061 7406 5358 +3 5693 3022 3062 +3 3143 3024 3022 +3 3143 3063 3024 +3 3063 3140 3025 +3 3141 3026 5376 +3 3141 3065 3026 +3 3065 3139 3064 +3 3139 6226 3064 +3 3139 5970 6226 +3 5970 3066 6226 +3 3138 7918 3066 +3 3138 3137 7918 +3 3067 3799 7771 +3 3137 3068 7918 +3 3137 3069 3068 +3 3069 8047 3030 +3 8047 5569 3031 +3 5569 3070 3031 +3 6676 6244 3070 +3 6840 7041 3033 +3 5463 6878 7040 +3 5463 3071 6878 +3 3071 7983 6878 +3 3133 3072 5509 +3 3133 3073 3072 +3 7134 8216 7209 +3 3073 8091 6650 +3 5613 3074 3075 +3 3076 3036 3074 +3 3076 3127 3036 +3 3799 2104 3759 +3 3077 3683 7514 +3 3123 5140 3078 +3 5140 6474 3078 +3 5140 7954 6474 +3 7954 8149 3037 +3 4538 3079 5543 +3 8149 7733 3080 +3 3118 5952 3081 +3 3115 3082 7822 +3 3084 3083 3042 +3 7878 3045 3083 +3 7878 3112 3045 +3 3110 5705 3047 +3 5705 5549 3047 +3 7623 3085 5549 +3 8085 6556 3085 +3 6656 3086 3048 +3 6053 3419 5337 +3 6053 3087 3419 +3 3087 3088 5753 +3 3088 3106 3089 +3 3106 6516 3089 +3 3106 7356 6516 +3 3028 3182 3090 +3 3092 7949 3977 +3 3092 3091 7949 +3 3091 3096 3093 +3 3096 3111 3093 +3 3094 4122 1245 +3 3096 3095 3111 +3 3095 3097 3098 +3 5582 4196 3108 +3 4196 7622 3108 +3 220 7856 7622 +3 220 7944 7856 +3 8034 3101 3099 +3 3101 3100 3099 +3 3101 6576 3100 +3 6576 6176 3100 +3 6576 3102 6176 +3 3102 3103 6176 +3 3104 3105 3103 +3 7356 3106 3105 +3 3106 3103 3105 +3 3106 3088 3103 +3 3087 3100 6176 +3 3086 3107 3099 +3 6656 8085 7856 +3 8085 7622 7856 +3 5705 6179 3108 +3 3110 3098 6179 +3 5356 3453 3109 +3 3110 7598 3098 +3 7598 3111 3098 +3 7705 3112 3093 +3 3084 3082 3182 +3 3082 3115 3113 +3 3115 3114 3113 +3 3115 7638 3114 +3 7638 3180 3114 +3 3116 3118 7089 +3 3118 3117 7089 +3 3118 6091 3117 +3 6843 2551 3119 +3 6091 3177 3117 +3 3120 6727 710 +3 6091 7733 3177 +3 5694 4042 3988 +3 5695 714 3121 +3 3123 4778 3122 +3 3124 5888 1385 +3 8191 1116 3125 +3 5750 3126 3175 +3 3127 3131 6181 +3 3129 2376 3128 +3 3076 3130 3131 +3 3076 5613 3130 +3 3073 3172 3132 +3 3073 3133 3172 +3 3133 7096 3172 +3 3133 5127 7096 +3 5127 3134 7096 +3 2076 4110 2117 +3 1092 7218 5759 +3 3071 6924 3134 +3 1462 4498 3135 +3 5463 7041 3136 +3 6840 3168 6413 +3 6840 6676 3168 +3 3069 7899 7699 +3 3069 3137 7899 +3 3138 8168 7018 +3 542 4024 58 +3 5970 3139 6798 +3 3139 7527 6798 +3 3141 8036 7526 +3 3141 3140 8036 +3 3063 3142 7924 +3 3143 3161 3142 +3 3143 5693 3161 +3 161 3144 5595 +3 5693 6980 3161 +3 6099 7406 3913 +3 7406 3061 5842 +3 7029 3145 2760 +3 6223 2674 2821 +3 3061 3146 5842 +3 7066 3147 5208 +3 7954 5140 3148 +3 5308 3057 3158 +3 3057 3150 3149 +3 3150 3156 3149 +3 3614 317 362 +3 3150 7674 3156 +3 3055 6428 3151 +3 7766 3052 6429 +3 3052 4898 6429 +3 3052 7838 4898 +3 626 4899 3152 +3 3153 7034 6428 +3 7034 3151 6428 +3 7034 3154 3151 +3 3154 3156 3151 +3 3186 3155 3153 +3 4696 3149 3156 +3 4696 3157 3149 +3 3157 3158 3149 +3 902 5309 3158 +3 8005 5956 5208 +3 5956 3160 3159 +3 585 257 289 +3 3160 3146 3159 +3 2254 3913 5842 +3 3162 6845 3161 +3 6845 3142 3161 +3 5704 3163 7526 +3 2931 2990 3164 +3 3163 3165 7527 +3 3165 6798 7527 +3 1679 3166 7018 +3 1680 7699 7899 +3 6923 3167 7699 +3 1768 5369 3167 +3 1855 6413 3168 +3 7999 1955 3136 +3 1955 5563 6924 +3 5563 3134 6924 +3 3169 7096 3134 +3 3171 4645 3170 +3 2038 3366 3172 +3 2179 7290 3132 +3 2179 3173 7290 +3 3173 3130 7290 +3 6721 3174 3131 +3 3174 6181 3131 +3 2338 3175 6181 +3 2338 8129 3175 +3 7524 3176 3122 +3 3176 3148 3122 +3 3176 5448 3148 +3 5448 7955 3148 +3 3178 3177 5068 +3 3179 7851 3117 +3 2913 2917 3180 +3 2917 3114 3180 +3 2917 6211 3114 +3 6211 3113 3114 +3 3181 460 458 +3 6211 3090 3113 +3 3090 3182 3113 +3 3090 3220 7109 +3 5201 6719 3183 +3 650 3186 3184 +3 4318 3185 1594 +3 7294 3155 3186 +3 6488 791 3187 +3 790 3188 3189 +3 928 4119 985 +3 790 3190 3188 +3 3190 901 3188 +3 5483 3191 903 +3 5921 3193 3192 +3 3193 1291 5767 +3 8150 8126 3194 +3 1291 1124 5767 +3 3195 3196 1124 +3 6726 5070 3196 +3 3198 3197 7546 +3 3199 7872 5070 +3 1296 8004 7872 +3 2448 759 799 +3 5167 3741 5740 +3 5783 7957 3200 +3 5167 3201 3741 +3 3201 7324 6465 +3 6017 4644 7421 +3 6017 3203 4644 +3 3203 3202 4644 +3 3203 3204 3202 +3 3204 3205 3202 +3 1681 1678 3205 +3 3165 7421 6849 +3 1771 3206 1678 +3 1771 3207 3206 +3 3207 3208 3206 +3 1820 1856 3208 +3 1820 6391 1856 +3 6391 1854 1856 +3 7440 3209 7586 +3 3209 4253 7586 +3 3211 3210 4253 +3 2137 7729 3210 +3 3213 6591 3212 +3 4482 3214 7490 +3 2230 2339 6173 +3 2339 6265 6173 +3 2392 6289 6264 +3 2440 6274 3215 +3 3216 189 8179 +3 6628 3217 2537 +3 3356 5430 6687 +3 5430 7092 6687 +3 7368 2159 7185 +3 6319 5789 7092 +3 2653 2708 5789 +3 2653 2710 2708 +3 2710 3218 2709 +3 3218 3335 2709 +3 5935 2915 7264 +3 5184 6867 3219 +3 5935 2973 2915 +3 2973 2916 2915 +3 3221 507 3220 +3 507 7109 3220 +3 6145 3222 7109 +3 4182 624 4530 +3 7804 6671 3223 +3 6671 376 3223 +3 6671 5645 376 +3 4201 3226 3224 +3 3226 3225 3224 +3 3226 3227 3225 +3 3227 7228 3225 +3 185 3228 7793 +3 3228 221 7793 +3 3228 146 221 +3 146 223 221 +3 146 147 223 +3 147 222 223 +3 147 3229 222 +3 3230 6777 5048 +3 1421 3231 6102 +3 3903 7057 3232 +3 3903 3233 2972 +3 5757 4279 4280 +3 3233 7221 2972 +3 3233 3266 7221 +3 3266 7241 7221 +3 3266 3234 7241 +3 5390 1718 5114 +3 3235 7107 6423 +3 652 6342 720 +3 7736 6105 3236 +3 6105 3237 3236 +3 3238 949 3237 +3 5153 950 949 +3 5153 7106 950 +3 7106 3239 950 +3 8181 6297 2617 +3 7106 3240 3239 +3 3240 7127 7062 +3 7127 7741 7062 +3 1085 3809 7741 +3 1085 3241 3809 +3 5763 1504 5534 +3 5763 3242 1504 +3 973 8148 7636 +3 5710 3243 8095 +3 3243 7881 8095 +3 3243 5253 7881 +3 5253 5871 7881 +3 5253 3245 5871 +3 3245 3244 5871 +3 3245 1420 3244 +3 3246 1508 3561 +3 3246 1560 1508 +3 1560 6112 1508 +3 6434 1683 3247 +3 6434 5105 1683 +3 5105 1682 1683 +3 1773 3248 1682 +3 6679 3249 3248 +3 1859 1857 3249 +3 1859 3250 1857 +3 3250 5954 6958 +3 5954 6751 6148 +3 2042 2039 8182 +3 2042 3252 2039 +3 3252 3251 2039 +3 3253 3254 3251 +3 2180 2714 3254 +3 7037 3257 3255 +3 6772 1044 6276 +3 3257 8037 3255 +3 3257 3256 8037 +3 3256 5798 3258 +3 5798 3259 3258 +3 5798 5271 3259 +3 5271 5812 3259 +3 5271 3260 5812 +3 2569 2718 4663 +3 3261 7147 5696 +3 2569 4157 2718 +3 4157 7858 2718 +3 3262 2720 6890 +3 2723 3264 5245 +3 3263 3483 570 +3 3264 2805 5245 +3 2863 3265 2805 +3 2863 2975 3265 +3 2975 3232 3265 +3 2975 6251 3232 +3 4361 3233 3903 +3 4361 8186 3233 +3 374 3234 3266 +3 3267 3268 3234 +3 327 3269 3268 +3 2625 2624 2755 +3 291 6142 3269 +3 5672 742 6142 +3 4743 3270 742 +3 3271 1553 1495 +3 182 183 3270 +3 6877 184 183 +3 80 144 7053 +3 80 544 144 +3 544 145 144 +3 50 3272 145 +3 352 6037 7593 +3 50 5778 3272 +3 4442 3273 8169 +3 4442 6762 3273 +3 6762 7115 6178 +3 7115 680 6178 +3 3275 3274 5416 +3 793 6194 5266 +3 6194 792 5266 +3 6194 857 792 +3 857 856 792 +3 857 3276 856 +3 5728 5346 3277 +3 1047 1087 996 +3 1087 1046 996 +3 1087 1126 1046 +3 1126 1164 3278 +3 1213 3279 5396 +3 1212 3280 3279 +3 1265 1297 3280 +3 1265 3281 1297 +3 7448 3282 7601 +3 7448 1421 3282 +3 1509 5217 7446 +3 6243 6872 2109 +3 5444 3283 6868 +3 2721 5357 6374 +3 3284 1858 5357 +3 3284 1915 1858 +3 1914 5953 6514 +3 1914 8197 5953 +3 3285 2041 7370 +3 3285 3286 2041 +3 3286 3287 2041 +3 6040 3289 3287 +3 2181 3288 3289 +3 2181 3290 3288 +3 3290 5576 3288 +3 3290 6492 5576 +3 7024 6771 3291 +3 2487 3292 3293 +3 1642 1742 6082 +3 2487 6716 3292 +3 4589 2655 6970 +3 2655 2615 6970 +3 2655 3654 2615 +3 3654 2724 2615 +3 6931 3295 2864 +3 3295 2977 3294 +3 3297 2974 3296 +3 506 566 3681 +3 373 3298 5813 +3 4364 2311 2310 +3 3298 3300 3299 +3 3300 261 3299 +3 7661 217 3301 +3 181 3302 217 +3 181 3303 3302 +3 3303 551 3302 +3 79 3304 551 +3 1650 1653 1698 +3 79 7777 3304 +3 7777 49 3710 +3 49 3305 545 +3 3297 505 3682 +3 3297 2976 505 +3 3306 1563 6616 +3 3306 1634 1563 +3 1634 5896 1563 +3 1634 3307 5896 +3 3307 3308 5286 +3 5626 3309 1734 +3 3309 5301 3310 +3 1916 3311 7726 +3 1916 3312 3311 +3 3312 5639 3311 +3 3312 6412 5639 +3 2045 3313 1956 +3 2045 3314 3313 +3 3314 2043 3313 +3 3314 7782 2043 +3 3315 6912 5044 +3 2279 2232 6582 +3 2279 3316 2232 +3 3316 2395 5227 +3 7967 6772 1084 +3 2395 5738 6995 +3 5738 2393 6995 +3 5738 3317 2393 +3 3317 6781 2393 +3 6914 2656 4535 +3 6914 6894 2656 +3 6894 5820 2656 +3 6893 3319 3318 +3 3319 4859 3318 +3 3320 6358 3485 +3 3322 2464 3321 +3 6358 6167 3485 +3 5480 7883 6168 +3 7883 3323 6168 +3 547 1958 3323 +3 547 3324 1958 +3 3324 3325 326 +3 3325 7564 326 +3 3325 214 7564 +3 214 215 7564 +3 214 6317 215 +3 6680 3327 7482 +3 3326 3018 4405 +3 3327 108 7482 +3 3327 109 108 +3 3329 3553 3328 +3 824 3330 895 +3 3553 3331 538 +3 3331 2980 501 +3 1806 3332 5027 +3 3336 3333 3334 +3 7851 3335 7264 +3 3336 3370 3333 +3 3370 3337 3333 +3 3370 3398 3337 +3 3398 3338 3337 +3 3342 908 1975 +3 3373 6848 3338 +3 3373 7187 6848 +3 6987 6520 8227 +3 6290 5386 5488 +3 6290 724 5386 +3 724 3339 5386 +3 724 6565 3339 +3 6565 3340 3339 +3 3074 2130 3035 +3 798 797 3340 +3 798 5755 797 +3 5755 7789 797 +3 2044 3341 7399 +3 5615 8221 7789 +3 5615 7360 8221 +3 7360 3342 8221 +3 957 908 3342 +3 7569 3343 1654 +3 957 3345 908 +3 3345 3344 908 +3 3345 3346 3344 +3 3346 1183 3344 +3 3346 3347 1183 +3 3347 3348 1131 +3 3348 3349 1131 +3 8058 4969 3349 +3 1269 3350 6080 +3 1339 1378 7615 +3 5067 6973 5074 +3 1339 3351 1378 +3 6609 6915 6861 +3 3351 1467 1379 +3 3352 3354 6149 +3 1566 3353 3354 +3 1566 4246 3353 +3 4246 1598 3353 +3 4246 1638 1598 +3 1638 6673 1598 +3 3355 1741 6673 +3 3355 3357 1741 +3 2440 2528 3356 +3 3357 1740 1741 +3 3357 6804 1740 +3 4092 4547 3358 +3 5536 7926 3359 +3 4430 3360 1868 +3 4430 3362 3360 +3 3361 5227 6046 +3 3362 4865 3360 +3 3362 2048 4865 +3 2048 7436 4865 +3 1537 7569 4912 +3 2048 3363 7436 +3 1913 6148 1912 +3 6336 2235 7408 +3 2235 3364 5733 +3 3364 7419 5733 +3 5594 7525 3403 +3 5205 6158 2346 +3 2533 6266 7380 +3 2533 7923 6266 +3 7923 3365 6266 +3 3366 3132 3172 +3 3368 4585 3365 +3 3368 3367 4585 +3 3367 3369 4586 +3 6796 3372 3370 +3 3372 3398 3370 +3 3372 3371 3398 +3 3371 5190 3373 +3 7763 368 7877 +3 368 5850 7877 +3 320 3374 500 +3 6057 211 3375 +3 6811 3376 3377 +3 3378 738 737 +3 3376 3380 3379 +3 3380 496 3379 +3 75 3382 7213 +3 3382 3381 477 +3 3371 3421 5190 +3 3371 2981 3421 +3 726 3383 2065 +3 3383 3385 3384 +3 3385 7389 3384 +3 3385 7254 7389 +3 5786 958 3386 +3 958 2732 3386 +3 958 6523 2732 +3 6523 2733 2732 +3 959 7790 2733 +3 960 3387 7790 +3 961 3388 3387 +3 961 3389 3388 +3 6944 1088 3464 +3 1517 3390 1132 +3 3391 3392 3390 +3 4901 1299 3392 +3 4901 3393 1299 +3 3393 3394 1299 +3 1521 3396 3394 +3 6594 7814 3395 +3 1523 1769 3396 +3 1523 1805 1769 +3 5813 3267 374 +3 1805 1425 1769 +3 1525 1514 3397 +3 3398 3373 3338 +3 4099 3399 1514 +3 1639 7581 3399 +3 1687 7307 3400 +3 7307 5206 3400 +3 3127 3126 3401 +3 7307 1775 5206 +3 1775 3404 5836 +3 3358 3402 4096 +3 3404 3403 7403 +3 3403 3405 3406 +3 3405 3407 6210 +3 1015 6933 1055 +3 3407 5187 1919 +3 5187 3408 1919 +3 5187 3409 3408 +3 3409 3410 7253 +3 3410 3411 3412 +3 6353 2731 3413 +3 2731 2234 3413 +3 6354 3414 4875 +3 5440 2734 2347 +3 7451 3147 7198 +3 2734 5204 2347 +3 2735 5171 2490 +3 5147 2618 7750 +3 5147 3415 2618 +3 3415 2810 2661 +3 2810 2809 2661 +3 2810 3416 2809 +3 3416 3417 2809 +3 2868 2867 3417 +3 2868 3418 2867 +3 3418 5145 6810 +3 3419 5753 6597 +3 5145 2981 6810 +3 5145 3420 2981 +3 3420 3431 3421 +3 3422 7583 2058 +3 4851 2472 5989 +3 3431 3423 7942 +3 367 369 8114 +3 367 6108 369 +3 3425 252 3424 +3 3425 6942 252 +3 6714 3426 3427 +3 140 138 175 +3 138 73 3428 +3 73 3429 74 +3 6500 3009 7412 +3 6500 3430 3009 +3 3430 7902 3009 +3 495 366 3431 +3 366 3423 3431 +3 6561 493 5146 +3 3433 2985 3432 +3 6310 6376 3434 +3 658 3595 3435 +3 3595 6964 3435 +3 727 4210 3436 +3 5901 6118 6151 +3 3439 3437 3438 +3 3439 5320 3437 +3 5320 910 3437 +3 673 3440 713 +3 5320 966 910 +3 966 6975 910 +3 5731 1052 3441 +3 5731 3442 1052 +3 3442 1138 1052 +3 3442 5505 1138 +3 5752 7928 1173 +3 7928 6212 1173 +3 7911 2270 3443 +3 1340 3445 5343 +3 3445 3444 5343 +3 1427 3446 1426 +3 3446 1530 5951 +3 1530 7477 5951 +3 1530 8053 7477 +3 3447 1206 1292 +3 8053 5313 7477 +3 1600 2961 3448 +3 1600 1692 2961 +3 1692 3449 2961 +3 1692 3450 3449 +3 3451 5676 6421 +3 5263 3452 5299 +3 3452 1921 3453 +3 3454 6355 5929 +3 1921 3109 3453 +3 1921 4141 3109 +3 4141 3455 3109 +3 4141 3712 3455 +3 3712 6775 3455 +3 5303 3579 1273 +3 5988 2091 3456 +3 5988 6842 2091 +3 6842 2092 2091 +3 2189 2186 2092 +3 2239 3457 2187 +3 3457 2354 2237 +3 2354 2352 2237 +3 2354 3458 2352 +3 3458 7645 2353 +3 3459 5270 2401 +3 3460 5355 2493 +3 5355 4221 3217 +3 4221 3461 3217 +3 4221 2664 3461 +3 2664 2662 3461 +3 2664 3462 2662 +3 2870 2929 3463 +3 3389 6944 3464 +3 2929 8042 3463 +3 2929 3465 8042 +3 3074 3036 2130 +3 3465 3466 3467 +3 3468 3434 6376 +3 3468 429 3434 +3 429 3469 3434 +3 430 3470 3469 +3 319 5411 3470 +3 319 7351 5411 +3 7784 3472 3471 +3 5849 546 3472 +3 6109 173 546 +3 6109 3473 173 +3 3474 8107 2452 +3 7711 5507 4613 +3 5574 5587 3475 +3 8144 6902 3476 +3 3466 3501 3468 +3 3466 3477 3501 +3 3478 3560 3563 +3 3478 428 3502 +3 428 3500 3502 +3 363 3479 7975 +3 3479 3481 3480 +3 3481 3498 3480 +3 1926 3422 1967 +3 3481 3482 3498 +3 210 3483 3495 +3 3484 3493 3496 +3 3320 3485 6372 +3 3389 3464 3388 +3 5359 5400 777 +3 69 3487 3486 +3 3487 3492 3486 +3 41 3488 3492 +3 3489 3490 7552 +3 5 18 3490 +3 18 3491 7552 +3 5306 5374 3492 +3 5374 3486 3492 +3 134 3493 3486 +3 3494 3496 3493 +3 6110 3495 3496 +3 3497 6360 1617 +3 6968 7693 8202 +3 7693 3498 8202 +3 3499 3480 3498 +3 3499 365 3480 +3 2895 1576 1608 +3 364 555 8117 +3 555 3500 8117 +3 555 3501 3500 +3 3501 3502 3500 +3 3477 3560 3502 +3 3477 3503 3560 +3 3504 8025 3573 +3 5771 5398 7206 +3 7237 3507 3505 +3 3506 2694 5940 +3 3507 5623 3505 +3 2538 3508 3556 +3 8083 6141 6991 +3 8083 5004 6141 +3 5004 3509 6141 +3 2188 3552 3765 +3 2188 2139 3552 +3 2139 5879 3552 +3 2138 3549 5879 +3 2138 3510 3549 +3 3510 6573 3511 +3 6573 3512 7664 +3 3512 1920 3513 +3 3514 6275 5221 +3 1873 5262 6036 +3 5262 3545 6036 +3 5262 7244 3545 +3 7244 3515 3545 +3 3516 3518 3515 +3 6934 5249 3517 +3 1691 3541 3518 +3 1691 7963 3541 +3 5550 3519 7155 +3 1529 3538 7372 +3 1529 4958 3538 +3 4958 3520 3538 +3 1301 3521 3533 +3 3521 4890 3533 +3 3521 6994 4890 +3 2206 3924 3522 +3 2206 5825 3924 +3 5825 3531 3924 +3 5277 5319 3523 +3 7338 3529 3524 +3 6344 6136 5425 +3 6136 5592 5425 +3 6136 3525 5592 +3 2236 7874 3526 +3 685 7327 5592 +3 7327 5425 5592 +3 7326 6577 7314 +3 6577 3527 7314 +3 6577 3528 3527 +3 3528 3550 3529 +3 913 7725 3524 +3 1006 3530 7725 +3 1006 1053 3530 +3 3737 5269 2881 +3 1053 3523 3530 +3 1053 6659 3523 +3 6659 5278 3523 +3 5159 3531 5278 +3 5159 3532 3531 +3 5495 3522 3924 +3 7489 3533 4890 +3 5273 5431 3533 +3 3535 3534 5431 +3 3536 3520 3534 +3 2875 7407 3537 +3 7847 1569 3538 +3 1569 7372 3538 +3 1569 3539 7372 +3 3540 3541 6206 +3 7130 3518 3541 +3 4755 6943 3542 +3 3543 1571 7328 +3 5835 3544 3515 +3 3544 3545 3515 +3 3546 6036 3545 +3 2936 1963 6275 +3 4273 2164 5568 +3 1963 5221 6275 +3 1963 3547 5221 +3 3547 3513 5221 +3 7515 3511 7664 +3 7515 2141 3511 +3 3557 3548 2744 +3 2141 3549 3511 +3 3550 3524 3529 +3 3551 3552 5879 +3 6201 3765 3552 +3 2920 3331 3553 +3 7002 3554 7094 +3 3554 3509 7094 +3 2494 6991 6141 +3 2540 3508 7908 +3 2540 3555 3508 +3 3555 3557 3556 +3 3557 5623 3556 +3 1982 5581 1984 +3 3557 3558 5623 +3 633 634 5297 +3 3558 3505 5623 +3 3558 2812 3505 +3 3559 5860 1554 +3 2812 7429 3505 +3 2930 7206 5398 +3 2987 3563 5264 +3 3563 3560 5264 +3 1419 3561 3562 +3 3563 490 3478 +3 3563 3564 490 +3 3564 3610 490 +3 3619 3565 3566 +3 3565 3568 3567 +3 3568 3569 3567 +3 5285 7989 3569 +3 5285 3571 7989 +3 3571 3570 7989 +3 288 6165 3572 +3 7951 3621 3573 +3 3621 6340 3573 +3 3621 3574 6340 +3 3574 6744 6340 +3 6305 3623 7496 +3 3623 3575 7496 +3 3576 2477 6062 +3 5061 3577 1140 +3 3577 3624 3578 +3 3624 7970 3578 +3 3624 3626 7970 +3 3626 3579 7970 +3 3626 3580 3579 +3 3582 3581 7203 +3 6989 1384 3581 +3 3632 3583 1469 +3 3583 5982 1469 +3 3633 3584 6187 +3 3584 1601 6187 +3 3584 3585 1601 +3 3585 7315 1601 +3 3636 3587 3586 +3 3587 1826 3586 +3 3638 3588 1826 +3 7510 3589 3590 +3 3591 3592 3589 +3 5928 2051 3592 +3 3594 6418 2051 +3 3594 3593 6418 +3 3595 727 6964 +3 3593 3641 3596 +3 3641 3597 2191 +3 3597 3598 6749 +3 3598 3599 2355 +3 3644 3600 7387 +3 3644 6242 3600 +3 3645 6683 2447 +3 3646 2577 6683 +3 3646 3601 2577 +3 3601 3603 5631 +3 3603 3602 5631 +3 3606 2666 3602 +3 3605 3604 2466 +3 3606 7072 2666 +3 7072 5983 2743 +3 7050 6103 3607 +3 3649 7361 3608 +3 5682 3609 3610 +3 3609 6282 3611 +3 6282 3613 3612 +3 3613 3614 3612 +3 6742 318 3614 +3 6500 72 22 +3 6742 3652 318 +3 3652 245 318 +3 3652 3615 245 +3 3615 3653 246 +3 3653 1803 246 +3 3653 3616 1803 +3 5481 68 7005 +3 5481 5453 68 +3 3657 7613 7193 +3 3657 3617 7613 +3 3617 2 7613 +3 6909 3618 3619 +3 3618 3620 3565 +3 6546 805 5285 +3 805 840 3571 +3 2073 5207 2114 +3 840 6700 3571 +3 840 860 6700 +3 860 8076 6700 +3 860 7952 8076 +3 915 3621 7951 +3 1007 3574 3621 +3 1007 3622 3574 +3 3622 7921 6305 +3 3190 904 901 +3 8081 5061 3623 +3 8081 1174 5061 +3 1174 3577 5061 +3 7749 3625 3624 +3 3625 3626 3624 +3 4375 3580 3626 +3 4202 2095 2143 +3 4375 3627 3580 +3 3627 6494 3580 +3 3627 3628 6494 +3 3628 3629 7317 +3 3629 3630 3582 +3 3380 5604 496 +3 3630 6989 3582 +3 6984 3631 8138 +3 3631 5230 3632 +3 5230 3583 3632 +3 3634 3633 3583 +3 3634 1645 3633 +3 1645 3584 3633 +3 7386 3674 5165 +3 1645 3635 3584 +3 3025 1263 6665 +3 3635 6575 3585 +3 1743 6477 8113 +3 1743 7432 6477 +3 7683 3587 3636 +3 7683 3637 3587 +3 3637 3638 3587 +3 3639 5687 3638 +3 3639 5907 5687 +3 5907 7510 5687 +3 60 527 92 +3 3640 5234 5928 +3 5234 3594 5928 +3 6821 3641 3593 +3 5617 3597 3641 +3 3642 6498 3598 +3 3643 3644 3599 +3 2449 6242 3644 +3 5923 2579 3645 +3 2579 3646 3645 +3 2579 6287 3646 +3 6287 3601 3646 +3 7479 3603 3601 +3 7479 2746 3603 +3 2746 3606 3603 +3 2746 3647 3606 +3 3648 5983 7072 +3 4285 1315 1246 +3 3648 7684 5983 +3 7684 2989 7050 +3 2989 6103 7050 +3 1699 1785 1784 +3 805 3571 5285 +3 2989 3659 6103 +3 3659 3649 6103 +3 3650 5682 3649 +3 3650 5141 5682 +3 5141 3609 5682 +3 7753 6282 3609 +3 3939 286 3613 +3 6240 6941 7632 +3 286 3651 6742 +3 3651 5214 3652 +3 5214 3615 3652 +3 5838 5296 3653 +3 3654 2725 4193 +3 5296 3616 3653 +3 98 7484 3616 +3 7756 5975 409 +3 3656 3655 7484 +3 3656 5482 3655 +3 17 5453 5481 +3 17 3658 5453 +3 3658 3657 5453 +3 3658 4185 3657 +3 3659 885 3650 +3 4213 4226 4216 +3 3164 4228 4226 +3 3164 5113 4228 +3 2991 6724 3660 +3 2991 6717 6724 +3 2993 577 3661 +3 2993 7795 577 +3 7795 3663 578 +3 7341 2081 3662 +3 3663 6361 578 +3 2996 3665 3664 +3 3665 2997 481 +3 2997 3666 481 +3 3667 7471 3666 +3 7779 5787 3668 +3 5787 3670 3669 +3 3670 475 3669 +3 3670 7225 475 +3 2998 3694 3671 +3 3776 3692 5445 +3 3776 3673 3692 +3 3672 2613 5151 +3 3673 8134 5477 +3 8134 6739 5477 +3 8134 3674 6739 +3 3674 6409 6739 +3 3674 268 6409 +3 268 3675 6409 +3 269 3689 3675 +3 3676 3677 3689 +3 98 3656 7484 +3 3678 6757 3677 +3 157 6536 6757 +3 120 3679 3686 +3 3680 4408 6134 +3 3682 3681 2974 +3 3683 8229 3684 +3 36 3684 8229 +3 35 4408 3684 +3 35 3685 4408 +3 4213 3164 4226 +3 3687 3686 6134 +3 524 6536 3686 +3 3688 6757 6536 +3 270 3675 3689 +3 270 3690 3675 +3 7732 284 3691 +3 3671 3692 5477 +3 3671 3694 3692 +3 4313 1211 3693 +3 3694 5445 3692 +3 3694 2944 5445 +3 2944 3695 5445 +3 3696 2629 6402 +3 593 8090 5875 +3 2629 3697 6402 +3 3698 1264 4314 +3 2629 3699 3697 +3 7181 1242 1313 +3 3699 3701 3700 +3 3701 3768 3700 +3 2505 6321 3702 +3 6321 3767 3702 +3 6321 2415 3767 +3 2415 3764 3767 +3 6069 2317 3703 +3 3704 2305 3761 +3 2305 3705 3761 +3 2305 3706 3705 +3 3706 6169 3705 +3 2062 3708 5948 +3 3708 3707 5948 +3 8001 534 4716 +3 3708 1936 3707 +3 1936 3709 3707 +3 3304 3710 6728 +3 1936 1886 3709 +3 1887 3757 5484 +3 1887 3711 3757 +3 3711 3756 3757 +3 7160 7285 7896 +3 7160 6505 7285 +3 6505 5579 7285 +3 6505 7814 5579 +3 3712 2050 6775 +3 1611 3713 3714 +3 1611 3715 3713 +3 852 6952 5889 +3 3715 3752 3713 +3 3715 3716 3752 +3 3716 1434 7080 +3 1434 3751 7080 +3 1434 6658 3751 +3 6658 3717 3751 +3 7207 3718 3717 +3 3719 1279 3748 +3 7238 5621 3720 +3 5621 3745 3720 +3 3722 3743 3745 +3 3722 3721 3743 +3 3721 3724 3723 +3 3724 3725 3723 +3 1150 3740 3725 +3 1150 5807 3740 +3 128 8049 204 +3 5807 3726 3740 +3 5807 1066 3726 +3 1066 7156 3726 +3 1023 3727 7156 +3 1023 6329 3727 +3 6329 5122 3727 +3 3728 1923 6632 +3 7462 871 5380 +3 1697 3729 3732 +3 3729 7281 3730 +3 690 3730 5239 +3 690 3734 3730 +3 776 3731 7813 +3 3734 3732 3730 +3 940 6356 3733 +3 3734 3735 3732 +3 3735 5471 3732 +3 3736 6922 5471 +3 7737 2882 3737 +3 873 7649 5122 +3 7649 3727 5122 +3 7649 3738 3727 +3 4382 3726 7156 +3 5359 777 3739 +3 4382 5664 3726 +3 5216 3725 3740 +3 5704 3741 6465 +3 5216 3742 3725 +3 3744 3743 3723 +3 3744 5960 3743 +3 1604 1648 1602 +3 5960 3745 3743 +3 6306 3720 3745 +3 6306 1280 3720 +3 1280 3746 3720 +3 1280 3747 3746 +3 3747 3748 3746 +3 2947 4105 3001 +3 1349 3718 3748 +3 1349 7873 3718 +3 7873 3749 3717 +3 3749 3750 3751 +3 3750 1578 7080 +3 1578 1612 3752 +3 1612 3713 3752 +3 1612 3753 3713 +3 3754 7285 5579 +3 3755 5099 7896 +3 5099 2807 3756 +3 2807 3757 3756 +3 5131 5484 3757 +3 3758 6949 3709 +3 3759 6169 5948 +3 5507 135 247 +3 2157 3705 6169 +3 2157 3760 3705 +3 3760 2255 3761 +3 6309 3763 3762 +3 3763 4831 3762 +3 3763 6139 4831 +3 2369 3703 6138 +3 2416 3764 3703 +3 7823 2188 3765 +3 2416 3766 3764 +3 7442 5391 1671 +3 3766 2549 3767 +3 2549 3769 3702 +3 3769 3768 3702 +3 3769 2630 3768 +3 2630 3700 3768 +3 8157 3697 3700 +3 2826 6824 6402 +3 2434 6871 3899 +3 2826 3770 6824 +3 6989 8138 1384 +3 3770 3772 3771 +3 3772 7556 3771 +3 3772 3775 7556 +3 6875 3773 5309 +3 3775 3774 3695 +3 3774 3812 3776 +3 6813 7457 8057 +3 3777 3780 5873 +3 2378 6898 3778 +3 3779 5219 1724 +3 8196 6010 3780 +3 8196 3782 6010 +3 3782 3781 6010 +3 5180 3783 872 +3 5819 3784 4383 +3 3784 3866 3785 +3 4752 816 886 +3 3866 5215 3785 +3 3866 3787 5215 +3 3787 3786 5215 +3 8184 7992 4167 +3 3788 2059 2151 +3 3861 5959 4283 +3 3789 3860 5962 +3 3860 1311 5962 +3 3860 3859 1311 +3 1048 1372 7311 +3 3859 1350 1311 +3 3859 3790 1350 +3 6996 3791 8044 +3 3791 7624 8044 +3 5194 6077 721 +3 6552 3793 1544 +3 3793 3792 1544 +3 4628 3794 3792 +3 4628 3795 3794 +3 3795 7333 3794 +3 3795 7826 7333 +3 3857 6012 5038 +3 3857 3796 6012 +3 3796 7194 3797 +3 3854 2806 5972 +3 3854 6051 2806 +3 3852 3067 3798 +3 7958 6572 6417 +3 8087 3800 3799 +3 3800 2104 3799 +3 3850 3801 2104 +3 2657 3802 5330 +3 3803 3778 5022 +3 3804 3805 6740 +3 3805 7503 6740 +3 5388 3806 7502 +3 3806 3807 2318 +3 3807 2368 2318 +3 3847 3808 2368 +3 3847 7686 3808 +3 5530 2506 7685 +3 5802 5703 2165 +3 3809 5534 1502 +3 5530 3811 2506 +3 3811 3810 2506 +3 3331 501 538 +3 6292 2593 3810 +3 5103 2825 6131 +3 7301 7149 2945 +3 3845 3813 3812 +3 3813 3814 3812 +3 8110 411 3814 +3 3842 3815 5165 +3 3815 7386 5165 +3 5674 5130 3816 +3 5130 3837 3817 +3 3819 3818 4437 +3 3837 156 3817 +3 3837 3836 156 +3 3836 187 156 +3 7472 6256 3820 +3 3836 3821 187 +3 3821 4954 187 +3 8143 34 3822 +3 8143 5872 34 +3 3956 3917 3955 +3 3956 3844 3917 +3 3958 3959 3823 +3 3959 3825 3843 +3 3825 3824 7520 +3 3824 5573 3826 +3 5573 3841 3826 +3 5573 3827 3841 +3 3827 3840 3841 +3 3827 8176 3840 +3 8176 3839 3840 +3 8176 3828 3839 +3 3828 3829 3839 +3 3961 3830 3829 +3 1421 6102 7190 +3 3831 3832 3830 +3 7817 5640 3832 +3 3050 3833 380 +3 7817 3834 5640 +3 3835 5406 6501 +3 8143 6501 5406 +3 4854 5168 2218 +3 7323 3821 3832 +3 3821 3830 3832 +3 7028 7774 7605 +3 3821 3836 3830 +3 3836 3837 3829 +3 6727 5176 3838 +3 3837 5130 3839 +3 5674 3841 3840 +3 3815 3826 3841 +3 3815 3842 3826 +3 8110 3843 7520 +3 3813 3823 3843 +3 3813 3845 3823 +3 3845 3844 3823 +3 3845 7149 3844 +3 7149 3917 3844 +3 7973 3846 3915 +3 3846 3912 3915 +3 3846 6889 3912 +3 6292 4753 7801 +3 3811 3907 4753 +3 3811 5530 3907 +3 7686 3847 7764 +3 3847 3807 3848 +3 3807 3849 3848 +3 3807 3806 3849 +3 3806 3904 3849 +3 3806 5388 3904 +3 3804 7767 6528 +3 3804 3850 7767 +3 3850 3800 7768 +3 3800 3900 7768 +3 3800 8087 3900 +3 3121 827 3851 +3 8087 3898 3900 +3 8087 3852 3898 +3 3852 7020 3898 +3 3853 6051 3897 +3 3854 3894 7108 +3 7194 3796 3855 +3 3796 3857 5491 +3 3409 6499 2089 +3 3402 2552 5882 +3 3857 3890 5491 +3 1317 3856 6473 +3 3857 7826 3890 +3 4628 3888 6694 +3 3791 3858 6551 +3 6996 4675 3858 +3 6996 3790 4675 +3 2203 4500 2257 +3 3790 3859 5449 +3 3859 3884 5449 +3 3859 3860 3884 +3 3789 3861 5981 +3 3861 7962 5981 +3 1855 7999 6413 +3 3861 7992 7962 +3 7439 2253 3862 +3 8184 3787 4170 +3 3863 494 492 +3 3787 3864 4170 +3 6117 7840 3865 +3 3787 3866 3864 +3 3866 3784 3867 +3 5525 1481 5510 +3 3784 3881 3867 +3 3784 5819 3881 +3 5180 6469 3868 +3 5183 3782 4448 +3 3782 3880 4448 +3 8196 4878 3880 +3 3870 3869 5585 +3 3777 7650 3878 +3 7650 3871 3878 +3 7650 3872 3871 +3 3872 6121 3871 +3 6813 3874 3873 +3 3874 3875 3873 +3 3918 3919 3875 +3 3919 3873 3875 +3 3919 3921 3873 +3 3921 6121 3873 +3 3921 3876 6121 +3 3876 3871 6121 +3 7703 5770 5194 +3 3876 3877 3871 +3 3877 3878 3871 +3 8130 4878 3878 +3 2133 5748 2182 +3 3879 2321 7189 +3 6325 3880 4878 +3 3922 4448 3880 +3 3923 3868 6469 +3 5247 5063 3881 +3 370 6301 3375 +3 5377 3882 3864 +3 2640 2789 5883 +3 3926 3883 4170 +3 3926 3928 3883 +3 5869 7694 5981 +3 3931 5449 3884 +3 3931 3885 5449 +3 3933 3858 4675 +3 3886 7321 6551 +3 7321 3887 6551 +3 7321 3935 3887 +3 3935 3888 3887 +3 3935 4458 3888 +3 4458 6694 3888 +3 5565 1750 3889 +3 4458 3937 6694 +3 3937 7868 6694 +3 3937 5383 7868 +3 5383 3890 7868 +3 3891 5491 3890 +3 7222 3892 3855 +3 3892 3894 3855 +3 4261 5503 3893 +3 7670 7108 3894 +3 7670 3895 7108 +3 3895 3896 3897 +3 3896 3984 7020 +3 3984 3940 3898 +3 4335 3899 2482 +3 3940 3900 3898 +3 3901 7768 3900 +3 3942 6528 7767 +3 5892 3902 6528 +3 6251 4361 3903 +3 3948 3849 3904 +3 3948 3905 3849 +3 3905 3906 3848 +3 3906 8226 7764 +3 8226 6191 7764 +3 8158 3909 3907 +3 1539 1541 3908 +3 3909 4753 3907 +3 6308 3910 7801 +3 3910 3911 3912 +3 6099 3913 6980 +3 6102 3914 7190 +3 3911 3950 3915 +3 3950 5966 3915 +3 7818 3955 3916 +3 7638 3116 3180 +3 3955 3917 3916 +3 8008 3964 3918 +3 3964 3919 3918 +3 3920 3921 3919 +3 5276 3876 3921 +3 2581 6398 2668 +3 5276 6466 3876 +3 6466 3877 3876 +3 6466 7987 3877 +3 6479 3922 6325 +3 3966 3967 7162 +3 6450 5247 3923 +3 7409 7578 2086 +3 3532 5495 3924 +3 7064 5063 5247 +3 3925 3970 5377 +3 3974 3926 3882 +3 3974 3927 3926 +3 3927 3928 3926 +3 3976 6769 3928 +3 3929 5869 6769 +3 3929 3930 5869 +3 3930 3979 8103 +3 3979 3931 8103 +3 3979 3932 3931 +3 3932 3885 3931 +3 6214 3886 3933 +3 6214 3934 3886 +3 7320 3936 3935 +3 3936 4458 3935 +3 3982 5383 3937 +3 3982 3938 5383 +3 5566 3892 7222 +3 5143 3895 7670 +3 3986 3896 3895 +3 3985 3984 3896 +3 316 3939 361 +3 3990 3901 3940 +3 3989 3941 3901 +3 7760 3942 3941 +3 3943 3247 6111 +3 3945 5892 3942 +3 3945 3944 5892 +3 3993 6034 3948 +3 6034 3905 3948 +3 3946 3906 3905 +3 3946 4945 3906 +3 4945 8226 3906 +3 4945 3947 8226 +3 3997 3910 6308 +3 3997 3949 3910 +3 3993 3948 7008 +3 3949 3911 3910 +3 3949 3999 3911 +3 3999 3950 3911 +3 3951 3954 3950 +3 3953 3952 2854 +3 4000 7818 3954 +3 4000 5663 7818 +3 4002 3956 3955 +3 3957 3958 3956 +3 4004 3959 3958 +3 5644 3825 3959 +3 5644 3960 3825 +3 8194 3962 3828 +3 3962 3961 3828 +3 3962 4010 3961 +3 4010 3831 3961 +3 4367 3963 7817 +3 3963 3834 7817 +3 3963 5248 3834 +3 693 3920 3964 +3 693 898 3920 +3 898 6397 5276 +3 2616 3965 7986 +3 3965 6479 7986 +3 7783 983 3966 +3 983 3967 3966 +3 7188 6450 3967 +3 7188 3968 6450 +3 1067 3969 3925 +3 3969 3971 3970 +3 3971 3974 3970 +3 3972 3711 1887 +3 1848 7509 1952 +3 5092 813 3973 +3 5823 3927 3974 +3 3975 1365 627 +3 5822 3976 3927 +3 5822 1312 3976 +3 7878 3084 3977 +3 1312 3929 3976 +3 1312 3978 3929 +3 7279 1436 3979 +3 1436 3932 3979 +3 1436 5538 3932 +3 5538 6000 3932 +3 5538 6838 6000 +3 1579 7320 3934 +3 1579 3980 7320 +3 3980 1704 3936 +3 1704 4459 3936 +3 3981 3982 4459 +3 1794 3938 3982 +3 1794 6927 3938 +3 6371 5566 7223 +3 6371 3983 5566 +3 2536 5143 6438 +3 3987 3940 3984 +3 2063 3985 3986 +3 2063 5694 3985 +3 3988 3990 3987 +3 6764 3989 3990 +3 2256 3991 3945 +3 3992 3993 3944 +3 2418 6034 3993 +3 8137 2550 3946 +3 2595 3947 4945 +3 2595 3994 3947 +3 2631 3995 7595 +3 4419 5231 3996 +3 3995 3998 3997 +3 3998 3949 3997 +3 7875 2968 8187 +3 7563 5659 3999 +3 2946 4000 3951 +3 2946 4001 4000 +3 1154 1108 6163 +3 4001 5663 4000 +3 4001 4003 5663 +3 4003 4002 5663 +3 410 3957 4002 +3 410 4005 3957 +3 4005 4004 3957 +3 522 5443 5644 +3 532 4007 5619 +3 2757 4006 7843 +3 4007 5410 5619 +3 5582 3108 6179 +3 4007 4008 5410 +3 4008 7698 5410 +3 2423 4731 6540 +3 6496 4009 3962 +3 4009 7116 4010 +3 7116 4367 4010 +3 7116 81 4367 +3 81 3963 4367 +3 81 4011 3963 +3 4011 5248 3963 +3 4001 7102 474 +3 472 7215 4012 +3 7296 3640 3591 +3 472 4013 7215 +3 4013 5975 5562 +3 3555 2621 3548 +3 4014 4030 5765 +3 4014 533 4030 +3 4016 1833 4015 +3 533 4017 5938 +3 4017 7456 5938 +3 7672 119 4018 +3 119 4019 4020 +3 4019 4022 8208 +3 4022 4021 8208 +3 5321 971 917 +3 58 4024 5833 +3 4024 4025 4023 +3 4025 4026 4023 +3 16 7117 4026 +3 7117 4023 4026 +3 7117 59 4023 +3 59 5833 4023 +3 59 4027 5833 +3 4701 4020 8208 +3 8073 5327 7426 +3 195 7456 4018 +3 195 4028 7456 +3 4028 5938 7456 +3 8016 4029 4030 +3 4029 6615 5765 +3 5803 4103 4031 +3 5803 4032 4103 +3 6738 4033 4101 +3 4033 4034 7592 +3 4035 4036 7379 +3 2594 7534 4036 +3 2594 7965 7534 +3 4792 4037 7964 +3 2417 4094 4037 +3 4038 4040 6853 +3 4039 6613 5760 +3 4040 6999 4089 +3 6999 4041 4090 +3 4042 4043 6696 +3 7121 6483 4043 +3 2158 5071 4044 +3 2535 4088 4045 +3 7299 4046 7039 +3 3344 2986 5212 +3 1751 4086 7027 +3 1751 4047 4086 +3 4047 4048 7715 +3 4048 1613 4083 +3 4049 1355 5188 +3 1613 8161 4083 +3 4050 6815 8161 +3 7332 4053 4051 +3 4053 4054 4052 +3 4054 5210 4052 +3 7861 1351 4055 +3 8213 4732 2216 +3 1351 4079 4055 +3 1351 4057 4079 +3 4057 4056 4079 +3 4057 4059 4056 +3 4865 7436 4058 +3 4059 4060 4056 +3 1281 4076 4060 +3 5847 7082 4076 +3 1106 7571 4116 +3 3991 4038 6220 +3 1106 4061 7571 +3 4061 6621 7571 +3 1355 4920 4918 +3 927 4073 5864 +3 927 874 4073 +3 2097 4062 4063 +3 7675 6647 7085 +3 619 673 4064 +3 7675 772 6647 +3 772 6096 6647 +3 772 5614 6096 +3 5614 7113 6096 +3 5776 5828 273 +3 692 4069 7113 +3 692 5256 4069 +3 2297 7419 6416 +3 5256 4067 4069 +3 7058 4065 4068 +3 4065 7978 4068 +3 5829 7979 4066 +3 3061 6609 3146 +3 6433 4068 7978 +3 663 4067 4068 +3 735 4069 4067 +3 734 7113 4069 +3 2246 6647 6096 +3 2014 2101 6005 +3 4772 4070 7644 +3 4072 4071 7085 +3 984 5864 4073 +3 984 6812 5864 +3 6812 6303 6621 +3 4074 4075 4116 +3 6997 7082 4075 +3 6839 2023 2168 +3 1282 4060 4076 +3 1282 4077 4060 +3 4077 4056 4060 +3 4078 7469 7256 +3 4077 5821 4056 +3 1396 4055 4079 +3 1396 4080 4055 +3 4080 5210 4055 +3 4080 1545 5210 +3 1545 4052 5210 +3 7505 4051 4052 +3 7505 7336 4051 +3 7336 4081 6815 +3 4081 8161 6815 +3 1660 4082 4083 +3 4082 4084 7715 +3 4084 4086 7715 +3 2406 2408 4085 +3 1795 7027 4086 +3 1795 1889 7027 +3 1889 5993 7039 +3 365 7975 3480 +3 4087 4088 6227 +3 2848 7293 2901 +3 5933 4045 4088 +3 7402 2107 4044 +3 6384 4089 4090 +3 6384 4091 4089 +3 4091 4092 6853 +3 8197 7723 4093 +3 3358 4094 6448 +3 3358 4096 4094 +3 4096 4037 4094 +3 4096 4095 4037 +3 4095 4097 7964 +3 4098 4036 7534 +3 2632 7379 4036 +3 2632 6646 7379 +3 6646 6833 7592 +3 1525 6437 4099 +3 5555 4100 4101 +3 5555 4102 4100 +3 4102 6978 4103 +3 3000 5096 6387 +3 3000 3002 5096 +3 3002 4106 5096 +3 6706 2758 2633 +3 4104 4105 6869 +3 3003 3001 4105 +3 3003 4107 3001 +3 4107 4106 3001 +3 3003 464 4107 +3 3003 4108 464 +3 4108 5142 464 +3 4108 4154 5142 +3 7716 4111 4109 +3 4110 2173 2117 +3 4111 8153 4109 +3 6698 4112 7936 +3 6607 4114 4113 +3 1048 7311 1086 +3 4114 1441 6129 +3 4115 7104 6253 +3 8160 4074 4116 +3 5527 4117 6759 +3 4117 5464 6759 +3 6639 6269 4121 +3 4118 6405 6801 +3 6622 4119 877 +3 1444 985 4119 +3 1447 4120 7166 +3 4120 1108 7166 +3 4120 4121 1108 +3 4121 6163 1108 +3 7466 4123 4122 +3 4123 1245 4122 +3 7988 4124 1245 +3 3200 7957 4125 +3 1450 4126 6485 +3 4126 4127 5881 +3 5034 4128 5678 +3 2817 2938 8052 +3 4129 2124 4128 +3 6567 4130 1548 +3 291 5672 6142 +3 4130 6360 1548 +3 4400 4131 6359 +3 4131 4132 6359 +3 4133 7035 4132 +3 4133 8082 7035 +3 8082 1756 7035 +3 1940 1798 1756 +3 4135 4134 1798 +3 4135 7110 4134 +3 7110 5997 4136 +3 5997 1939 4136 +3 5997 4137 1939 +3 2828 4139 5087 +3 3210 7729 3169 +3 1652 4138 5254 +3 4139 2163 5087 +3 2830 6864 5392 +3 2830 4140 6864 +3 4140 4142 6864 +3 4141 3512 3712 +3 2832 2371 4142 +3 2422 8055 2468 +3 4143 7867 2371 +3 2833 4145 4144 +3 4343 3672 2651 +3 4145 4146 4144 +3 7692 4147 4146 +3 2836 2598 4147 +3 2836 5618 2598 +3 5618 2637 2598 +3 5618 4148 2637 +3 4148 4150 4149 +3 4150 6750 4149 +3 4151 7833 5084 +3 7738 4153 4152 +3 4164 2888 4153 +3 4164 4166 2888 +3 4166 8154 2888 +3 6708 4155 4154 +3 4155 4168 5142 +3 4169 342 6047 +3 4169 4158 342 +3 4157 4156 7858 +3 4158 343 342 +3 4158 4159 343 +3 4159 4160 7996 +3 4160 7549 7996 +3 2665 4161 5934 +3 4161 4162 5934 +3 734 736 773 +3 154 8011 4162 +3 154 7546 8011 +3 3197 8112 635 +3 4163 6240 7632 +3 4165 4166 4164 +3 7641 6708 4166 +3 7641 6584 6708 +3 8184 4167 3786 +3 6584 4155 6708 +3 873 5122 5380 +3 6583 6435 4168 +3 6435 341 4169 +3 3882 3926 4170 +3 4172 4165 4171 +3 4174 6584 7641 +3 4174 4173 6584 +3 4172 3893 4174 +3 530 4175 6414 +3 5456 4176 4175 +3 2801 2909 2857 +3 5456 528 4176 +3 485 4177 4176 +3 4177 5741 4176 +3 487 4178 4230 +3 4178 4179 4231 +3 660 4183 4180 +3 4183 4181 4180 +3 4182 8040 624 +3 4183 6899 4181 +3 765 4184 728 +3 4185 3617 3657 +3 765 5065 4184 +3 6024 4186 6918 +3 4186 5719 6918 +3 5905 7308 4187 +3 5905 4188 7308 +3 4188 1091 7765 +3 3353 7537 2284 +3 1091 6916 7765 +3 1091 4189 6916 +3 4189 7468 8215 +3 8151 4190 2111 +3 7468 5884 8215 +3 1230 4191 5884 +3 1230 1275 4191 +3 4193 6931 4192 +3 1275 1305 4651 +3 1305 1274 4651 +3 1305 4194 1274 +3 4194 1304 1274 +3 4194 4195 1304 +3 5922 7471 3668 +3 4195 4761 1304 +3 4196 220 7622 +3 1346 6444 4197 +3 1472 1533 6983 +3 1533 7257 6983 +3 4198 1969 4502 +3 1646 1693 4199 +3 1646 7935 1693 +3 1828 1778 6595 +3 1827 7362 5350 +3 7362 4200 5350 +3 1966 1964 4200 +3 4701 5132 4020 +3 5645 4201 573 +3 1966 7152 1964 +3 7152 2053 1965 +3 2053 5906 1965 +3 2053 2094 5906 +3 2094 2093 5906 +3 1668 7211 1586 +3 2094 4202 2093 +3 4202 6667 2093 +3 2192 4204 7941 +3 4204 4203 7941 +3 4204 7295 4203 +3 7295 2304 4203 +3 7295 4205 2304 +3 433 5850 500 +3 4205 4206 7376 +3 4206 8009 7376 +3 2858 2910 2909 +3 4206 4207 8009 +3 4207 8162 8009 +3 4234 4208 4209 +3 4210 7678 3436 +3 2580 2578 4208 +3 2813 2745 6365 +3 4211 4212 2745 +3 652 720 5630 +3 2873 7463 4212 +3 2931 2988 7463 +3 2931 4213 2988 +3 4213 4216 4214 +3 736 3973 813 +3 4216 885 4214 +3 4216 4215 885 +3 4215 426 4217 +3 426 4218 427 +3 5126 2357 7507 +3 4218 361 427 +3 4218 4219 361 +3 4221 4220 3507 +3 4219 4223 316 +3 4223 4222 316 +3 209 132 4224 +3 209 4225 132 +3 4225 7673 133 +3 7673 5796 133 +3 38 468 39 +3 7984 1556 6695 +3 38 5606 468 +3 4216 4226 6863 +3 4226 5612 6863 +3 4226 4228 5612 +3 4228 4227 5612 +3 4228 3660 4227 +3 3660 5999 4227 +3 8010 7568 5999 +3 6414 4175 4229 +3 4175 5741 4229 +3 5741 4230 4229 +3 4230 4231 6733 +3 663 735 4067 +3 4231 6863 5612 +3 4227 7568 6733 +3 4227 5999 7568 +3 7891 3046 4232 +3 3046 5108 4232 +3 508 4349 5426 +3 4588 6446 8174 +3 512 5685 5598 +3 512 4233 5685 +3 2451 2495 4234 +3 4233 4236 4235 +3 4236 4237 4235 +3 4238 7373 4237 +3 4240 4239 7373 +3 516 8121 4239 +3 3230 5048 2956 +3 7022 6857 4241 +3 6857 4360 4241 +3 7560 4243 4242 +3 4243 4244 4242 +3 6825 7364 4244 +3 6825 4245 7364 +3 3950 3954 5966 +3 4246 7581 1638 +3 6071 5817 5282 +3 4245 4247 4362 +3 4247 4248 4363 +3 519 4249 4365 +3 4249 6203 4365 +3 7547 4251 4250 +3 1323 5900 7909 +3 4251 5610 4250 +3 571 4252 4370 +3 4424 7217 7243 +3 456 4376 7274 +3 4253 5563 1955 +3 4255 4254 4376 +3 7548 4255 405 +3 3642 3598 3597 +3 7042 4254 4255 +3 460 111 458 +3 460 5402 111 +3 459 7071 193 +3 2374 7879 2423 +3 461 4256 6143 +3 461 6455 4256 +3 6455 4259 4256 +3 4258 4257 3731 +3 4260 404 4259 +3 4260 5454 404 +3 5454 4261 7548 +3 4262 4264 7042 +3 7391 3038 4263 +3 4292 5602 4264 +3 4292 6954 5602 +3 6954 4266 7303 +3 4266 4265 7303 +3 4266 6458 4265 +3 6458 4267 2889 +3 4267 7531 2889 +3 7640 4268 7864 +3 964 962 960 +3 3605 4269 6074 +3 6247 4270 4269 +3 4271 2513 4270 +3 2322 6587 6886 +3 6587 4272 6886 +3 7276 2209 4272 +3 7276 4273 2209 +3 2067 4275 8164 +3 4275 4274 8164 +3 4275 7191 4274 +3 1944 2021 5211 +3 4276 5686 1893 +3 1712 4278 5795 +3 4278 4277 5795 +3 5572 4279 4277 +3 5572 6097 4279 +3 913 1006 7725 +3 8192 1664 4280 +3 8192 1583 1664 +3 1583 5511 1664 +3 1583 4281 5511 +3 4281 6555 1485 +3 6555 4282 1485 +3 6555 7273 4282 +3 7123 7245 5913 +3 4167 4283 3744 +3 4285 4284 7245 +3 1284 4286 4284 +3 3147 7451 4287 +3 4288 5895 4286 +3 4289 1109 2277 +3 1109 6623 6055 +3 6623 5157 5634 +3 1111 1113 6128 +3 1014 880 4290 +3 1014 7721 880 +3 5279 5265 7922 +3 697 699 4291 +3 610 5274 7298 +3 5355 3217 2493 +3 4292 4262 2952 +3 4262 3893 2952 +3 5986 4264 5602 +3 5986 5499 7755 +3 5499 4293 4377 +3 7250 3005 4294 +3 4657 4296 4295 +3 4296 5939 4295 +3 4296 5668 5939 +3 4720 4298 4297 +3 4298 5050 4297 +3 5049 5393 4299 +3 3553 538 3328 +3 2563 2564 5845 +3 5393 4892 4299 +3 7494 4300 4841 +3 7792 4301 4300 +3 7151 6385 4301 +3 7151 4302 6385 +3 4302 3008 4303 +3 3008 7651 4303 +3 3008 4304 7651 +3 1857 1772 3249 +3 4305 4306 4447 +3 4306 4307 7316 +3 4307 5512 5504 +3 3011 4308 5492 +3 5434 4452 4308 +3 3013 6195 6468 +3 4309 4311 6195 +3 7869 4310 4311 +3 5436 4312 5764 +3 4313 7805 4542 +3 5563 3169 3134 +3 3693 4543 7805 +3 3698 4314 6268 +3 6706 6603 2758 +3 4314 6170 6268 +3 7100 5652 4510 +3 7100 5435 5652 +3 5435 4545 5652 +3 5435 6592 4545 +3 6865 4315 4316 +3 5519 4317 4315 +3 5519 4318 4317 +3 2150 4508 7659 +3 4318 1631 4550 +3 1631 4319 4552 +3 4319 1730 4551 +3 1730 1766 4320 +3 1766 1819 4321 +3 1256 1289 5609 +3 1819 6702 4321 +3 1819 4322 6702 +3 6422 4323 5709 +3 4322 3322 4324 +3 3321 4555 4325 +3 3321 4327 4555 +3 4326 1875 1924 +3 6194 6718 857 +3 4327 4328 4555 +3 2036 7786 4328 +3 2036 5338 7786 +3 5747 4329 1328 +3 5338 2129 5916 +3 4330 2238 5362 +3 2129 4331 5916 +3 4655 4332 4333 +3 7173 5846 4334 +3 4335 2434 3899 +3 6132 4336 5385 +3 4332 2274 4557 +3 2274 4338 4558 +3 4338 4337 4558 +3 4338 6791 4337 +3 4339 6007 7455 +3 2485 7761 4559 +3 4340 5487 4562 +3 5487 4341 4562 +3 5487 4342 4341 +3 4342 4343 4565 +3 2872 3607 5404 +3 4343 2707 4344 +3 4346 4345 8035 +3 6828 7229 4567 +3 4347 4569 7229 +3 5107 4571 7120 +3 3340 1218 723 +3 5426 4349 4573 +3 4349 4348 4573 +3 4350 4575 7154 +3 510 4351 7009 +3 4351 4353 4352 +3 4353 5351 4352 +3 6752 7690 1451 +3 5097 4354 4578 +3 350 7079 414 +3 5097 4355 4354 +3 4355 7297 4354 +3 4837 381 5607 +3 381 4580 5607 +3 381 4356 4580 +3 1850 1908 1849 +3 4356 7464 4580 +3 7019 4595 6692 +3 5150 4599 7542 +3 7278 7920 4599 +3 5685 4357 7144 +3 4235 4237 4603 +3 4237 4358 4603 +3 4237 7373 4358 +3 6464 4359 2753 +3 4360 7561 7289 +3 4242 4609 6013 +3 4244 7183 4609 +3 4244 7364 7183 +3 1270 1271 6060 +3 566 4361 3681 +3 4362 4363 4611 +3 6364 6135 1875 +3 4363 5064 6236 +3 2194 2242 4364 +3 4248 4365 4615 +3 4365 6203 6940 +3 7890 4250 4366 +3 4010 4367 3831 +3 1835 6663 4368 +3 4250 4369 4366 +3 4250 5610 4369 +3 5511 4016 6543 +3 4372 4620 4707 +3 4371 6959 396 +3 4371 4370 6959 +3 4370 4620 4372 +3 4373 119 7672 +3 4252 6876 4620 +3 7243 5459 4662 +3 4374 6076 719 +3 7243 7217 5459 +3 4375 3625 1274 +3 7274 4376 8209 +3 4376 7755 8209 +3 7755 4377 8209 +3 589 4380 4378 +3 4379 1499 1592 +3 4380 6424 4378 +3 4380 636 6424 +3 636 4381 7541 +3 4381 2407 7541 +3 4381 702 2407 +3 702 666 2407 +3 702 4384 666 +3 4383 3785 4382 +3 4384 4385 666 +3 4386 4388 4385 +3 5739 4387 4388 +3 850 4257 4387 +3 4390 4389 4257 +3 1047 996 5345 +3 4390 6072 4389 +3 6072 4391 2511 +3 4391 1028 930 +3 1028 1071 5324 +3 1071 1027 5324 +3 1071 1115 1027 +3 1115 4392 5994 +3 4392 1725 5994 +3 4392 4393 1725 +3 4393 1248 4394 +3 6387 7230 3000 +3 1248 1192 4394 +3 1248 4395 1192 +3 1317 4396 8080 +3 1317 4397 4396 +3 4397 4399 4396 +3 5945 3124 4398 +3 6541 1402 4399 +3 7743 1486 1402 +3 1585 1584 5154 +3 1585 4402 1584 +3 6854 4131 4400 +3 4402 8046 4401 +3 8046 5082 4401 +3 8046 4403 5082 +3 3326 4404 1714 +3 3326 4405 4404 +3 4405 5083 4404 +3 4405 6021 5083 +3 4407 4406 8220 +3 7514 3684 4408 +3 6021 5794 5083 +3 5360 7860 5794 +3 5360 4409 7860 +3 4409 4410 4411 +3 4410 6327 4412 +3 6327 2070 4412 +3 7437 4414 4413 +3 4414 2110 4413 +3 4414 2215 2110 +3 5474 4415 2212 +3 4415 6767 5501 +3 6767 4416 5501 +3 6766 4417 7420 +3 2470 2469 8055 +3 2470 7452 2469 +3 4419 4421 4418 +3 4420 1498 1497 +3 3996 2722 4421 +3 3996 5089 2722 +3 5089 2680 2722 +3 5089 5341 2680 +3 5341 2681 2680 +3 5341 2840 2681 +3 2840 2791 2681 +3 2840 4422 2791 +3 4422 6998 2791 +3 7250 4293 4423 +3 7250 4436 4293 +3 7217 7274 8209 +3 7217 4424 7274 +3 4424 4425 4426 +3 3013 4309 6195 +3 4425 4427 401 +3 4427 5066 4428 +3 292 4429 293 +3 4430 3408 3362 +3 1395 782 1528 +3 4431 6144 4429 +3 225 4432 190 +3 4433 4434 5109 +3 3263 3484 3483 +3 4435 581 4434 +3 4436 4294 7000 +3 4654 2954 4437 +3 4438 3005 2954 +3 4438 4658 3005 +3 4658 4294 3005 +3 4658 4440 4294 +3 4439 7311 1372 +3 4440 7000 4294 +3 4656 4295 4669 +3 1129 1169 2437 +3 4295 4702 4669 +3 4295 5939 4702 +3 4297 4441 5857 +3 4297 5050 4441 +3 7428 4672 5052 +3 7428 4299 4672 +3 4299 4673 4672 +3 4299 4892 4673 +3 4841 4300 6969 +3 6487 5149 4442 +3 4300 4674 6969 +3 4301 4676 4674 +3 4301 6385 4676 +3 6385 4443 4676 +3 4303 7651 4677 +3 7417 4446 4444 +3 1170 4445 1270 +3 4446 6524 4444 +3 4446 4447 6524 +3 4447 4450 6524 +3 5183 4448 6469 +3 4449 129 168 +3 7316 5851 4450 +3 5492 5300 7239 +3 5492 4308 5300 +3 4308 6307 5300 +3 3629 3582 7317 +3 4308 4452 6307 +3 4452 6468 4451 +3 4311 7608 7982 +3 4683 6004 4594 +3 6004 4576 4594 +3 6004 6900 4576 +3 3903 2972 7057 +3 6004 4454 6900 +3 4454 4453 4574 +3 4454 4310 4453 +3 4453 7706 4455 +3 7706 4572 4455 +3 7706 7384 4572 +3 7706 5670 7384 +3 7384 7720 4457 +3 4457 4570 4456 +3 4457 2859 4570 +3 4459 3937 4458 +3 2859 2802 4461 +3 4461 6891 4568 +3 4006 4460 7136 +3 4461 5800 6891 +3 5800 4462 6891 +3 5800 6832 4464 +3 4464 2611 4463 +3 4463 4465 4566 +3 4463 4466 4465 +3 4466 4467 4564 +3 4466 4468 4467 +3 4469 3053 603 +3 4247 519 4248 +3 4467 6703 4470 +3 1037 1083 5625 +3 4470 4561 4563 +3 4470 4471 4561 +3 4471 7665 4560 +3 4471 2387 7665 +3 4472 5733 7419 +3 322 575 371 +3 7665 4473 4560 +3 4475 4476 4474 +3 4475 6007 4476 +3 4476 6660 4474 +3 700 5359 4291 +3 7056 4477 4478 +3 4479 4809 4477 +3 4479 4480 4809 +3 4479 2035 4480 +3 4480 4556 4809 +3 4480 5792 4556 +3 677 5116 754 +3 4480 5958 5792 +3 5792 6946 4483 +3 4483 4481 5915 +3 5643 1229 4482 +3 4483 8012 4481 +3 8012 4484 6598 +3 4484 4487 4485 +3 4484 6850 4487 +3 4487 4486 4485 +3 4487 6638 5197 +3 5517 1731 1677 +3 5197 6029 4486 +3 5415 5736 4606 +3 4489 1728 4488 +3 4488 4554 4490 +3 6608 2213 4491 +3 4488 4492 4554 +3 4488 1630 4492 +3 4492 4496 4553 +3 4492 5877 4496 +3 4494 4493 1157 +3 4496 4495 6257 +3 4495 4497 4549 +3 4495 3135 4497 +3 4497 4498 6101 +3 4499 531 107 +3 6101 6425 6061 +3 4501 4548 6425 +3 2159 5914 4500 +3 4501 1417 6420 +3 4503 4502 7583 +3 6420 4504 4506 +3 4506 4546 6192 +3 4506 6979 4546 +3 4506 4505 6979 +3 6979 4507 4546 +3 1262 7357 4507 +3 4508 2247 7659 +3 1262 7038 7357 +3 1262 4509 7038 +3 1743 6595 1778 +3 7038 6389 7357 +3 1294 4510 6170 +3 4512 4511 6389 +3 4514 4513 7602 +3 4514 1043 4513 +3 1043 993 5991 +3 5748 2298 7418 +3 5991 4515 5144 +3 5991 946 4515 +3 946 4541 4515 +3 4516 7535 5123 +3 7535 6550 5123 +3 8128 6377 4517 +3 6377 4518 7003 +3 7003 4536 4519 +3 5793 2275 4520 +3 6113 4521 4522 +3 7524 3122 4778 +3 2376 8140 5036 +3 4521 4523 5810 +3 4521 647 4523 +3 4523 4524 6580 +3 4523 646 4524 +3 4524 5414 6580 +3 4524 4528 5414 +3 2122 4525 2228 +3 4528 4532 5414 +3 4526 5342 1484 +3 4528 4529 4532 +3 4528 4527 4529 +3 4529 4531 4532 +3 4182 4530 4531 +3 4530 648 4532 +3 4533 717 6580 +3 3908 2895 4534 +3 716 4522 5810 +3 2571 6914 4535 +3 7219 4536 4522 +3 7657 4519 4536 +3 7657 5328 4519 +3 5328 4517 4519 +3 4235 4603 4357 +3 7400 5899 4537 +3 5328 4538 4517 +3 4538 6550 4517 +3 4539 5129 5401 +3 4538 5543 6550 +3 5542 4540 4541 +3 4542 4513 5144 +3 7805 4543 7602 +3 4544 2397 7658 +3 7874 1025 5557 +3 5652 4545 4546 +3 4545 4316 6192 +3 4316 4548 6192 +3 2370 2509 4547 +3 4315 6425 4548 +3 4317 4550 6061 +3 4550 4549 6061 +3 4550 4552 4549 +3 4482 1229 3214 +3 4552 4551 6257 +3 4551 4320 4553 +3 4320 4554 4553 +3 4320 4321 4554 +3 4321 4490 4554 +3 3836 3829 3830 +3 6702 6029 4490 +3 4324 4325 4486 +3 4325 4555 4485 +3 4555 4328 6598 +3 4328 4481 6598 +3 4328 7786 4481 +3 6559 6079 1318 +3 4331 4809 4556 +3 4333 4557 4477 +3 4557 4558 4478 +3 4558 6660 4478 +3 4337 7025 4474 +3 4559 4473 7893 +3 7761 4562 4560 +3 4562 4561 4560 +3 4341 4565 4563 +3 4565 4564 4563 +3 4565 4344 4564 +3 4344 8035 4465 +3 4345 4462 4566 +3 4345 4567 4462 +3 4569 4570 4568 +3 1460 3559 1554 +3 7120 4456 4570 +3 7120 4571 4456 +3 4571 4572 4456 +3 4573 4455 4572 +3 4348 4574 4455 +3 7690 4126 1450 +3 4348 7154 4574 +3 4575 4576 6900 +3 7009 6363 4576 +3 4352 4593 6363 +3 4352 5351 4593 +3 5351 4578 4577 +3 4578 5734 4577 +3 5607 4580 6859 +3 4580 4579 6859 +3 4580 7464 4579 +3 7464 5090 4579 +3 3846 4581 4582 +3 383 438 4583 +3 438 511 4584 +3 4584 4579 5090 +3 4584 4588 4579 +3 7227 4585 4586 +3 1746 4587 7852 +3 4588 6859 4579 +3 6689 2570 4589 +3 4588 8174 4590 +3 7278 4591 7919 +3 7278 4599 5150 +3 4592 4577 5734 +3 6827 4593 4577 +3 6827 4595 7019 +3 7019 6692 4594 +3 3252 3289 3253 +3 6692 4595 7981 +3 4597 4596 4686 +3 7542 4598 4596 +3 7542 4599 4598 +3 4599 4688 4598 +3 4599 7920 4688 +3 5624 7144 4600 +3 4357 4601 4602 +3 4357 4603 4601 +3 4603 4605 4601 +3 4358 4604 4605 +3 1815 4606 1909 +3 8120 4607 7913 +3 7289 4608 4693 +3 4759 7233 614 +3 7289 6013 4608 +3 6013 5701 4608 +3 6013 4609 5701 +3 4609 7183 4610 +3 7363 4611 5861 +3 6236 8171 8185 +3 6236 4612 8171 +3 1534 5769 5280 +3 3473 7711 4613 +3 6236 5064 4612 +3 5064 4614 4612 +3 4615 4835 4614 +3 4615 6940 4835 +3 4616 5571 6939 +3 2798 6115 4617 +3 4369 4697 4618 +3 4369 4619 4697 +3 5655 5102 4698 +3 4707 4620 4700 +3 7722 6451 6925 +3 6445 5992 7077 +3 5992 4491 7077 +3 5992 4621 4491 +3 883 4622 7653 +3 4622 933 7653 +3 881 4290 880 +3 4622 7443 933 +3 7443 986 933 +3 6691 4623 4624 +3 1072 4625 1487 +3 1072 4626 4625 +3 4626 7816 4625 +3 4626 4627 7816 +3 1002 6199 8093 +3 4627 1249 1488 +3 1249 7430 1488 +3 4628 3793 3888 +3 6559 4629 4630 +3 4631 5537 5878 +3 1545 7505 4052 +3 4631 4632 5537 +3 4632 1491 5537 +3 4632 6373 1491 +3 6373 4633 1491 +3 6298 6231 4633 +3 4634 1667 7220 +3 1667 4635 7679 +3 4635 4636 4637 +3 4636 6086 1715 +3 4639 4641 4638 +3 8189 4640 4641 +3 3665 481 3664 +3 5170 1896 4640 +3 7579 4642 1896 +3 7444 1987 4642 +3 7444 2072 1987 +3 2072 2682 1987 +3 2167 7011 2684 +3 2166 4643 7011 +3 6849 4644 1679 +3 2324 2686 6380 +3 2375 5236 2686 +3 5076 3170 4645 +3 2374 4646 2689 +3 4646 2690 2689 +3 4646 7544 2690 +3 7544 4647 2690 +3 2558 3506 4648 +3 3506 5232 4648 +3 3506 5940 5232 +3 8088 4650 4649 +3 6988 3017 1295 +3 4650 2793 4649 +3 4650 4652 2793 +3 1275 4651 4191 +3 4652 4653 2793 +3 8066 3818 4653 +3 8066 6490 3818 +3 6490 4654 3818 +3 2129 4655 4331 +3 6490 4657 4654 +3 4657 4438 4654 +3 4657 4656 4438 +3 5393 6313 4892 +3 4656 4659 4658 +3 4659 4440 4658 +3 5635 4660 4440 +3 1185 4661 863 +3 6876 4252 4662 +3 4252 5930 4662 +3 3260 2569 4663 +3 4252 571 5930 +3 571 400 5930 +3 4665 398 4664 +3 398 4667 338 +3 4667 332 4666 +3 332 334 4666 +3 332 558 334 +3 5092 5465 847 +3 558 4668 224 +3 4659 4669 4699 +3 4669 4702 5316 +3 5653 889 4670 +3 4671 5857 8062 +3 5052 4672 6482 +3 4672 4673 4891 +3 6969 4674 4783 +3 3885 3933 4675 +3 4674 4676 5267 +3 4443 4784 7574 +3 4443 4677 4784 +3 4677 7511 4785 +3 7511 4786 4785 +3 7511 4444 4786 +3 571 4665 400 +3 4444 4678 4786 +3 6524 4450 4679 +3 5300 6307 5389 +3 6307 4794 5389 +3 4680 6860 992 +3 4682 7982 4681 +3 7982 4683 4681 +3 4684 7094 3509 +3 4686 4796 4685 +3 4598 4688 4687 +3 4688 4600 4687 +3 4600 4689 4687 +3 4602 4798 4689 +3 4601 6349 4798 +3 4601 4605 6349 +3 4690 7797 4800 +3 134 3473 3494 +3 7797 4691 4800 +3 7913 4692 4691 +3 4693 4694 4692 +3 4608 6681 4694 +3 5318 4803 4802 +3 8185 4695 4805 +3 8185 8171 4695 +3 3116 7089 3180 +3 3189 4696 3154 +3 4618 4697 4994 +3 3017 718 1295 +3 4698 5636 5056 +3 4700 4699 5315 +3 4700 5635 4699 +3 6411 7143 4701 +3 4704 4671 8062 +3 4704 5316 4702 +3 4704 6463 4703 +3 4706 4705 1719 +3 5835 3515 3518 +3 4703 4708 5315 +3 4708 4707 5315 +3 4709 4710 4372 +3 4709 5102 4710 +3 4710 6926 4711 +3 4711 396 6959 +3 4711 4712 396 +3 5447 7837 2539 +3 4711 7751 4712 +3 4712 397 396 +3 4712 4713 397 +3 4712 7319 4713 +3 2738 2737 3415 +3 4713 6866 397 +3 4713 4715 6866 +3 4713 337 4715 +3 4715 7083 6866 +3 4715 4714 7083 +3 4715 335 4714 +3 4207 3474 2450 +3 4714 4718 4716 +3 4714 4717 4718 +3 4718 8001 4716 +3 5939 5668 6078 +3 6553 7305 4719 +3 5668 4720 6078 +3 5668 4721 4720 +3 5158 2612 7153 +3 4721 4723 4720 +3 2955 4722 4723 +3 2894 4779 4722 +3 2894 4724 4779 +3 1607 7449 1656 +3 4724 5603 4725 +3 1186 1187 1241 +3 5603 2795 4725 +3 5603 6765 2795 +3 6765 4726 2795 +3 4729 5332 4726 +3 4728 2565 4727 +3 4729 2559 5332 +3 6235 4777 4730 +3 6235 4731 4777 +3 7846 7367 7065 +3 7880 2325 3129 +3 2325 8106 3129 +3 2325 2260 8106 +3 2260 5233 8106 +3 2260 4732 5233 +3 4732 4190 4733 +3 2168 2113 8150 +3 2168 2023 2113 +3 2023 4734 7015 +3 4734 4776 7015 +3 1940 4135 1798 +3 5158 4735 2612 +3 8043 4736 4776 +3 1897 1947 4736 +3 1897 4737 1947 +3 6133 1961 2049 +3 4737 7280 6042 +3 7280 4774 6042 +3 2752 2754 2878 +3 7280 4739 4774 +3 4739 6905 4738 +3 6905 4740 6530 +3 4740 6140 6530 +3 6467 5241 4741 +3 7648 352 351 +3 5474 2688 4415 +3 6228 4744 4742 +3 3302 4743 217 +3 4744 5751 4742 +3 4744 4846 5751 +3 4745 1455 4845 +3 4745 6263 1455 +3 1353 5284 6562 +3 5284 4772 6562 +3 5284 5523 4772 +3 1250 4770 4746 +3 1250 4747 4770 +3 4747 4769 4770 +3 4749 4748 5912 +3 4749 4750 4748 +3 3641 2191 3596 +3 4750 7322 4748 +3 3171 4751 4765 +3 4751 4754 4752 +3 4754 817 4752 +3 6308 7801 4753 +3 4754 4756 817 +3 4756 4764 817 +3 4756 4755 4764 +3 4755 5312 4757 +3 5312 6910 5467 +3 6910 4758 5467 +3 6910 615 4758 +3 615 6318 4758 +3 615 4759 6318 +3 4760 7883 2523 +3 4759 8075 6677 +3 4762 6081 4761 +3 4757 4763 4764 +3 817 816 4752 +3 6048 973 7636 +3 4752 886 4765 +3 4765 936 6644 +3 5912 4766 8133 +3 5478 1850 1814 +3 8133 5544 5575 +3 5575 4767 4769 +3 4769 4768 4770 +3 4770 1251 4746 +3 2199 4771 2314 +3 4746 4070 4772 +3 7983 5509 2463 +3 4772 7644 6562 +3 1455 7135 4845 +3 5751 1587 4742 +3 4742 7210 5241 +3 6186 8051 1970 +3 4741 4773 6140 +3 6140 1716 6530 +3 4738 7961 4774 +3 4774 5862 6042 +3 1947 8122 4736 +3 7684 7050 5983 +3 4736 4775 4776 +3 4776 2024 7015 +3 5233 2377 8106 +3 7065 6800 4777 +3 4777 5457 4730 +3 5332 6427 4726 +3 5750 3175 4778 +3 4725 6778 4779 +3 4779 3230 4722 +3 4723 4298 4720 +3 8062 7925 4780 +3 6482 4891 4889 +3 5138 4813 4781 +3 5138 4783 4813 +3 4783 4782 4813 +3 913 967 1005 +3 5267 4815 4782 +3 7574 4784 4816 +3 4784 4785 8195 +3 4786 7735 6537 +3 4788 4787 2426 +3 8045 4379 6560 +3 4679 4821 5910 +3 5545 4789 7607 +3 5845 4727 4790 +3 5389 4795 7558 +3 5389 4794 4795 +3 4791 563 3050 +3 2418 4792 8137 +3 4794 4685 4795 +3 2538 4793 3508 +3 4794 5494 4685 +3 4796 7931 4795 +3 6063 4687 4797 +3 4687 4689 4797 +3 4689 4798 4823 +3 4798 6349 4799 +3 6349 5762 4799 +3 7263 5658 4824 +3 5658 4800 4825 +3 4691 4826 7423 +3 4691 4692 4826 +3 4692 4694 4801 +3 4694 6681 4828 +3 5238 4802 5782 +3 4802 4803 4804 +3 4805 5904 7340 +3 4807 4806 4996 +3 5056 4808 6462 +3 4808 4703 6463 +3 6154 4811 5742 +3 4811 4888 5742 +3 4333 4477 4809 +3 2765 1112 4810 +3 4811 4889 4888 +3 6248 4832 4833 +3 6248 4781 4832 +3 4781 4813 4829 +3 4813 4812 4829 +3 4782 4814 4812 +3 4815 4827 4814 +3 4815 4816 4827 +3 4816 7517 4827 +3 6537 7735 4817 +3 4186 6023 969 +3 7735 5910 4818 +3 4819 7200 7886 +3 5910 6125 4818 +3 4821 7607 4820 +3 7607 6578 4820 +3 7558 7931 4822 +3 4823 6578 4822 +3 4823 4799 6578 +3 4799 5762 4820 +3 5762 6125 4820 +3 5762 4824 6125 +3 7558 4795 7931 +3 4824 4825 4818 +3 8021 2079 2078 +3 4125 2592 2676 +3 4825 7423 4817 +3 4826 4801 7517 +3 4801 4828 4827 +3 1551 6228 6467 +3 4828 4814 4827 +3 433 503 502 +3 4828 5804 4814 +3 5782 4804 4829 +3 7787 4830 4831 +3 4804 4832 4829 +3 4804 7340 4832 +3 7340 5904 4833 +3 4834 6939 5571 +3 8225 4836 4835 +3 4836 4614 4835 +3 4836 6284 4614 +3 3096 3091 3223 +3 4987 4695 8171 +3 5476 4838 5904 +3 6821 5617 3641 +3 4838 4833 5904 +3 330 4837 4355 +3 4838 5081 4833 +3 5081 6248 4833 +3 5081 4839 6248 +3 4839 4840 6249 +3 4840 4985 5139 +3 1495 6153 5599 +3 4985 4841 5139 +3 4985 4842 4841 +3 4842 7494 4841 +3 4842 4844 7494 +3 4844 4843 7494 +3 4846 4745 4845 +3 8170 2959 4843 +3 4981 6161 2845 +3 6720 4848 5570 +3 4847 1511 1565 +3 4848 7551 5570 +3 4848 7895 7551 +3 7895 4849 7551 +3 6920 5990 4849 +3 6920 4850 5990 +3 4850 4978 4851 +3 2560 7559 5876 +3 4977 6071 5282 +3 4977 6286 6071 +3 3061 5358 6915 +3 4975 2261 6285 +3 4975 4852 2261 +3 4852 4853 2261 +3 4973 2170 4853 +3 7508 5371 4854 +3 4856 8048 4855 +3 4857 6917 1989 +3 7643 4862 4858 +3 4862 7271 4858 +3 4860 2865 4859 +3 4862 4861 7271 +3 4861 4863 4864 +3 1141 7310 6221 +3 8203 4866 7630 +3 3360 4865 5268 +3 4966 1588 4866 +3 4966 4867 1588 +3 4964 7820 4868 +3 4964 8007 7820 +3 7713 4869 6883 +3 4869 4960 6884 +3 4959 1253 4870 +3 3967 3923 7162 +3 241 311 4871 +3 4956 1197 1253 +3 4956 4873 1197 +3 4873 4872 6538 +3 1837 1983 1888 +3 4872 7498 4874 +3 2235 4875 3364 +3 4876 7447 6207 +3 4949 4947 938 +3 4947 891 938 +3 4947 4877 891 +3 4877 4880 5295 +3 3777 3878 4878 +3 4880 4879 5295 +3 4880 4943 4879 +3 4943 4881 4879 +3 8228 7547 7890 +3 4943 4941 4881 +3 4942 707 4882 +3 4942 4884 707 +3 4884 4883 707 +3 5191 4887 4883 +3 4885 5471 6922 +3 1735 4886 6953 +3 4937 616 4887 +3 4937 6291 616 +3 4995 5062 6234 +3 5062 5175 6234 +3 5062 4888 5175 +3 4888 4889 6218 +3 7490 4890 6533 +3 5131 3758 5484 +3 4889 4891 5080 +3 4673 4892 5967 +3 4892 4986 5967 +3 4892 6313 4986 +3 6313 4984 4986 +3 2898 4893 7917 +3 4894 7778 4893 +3 4895 8077 7397 +3 8077 8177 4896 +3 3275 682 4897 +3 4899 4898 3152 +3 8177 4900 4896 +3 1520 4901 3391 +3 4903 4902 4980 +3 4903 2887 4902 +3 2887 6044 4902 +3 4904 4979 6044 +3 4904 6410 4979 +3 2678 963 964 +3 6410 6606 4979 +3 2379 8210 6605 +3 8210 7717 6605 +3 2169 4906 4905 +3 6441 5577 4906 +3 6441 7256 5577 +3 7469 7349 4907 +3 7349 4971 4907 +3 1079 1080 6625 +3 5441 4908 4972 +3 5441 4909 4908 +3 4909 4911 4910 +3 6252 1870 5594 +3 4911 7365 4910 +3 1573 4912 6345 +3 4914 1669 4913 +3 2496 4967 7438 +3 1623 6898 6197 +3 6897 4917 4915 +3 4917 4916 4915 +3 4917 4918 4916 +3 64 129 4449 +3 4918 4919 4916 +3 4920 4962 4919 +3 4922 6328 4921 +3 6328 4961 4921 +3 4923 5148 2735 +3 6328 5317 4961 +3 5317 4924 4961 +3 1194 4925 4957 +3 1118 4927 4926 +3 4927 4953 4926 +3 4927 4928 4953 +3 4928 5893 4953 +3 4928 6783 5893 +3 6783 4952 5893 +3 6783 4670 4952 +3 4670 4950 4952 +3 4670 889 4950 +3 889 4929 4950 +3 4239 7798 4930 +3 889 851 4929 +3 851 4946 4929 +3 851 4931 4946 +3 743 6366 5868 +3 743 6320 6366 +3 4933 4932 4944 +3 4933 6172 4932 +3 4935 5442 4934 +3 7950 4936 2479 +3 5442 5667 4934 +3 5667 4938 4937 +3 4938 6291 4937 +3 5191 4884 4934 +3 4940 750 4939 +3 4884 4942 5660 +3 4942 4932 5660 +3 7700 5237 1127 +3 4942 4941 4932 +3 73 74 3428 +3 4941 4943 4944 +3 611 698 5979 +3 4880 4877 5868 +3 2550 2595 4945 +3 4877 5172 5868 +3 4877 4947 5172 +3 4947 4946 5172 +3 4947 4949 4946 +3 6511 3120 4948 +3 4949 4929 4946 +3 4949 4876 4929 +3 4876 4950 4929 +3 4951 4952 4950 +3 7498 5893 4952 +3 6273 6841 2075 +3 4873 4926 4953 +3 7323 6936 4954 +3 4873 4956 4926 +3 4956 4955 4926 +3 6020 6678 1287 +3 4956 4959 4955 +3 4959 4957 4955 +3 4958 1383 3520 +3 4959 7345 4957 +3 7345 4960 4924 +3 4960 4869 4961 +3 4869 4921 4961 +3 4869 7713 4921 +3 7713 4962 4921 +3 8007 4919 4962 +3 8007 4964 4919 +3 2227 2229 4963 +3 4964 4916 4919 +3 4964 5831 4916 +3 5831 4867 4915 +3 4867 4965 4915 +3 4966 6197 4965 +3 4966 8203 6197 +3 7631 7438 4967 +3 1133 4968 6213 +3 4863 4913 7438 +3 4863 4861 4913 +3 4862 7643 7365 +3 7643 4910 7365 +3 6927 7223 3938 +3 7643 4857 4910 +3 4857 4908 4910 +3 3349 4969 4970 +3 4856 4971 4972 +3 4856 7991 4971 +3 66 131 129 +3 7991 4907 4971 +3 7991 5371 4907 +3 5371 7709 4907 +3 6737 1764 7006 +3 4973 4906 5577 +3 4973 4852 4906 +3 4852 4905 4906 +3 4852 4975 4905 +3 1846 4974 6065 +3 4975 7717 4905 +3 1064 7497 1103 +3 4975 6286 7717 +3 4779 6778 3230 +3 7165 1375 4976 +3 6286 6605 7717 +3 6286 4977 6605 +3 4977 4978 6606 +3 4978 4979 6606 +3 4850 6044 4979 +3 4848 4900 4980 +3 4848 6720 4900 +3 6161 4981 7397 +3 5434 4982 4452 +3 7118 8170 4893 +3 4844 4983 7917 +3 7423 4826 7047 +3 4842 4984 4983 +3 4842 4985 4984 +3 4985 4840 4986 +3 4840 5967 4986 +3 4839 5081 8205 +3 4838 5476 6218 +3 5476 4987 5175 +3 4987 6234 5175 +3 4987 6283 6234 +3 6016 432 4988 +3 4836 4989 7754 +3 4836 8225 4989 +3 8225 4834 4992 +3 4834 4990 4993 +3 4990 4991 4993 +3 8228 7890 4991 +3 4366 4992 4993 +3 4366 4618 4992 +3 1942 7275 7687 +3 4618 4994 4989 +3 5412 7627 7754 +3 4996 4997 4995 +3 4806 5055 4997 +3 5301 1916 7726 +3 591 6633 4998 +3 1120 1121 1518 +3 6633 4999 4998 +3 639 638 4999 +3 639 5000 638 +3 5001 5002 667 +3 5003 5005 5002 +3 5004 4684 3509 +3 2873 4539 2990 +3 5381 2069 5005 +3 888 887 5006 +3 888 5007 887 +3 5007 5008 7304 +3 5008 5011 5009 +3 5011 8054 5009 +3 5011 5010 8054 +3 5010 4494 5012 +3 4494 1507 5012 +3 7059 3964 8008 +3 4494 5013 1507 +3 1519 1520 3391 +3 5013 5014 5015 +3 5014 6020 5016 +3 1252 5017 1286 +3 5017 7212 5018 +3 4049 5019 5785 +3 5021 7124 5019 +3 5021 5020 7124 +3 3803 5022 3869 +3 2345 6031 5699 +3 2345 5023 6031 +3 2218 2264 2262 +3 1975 5212 7776 +3 5023 1807 5024 +3 7123 4285 7245 +3 1807 5025 5024 +3 1806 1804 5025 +3 1806 5027 1804 +3 5027 5026 1804 +3 1660 5420 4082 +3 5029 1988 5028 +3 1988 1948 5028 +3 5188 4917 1456 +3 1433 1479 1432 +3 5164 5030 1948 +3 5164 5031 5030 +3 5031 8142 2420 +3 6709 5032 2114 +3 6709 5033 5032 +3 2772 5034 4127 +3 2326 6913 5730 +3 2326 5035 6913 +3 5035 8163 6913 +3 7599 5037 8140 +3 5037 5039 5036 +3 5039 2471 5036 +3 7826 5038 7333 +3 5039 2560 2471 +3 2560 2517 2471 +3 2560 5876 2517 +3 5040 1635 1596 +3 2602 5340 5041 +3 5042 7260 2642 +3 5043 7730 1259 +3 2842 5633 8165 +3 2958 6777 5633 +3 5045 2043 5044 +3 5046 6472 5479 +3 761 5124 762 +3 643 4064 712 +3 5047 5700 5585 +3 2958 3007 6777 +3 2012 6005 6880 +3 3007 5049 5048 +3 5049 5051 5048 +3 7428 5050 5051 +3 7428 5052 5050 +3 5052 4441 5050 +3 2510 5053 5054 +3 5055 6462 4780 +3 4806 5056 6462 +3 4807 4698 5056 +3 4807 5058 4698 +3 5058 5655 4698 +3 4450 5851 5545 +3 5057 85 6895 +3 5058 4619 5655 +3 4619 6741 5655 +3 4619 5610 6741 +3 4251 5059 5060 +3 3623 5061 3575 +3 4251 394 5059 +3 394 336 5059 +3 5742 5062 4997 +3 5742 4888 5062 +3 5062 4995 4997 +3 3065 3141 7526 +3 632 665 7142 +3 5063 3867 3881 +3 6963 6107 2463 +3 5014 1195 6678 +3 7371 2364 2363 +3 4248 4615 5064 +3 5065 6024 804 +3 5066 293 4428 +3 6716 6688 3292 +3 7378 6640 5067 +3 2859 4461 4568 +3 3312 7739 6412 +3 86 514 6649 +3 5371 7508 7709 +3 3457 2237 2187 +3 2614 5068 7955 +3 2358 2408 2406 +3 1721 6531 5255 +3 2248 5561 5069 +3 7398 5070 3162 +3 5071 4045 4044 +3 1421 7190 3282 +3 5072 3524 7725 +3 2250 5561 2248 +3 904 5073 901 +3 5578 5074 5075 +3 3742 3744 3723 +3 5076 883 932 +3 4723 2956 4298 +3 1419 3246 3561 +3 1296 1332 5077 +3 2336 6484 2438 +3 1932 2017 2018 +3 2797 2898 5078 +3 2495 6948 7565 +3 205 243 5079 +3 5721 5069 2411 +3 5035 2424 7599 +3 6281 1208 1207 +3 5081 5080 8205 +3 4289 2277 5895 +3 428 6183 3500 +3 1618 5082 6198 +3 5084 4404 5083 +3 2495 5085 6948 +3 3539 5086 7155 +3 1021 1022 7078 +3 5088 2019 5087 +3 2405 2454 2453 +3 2679 2681 2789 +3 5089 2692 2794 +3 5091 4583 5090 +3 5658 4825 4824 +3 5108 508 5426 +3 2132 2182 6300 +3 814 5465 5092 +3 2107 6526 6483 +3 4312 5093 7775 +3 1479 6262 5094 +3 688 770 5095 +3 2429 2431 2480 +3 4033 7592 4101 +3 471 473 5096 +3 329 5097 437 +3 5089 2794 5341 +3 6190 2405 5098 +3 3797 5972 5099 +3 5101 5944 5100 +3 5102 5636 4698 +3 4654 4438 2954 +3 5103 5966 5608 +3 8214 2496 5104 +3 5105 1773 1682 +3 1712 5516 5106 +3 5108 5107 4232 +3 2102 7169 2153 +3 4450 5545 4679 +3 4432 4433 5109 +3 6498 3599 3598 +3 5111 5162 5110 +3 2141 5112 3549 +3 5113 3660 4228 +3 1589 1590 4706 +3 1866 6981 7906 +3 5240 5114 1847 +3 2002 5182 923 +3 1932 1979 2017 +3 2773 4129 5034 +3 7544 2516 5115 +3 5653 4670 937 +3 754 5116 7901 +3 648 5414 4532 +3 7894 7199 3019 +3 7273 5913 4282 +3 6145 7385 3222 +3 1675 5117 1721 +3 5118 7867 4144 +3 5920 5119 7017 +3 6112 5120 5539 +3 6675 2489 5121 +3 701 7077 4491 +3 7462 5380 5122 +3 6586 4520 7591 +3 4516 5123 4541 +3 5809 5124 6756 +3 2698 5125 5126 +3 5127 3071 3134 +3 360 4219 359 +3 2300 2350 2348 +3 4349 5128 4348 +3 2874 5439 5129 +3 5130 3840 3839 +3 5131 6050 3758 +3 1006 6259 1053 +3 5132 4018 4020 +3 33 90 87 +3 5133 1070 1156 +3 3637 1964 3639 +3 1690 5134 1689 +3 7927 1322 5135 +3 5150 5734 4591 +3 1667 7679 7220 +3 1923 2010 5195 +3 5136 7501 2103 +3 5137 7610 1628 +3 1876 1927 1926 +3 5139 5138 6249 +3 5140 3122 3148 +3 5141 7753 3609 +3 6047 464 5142 +3 4205 2356 2404 +3 5143 3986 3895 +3 5764 4542 5144 +3 2649 7292 2800 +3 5146 3420 5145 +3 8109 5147 5148 +3 4442 5149 1011 +3 5150 4592 5734 +3 6636 3041 5151 +3 1570 7666 5152 +3 3238 5729 5153 +3 1549 1585 5154 +3 4409 5186 5155 +3 2579 6892 6287 +3 1624 7933 6539 +3 5489 629 5844 +3 7301 6787 3916 +3 5157 5156 7235 +3 6573 7664 3511 +3 8193 5385 5937 +3 3899 5158 2568 +3 5159 1090 1139 +3 5679 5441 4972 +3 2817 2819 2938 +3 4072 8097 6302 +3 5160 2491 2399 +3 2549 3702 3767 +3 6017 5161 3056 +3 341 340 5162 +3 3806 2318 7502 +3 5164 5163 4078 +3 2721 3284 5357 +3 3842 5165 411 +3 5166 6545 1633 +3 5167 6669 3201 +3 5168 2116 2219 +3 7826 3857 5038 +3 5768 344 5169 +3 8189 5177 5170 +3 5095 811 7013 +3 6771 3293 3291 +3 7923 5171 7750 +3 2046 2134 3341 +3 4931 779 5172 +3 5174 5173 6092 +3 5476 5175 6218 +3 5176 5213 3838 +3 18 7552 3490 +3 6931 6059 3295 +3 8043 5466 5177 +3 6386 5178 5526 +3 5132 195 4018 +3 4689 4823 4797 +3 5179 8069 2508 +3 5180 5183 6469 +3 5182 866 5181 +3 1837 1838 1983 +3 6760 5532 1749 +3 1768 7972 5369 +3 6443 1433 7629 +3 53 514 86 +3 5728 953 998 +3 2112 2167 2684 +3 7099 6085 6960 +3 5183 872 3781 +3 3605 6247 4269 +3 4494 1157 5013 +3 1252 1286 1193 +3 4331 4333 4809 +3 4290 5184 6481 +3 1684 5185 7132 +3 4782 4815 4814 +3 4642 1987 5186 +3 6805 4128 1438 +3 6499 3409 5187 +3 5188 4918 4917 +3 5189 2088 5432 +3 6319 2653 5789 +3 5923 2578 2579 +3 2985 2146 3432 +3 4195 4194 1389 +3 5190 7187 3373 +3 5191 4937 4887 +3 2113 8126 8150 +3 7703 627 5192 +3 760 3436 7678 +3 5194 5193 6077 +3 6632 1923 5195 +3 5197 5196 4489 +3 2476 5198 3576 +3 6581 1258 5199 +3 5890 6401 2010 +3 4537 508 5108 +3 5200 7054 6454 +3 6292 3811 4753 +3 3861 3789 5959 +3 5988 2138 6842 +3 2270 5714 3443 +3 4246 3399 7581 +3 5697 989 5291 +3 7008 3904 3902 +3 655 5488 6520 +3 5201 8118 7810 +3 3685 93 122 +3 6400 5202 1620 +3 8119 4939 785 +3 1404 5203 875 +3 7145 5204 5205 +3 3355 3400 5206 +3 8113 6477 4406 +3 4463 6460 4466 +3 7046 2114 5207 +3 8005 5208 4287 +3 5500 3326 1714 +3 5209 5310 6270 +3 7861 4055 5210 +3 913 1005 1006 +3 7191 5211 4274 +3 5212 6431 7776 +3 5213 747 7139 +3 4224 5214 6362 +3 5664 5215 5216 +3 5217 5166 1559 +3 6382 5336 5218 +3 5075 7806 5973 +3 5219 6209 1724 +3 5890 5220 6401 +3 2196 2199 2251 +3 1920 3514 5221 +3 1833 1584 4015 +3 2484 2436 5222 +3 2729 3410 2089 +3 4155 5142 4154 +3 5223 3248 1732 +3 3789 5962 5959 +3 436 5224 5225 +3 1427 1426 3444 +3 4873 6538 1197 +3 945 5226 993 +3 5195 2055 6830 +3 3316 5227 2232 +3 3119 2636 7359 +3 1056 1058 5228 +3 683 1367 1366 +3 1958 5229 3323 +3 5230 7974 7004 +3 5232 5231 5413 +3 4733 5252 5233 +3 245 559 318 +3 6795 972 1015 +3 911 835 859 +3 539 4017 6956 +3 5234 6822 3594 +3 5235 7071 459 +3 1338 1337 2283 +3 2608 7426 8079 +3 248 5458 172 +3 4330 5362 5937 +3 1978 2062 7186 +3 2374 2689 5236 +3 6969 4783 5138 +3 1516 1170 6985 +3 2567 2609 5506 +3 5237 1373 6704 +3 869 926 6553 +3 2625 2755 4359 +3 568 523 249 +3 1998 2083 2032 +3 5701 5238 6681 +3 7114 1293 1362 +3 3796 5491 3855 +3 273 5828 299 +3 5584 6223 6508 +3 3063 3025 3024 +3 631 690 5239 +3 1760 5240 1811 +3 6228 4742 5241 +3 4342 5242 3672 +3 4062 3788 5243 +3 7519 5244 5204 +3 2723 5245 2720 +3 8156 3235 5246 +3 3923 5247 3868 +3 5248 3835 3834 +3 5250 5249 2659 +3 2390 5251 2485 +3 5378 2325 2323 +3 7992 4283 4167 +3 5233 5252 2377 +3 5253 3282 3245 +3 7126 6760 5254 +3 1721 5255 5541 +3 4053 4052 4051 +3 2441 6982 2529 +3 1059 1102 1101 +3 5256 7058 4067 +3 5257 5595 236 +3 3231 6617 5258 +3 2010 6401 7567 +3 5260 25 5259 +3 7316 5504 5851 +3 592 640 5261 +3 3427 211 6057 +3 1080 1161 6625 +3 2928 2926 2925 +3 3451 5262 5263 +3 2987 5264 7206 +3 5265 3739 7922 +3 793 5266 1812 +3 5267 7574 4815 +3 3360 5268 7401 +3 3964 3920 3919 +3 2881 5269 7555 +3 306 308 310 +3 3758 3709 5484 +3 3460 2493 5270 +3 5003 780 6655 +3 492 494 3432 +3 1786 8198 5725 +3 5271 3292 6688 +3 2955 2894 4722 +3 3326 5702 3018 +3 1773 6679 3248 +3 5806 5272 6106 +3 2976 6167 505 +3 2828 5087 2019 +3 4092 2370 4547 +3 7489 1341 5273 +3 5274 5979 7298 +3 5275 4224 6362 +3 898 5276 3920 +3 7025 7893 4474 +3 5824 5277 5278 +3 696 5279 6027 +3 7154 4575 6900 +3 7014 6339 6177 +3 5787 3669 3668 +3 1571 1534 5280 +3 5767 5843 3160 +3 5931 842 5281 +3 4978 5282 4851 +3 5283 5599 6547 +3 1019 1057 7702 +3 4273 7276 2164 +3 5963 5523 5284 +3 6546 5285 3568 +3 1633 5286 5627 +3 5287 1861 1918 +3 6216 5288 1234 +3 4767 5016 1193 +3 1569 5289 1568 +3 5258 6616 1561 +3 7667 1672 6497 +3 5170 7579 1896 +3 2231 5290 1625 +3 306 310 6911 +3 3462 7237 6666 +3 2605 5911 2647 +3 6237 5697 5291 +3 4476 5855 5292 +3 5293 2784 1152 +3 7676 2448 5786 +3 1212 1265 3280 +3 398 338 4664 +3 2485 4340 7761 +3 6827 4597 4595 +3 5394 6250 2240 +3 5294 6375 7997 +3 1072 1116 7500 +3 5295 819 6642 +3 5296 98 3616 +3 8160 1190 4074 +3 1109 6055 2277 +3 1465 2004 6748 +3 5769 1605 1650 +3 633 5297 700 +3 716 7219 4522 +3 7733 6091 3040 +3 7977 593 7473 +3 1135 5298 6246 +3 2876 5352 7794 +3 2781 4143 2832 +3 1872 5299 3453 +3 4395 1490 5322 +3 2990 5401 5113 +3 1580 6567 4129 +3 7239 5300 7093 +3 1279 3746 3748 +3 5301 5287 1916 +3 1764 6638 6850 +3 7059 693 3964 +3 1867 2289 5302 +3 6834 5275 6362 +3 5304 3579 5303 +3 4391 987 5305 +3 3491 5306 3488 +3 5307 6399 7014 +3 7894 5308 5309 +3 1110 4289 5310 +3 5312 3542 5311 +3 6723 3448 5313 +3 2898 4894 4893 +3 8160 6260 1190 +3 5995 7249 1536 +3 5344 2465 5314 +3 269 3676 3689 +3 4703 5315 5316 +3 5317 1194 4924 +3 6154 4780 7925 +3 4205 2404 4206 +3 5318 5861 4803 +3 5320 7422 5319 +3 7128 5779 5321 +3 4630 5878 5322 +3 5519 5323 3185 +3 6905 6530 4738 +3 7118 4893 7778 +3 1028 5324 930 +3 6447 6295 2775 +3 2068 5325 5326 +3 4321 6702 4490 +3 2875 2876 7407 +3 5643 5303 1229 +3 2526 2568 5327 +3 5328 7087 2481 +3 5329 2616 7987 +3 5330 2727 6887 +3 5293 5331 7594 +3 4730 6436 5332 +3 5976 2471 2517 +3 7140 4980 4900 +3 5502 4416 2373 +3 7207 3719 3718 +3 3011 5434 4308 +3 7987 8130 3877 +3 5853 5333 1733 +3 2461 5334 5335 +3 3286 2084 6039 +3 296 5336 407 +3 2739 6779 2925 +3 3086 6053 5337 +3 5338 5885 2129 +3 247 5339 568 +3 7791 2642 5340 +3 5341 2841 2840 +3 5342 6555 4281 +3 1272 6574 5343 +3 8069 5344 2508 +3 5346 5345 3277 +3 3821 7323 4954 +3 795 834 858 +3 5023 5347 1807 +3 7088 728 5348 +3 6419 5691 7390 +3 5349 5584 7335 +3 1251 5018 4070 +3 871 6922 5380 +3 1221 796 1219 +3 6422 5709 896 +3 3778 6898 1623 +3 1827 5350 1778 +3 437 4578 5351 +3 5352 2933 7794 +3 6818 6819 5353 +3 1121 5354 1199 +3 5269 2940 6732 +3 2514 4418 6196 +3 4677 4785 4784 +3 7025 4559 7893 +3 5355 2538 4220 +3 5356 1872 3453 +3 1773 5357 6679 +3 5358 6088 3021 +3 4291 5359 5265 +3 5360 1895 5186 +3 5361 606 628 +3 5363 5362 2136 +3 2941 6073 2998 +3 5365 597 5364 +3 1341 3581 1384 +3 2558 4648 5366 +3 2863 3296 2975 +3 5368 5367 669 +3 2052 2054 2145 +3 5569 3167 5369 +3 2359 5370 2457 +3 5371 2074 4854 +3 5439 5384 6394 +3 3995 6738 3998 +3 7948 3334 2660 +3 1355 4918 5188 +3 2710 2709 2708 +3 5865 867 865 +3 4029 4005 6615 +3 5613 3076 3074 +3 1844 1845 1950 +3 1484 4281 1583 +3 1991 5372 5373 +3 7097 4933 6320 +3 7915 2484 2434 +3 2824 3696 6824 +3 3462 7021 2663 +3 5374 134 3486 +3 5375 6589 5964 +3 3140 3141 5376 +3 6542 5820 3318 +3 3925 5377 5063 +3 2216 2260 5378 +3 5379 7985 2695 +3 5974 5012 1507 +3 1339 1769 3351 +3 5120 6111 5161 +3 6011 873 5380 +3 5381 818 7888 +3 672 5382 4940 +3 6716 2529 6776 +3 1224 6199 1222 +3 5383 3891 3890 +3 2005 2085 2046 +3 7486 2303 1577 +3 5384 2814 2875 +3 6644 1994 7322 +3 2007 6132 5385 +3 6942 3427 252 +3 5488 5386 1217 +3 1383 5387 3534 +3 4663 2528 5811 +3 2846 2960 6992 +3 5388 3805 3902 +3 5300 5389 7093 +3 33 88 90 +3 3057 3149 3158 +3 2597 2637 2635 +3 5391 1673 5390 +3 6068 2830 5392 +3 3459 6820 4793 +3 784 3330 824 +3 6460 4463 2611 +3 2813 4211 2745 +3 2957 6313 5393 +3 5241 7210 6515 +3 2150 7659 6945 +3 4667 4666 338 +3 5395 6790 5394 +3 3241 5396 5763 +3 3268 375 6793 +3 5314 2510 2509 +3 3846 7973 4581 +3 7631 4863 7438 +3 1914 2003 8197 +3 507 6145 7109 +3 1521 1523 3396 +3 5397 4534 1657 +3 6369 2930 5398 +3 1671 1760 5399 +3 5297 4385 5400 +3 5598 5685 7144 +3 5401 2932 2991 +3 459 193 5402 +3 6679 1859 3249 +3 5403 5409 2698 +3 3037 2486 6456 +3 5404 3608 5589 +3 7267 1391 1476 +3 4734 5405 5466 +3 1018 5897 1096 +3 5872 8143 5406 +3 7737 2756 2882 +3 5408 4124 5407 +3 1555 6205 2497 +3 5898 2240 5409 +3 5410 3827 5573 +3 1284 4288 4286 +3 8016 522 4029 +3 3471 4988 5411 +3 7705 3093 3111 +3 4994 6166 5412 +3 7452 2515 5413 +3 1459 5941 1458 +3 4533 6580 5414 +3 5388 3902 3904 +3 5052 6482 7168 +3 4175 4176 5741 +3 6682 4152 6705 +3 7056 4479 4477 +3 4382 3785 5664 +3 1722 1817 5415 +3 6342 5416 1812 +3 7498 1029 4874 +3 8078 2759 4114 +3 6599 5417 5418 +3 5234 6667 7941 +3 5419 6253 7067 +3 1203 3447 4329 +3 5420 1705 6634 +3 1313 5421 1397 +3 2279 2278 3316 +3 2930 2987 7206 +3 5422 458 111 +3 5424 7566 5423 +3 6344 5425 7314 +3 5107 5426 4571 +3 5037 5427 7467 +3 7533 1290 5428 +3 2648 5429 2704 +3 7358 909 1137 +3 5430 7857 6319 +3 5387 1301 5431 +3 3363 5189 5432 +3 4825 4817 4818 +3 5372 7318 5373 +3 5433 7383 3517 +3 8187 4982 5434 +3 5435 6809 1418 +3 5436 6794 5093 +3 5437 2828 6938 +3 7929 3054 5438 +3 8039 2747 5439 +3 7003 6113 4536 +3 4371 571 4370 +3 7639 2734 5440 +3 3332 5441 6652 +3 5696 7287 989 +3 7119 5442 6343 +3 5443 3960 5644 +3 3886 6551 3858 +3 5079 312 311 +3 2645 6054 5556 +3 3787 8184 3786 +3 5444 5853 3283 +3 3776 5445 3774 +3 7629 1432 5446 +3 2494 5447 6991 +3 2548 3701 3699 +3 5448 2614 7955 +3 5430 6319 7092 +3 3790 5449 4675 +3 6753 1392 5450 +3 946 7052 4516 +3 7744 7576 5451 +3 5452 3879 2831 +3 5453 7193 68 +3 5454 463 5503 +3 1818 8013 1852 +3 7483 3737 2880 +3 5455 622 674 +3 574 5456 530 +3 681 359 425 +3 5457 5041 5340 +3 2973 3221 2916 +3 5458 173 172 +3 4660 5459 7000 +3 1008 5460 1093 +3 1403 4846 8071 +3 1982 5461 5581 +3 305 420 419 +3 5606 38 5462 +3 1920 5221 3513 +3 3959 3843 3823 +3 5746 1539 7655 +3 3647 2745 4212 +3 3071 5463 6924 +3 6172 5660 4932 +3 5465 5464 847 +3 1673 1718 5390 +3 6337 7056 2128 +3 2977 3296 3294 +3 3504 3573 914 +3 7714 6126 5666 +3 7255 2963 1696 +3 5170 5466 7579 +3 5629 2623 2622 +3 5312 5467 4757 +3 990 1041 6070 +3 1249 5513 7430 +3 1906 1907 1996 +3 7809 1097 5468 +3 5469 7465 4356 +3 2969 5470 7869 +3 1697 3732 5471 +3 5473 6619 5472 +3 4445 1271 1270 +3 2215 5474 5703 +3 1614 1752 5475 +3 4987 5476 4695 +3 6601 3671 5477 +3 6122 1762 5478 +3 729 767 6725 +3 4751 3171 3170 +3 1141 5479 7310 +3 5034 4129 4128 +3 5308 3158 5309 +3 6358 5480 6167 +3 374 3267 3234 +3 2426 7353 2522 +3 5482 17 5481 +3 375 3268 3269 +3 1832 6185 1882 +3 1081 1080 1079 +3 4117 4118 5464 +3 904 5483 5073 +3 2882 2940 5269 +3 5377 3864 3867 +3 1886 1887 5484 +3 7691 7994 5485 +3 6766 5749 7718 +3 5773 2185 5486 +3 5487 7842 5242 +3 6520 5488 5489 +3 5490 6348 703 +3 7222 3855 5491 +3 5512 3011 5492 +3 7038 4512 6389 +3 6830 2055 2096 +3 7021 6604 2663 +3 5752 1173 6246 +3 6351 5493 1201 +3 4681 7981 5494 +3 5495 5303 5643 +3 5727 6856 5496 +3 1164 5396 3278 +3 5498 608 5497 +3 7625 4293 5499 +3 4300 4301 4674 +3 5290 7442 1670 +3 4403 5500 6198 +3 2210 5501 5502 +3 228 2351 5110 +3 3774 2999 3812 +3 7688 3008 4302 +3 5503 4174 3893 +3 7433 5001 667 +3 4840 4839 5967 +3 5504 5492 7239 +3 5505 5909 5298 +3 3418 6810 2867 +3 5222 4468 4735 +3 2566 2567 5506 +3 5508 3475 5507 +3 6804 8098 1740 +3 5768 5169 6972 +3 3940 3901 3900 +3 3038 1061 1060 +3 1323 1324 5900 +3 694 695 3973 +3 2072 2112 2682 +3 5127 3133 5509 +3 5525 5510 7150 +3 6979 1262 4507 +3 1485 4016 5511 +3 7752 2966 5512 +3 5513 7900 7430 +3 5399 1811 1809 +3 5514 5506 2607 +3 4863 7631 1758 +3 188 4668 534 +3 3055 7766 6428 +3 5515 6753 1345 +3 2458 2502 2501 +3 5516 4276 2983 +3 3811 6292 3810 +3 1594 3032 5517 +3 5075 1492 7806 +3 2268 7573 7911 +3 4157 2615 4156 +3 6331 2824 5518 +3 5275 6834 244 +3 1985 4412 1986 +3 6865 5323 5519 +3 5520 450 7560 +3 5521 1256 1288 +3 5133 1156 7929 +3 1408 5522 6341 +3 5523 4746 4772 +3 3476 42 5587 +3 2960 2901 5524 +3 4672 4891 6482 +3 7402 4044 4045 +3 5526 6651 5525 +3 4959 4956 1253 +3 3145 5527 4115 +3 5724 7892 6064 +3 599 598 596 +3 3319 2919 4860 +3 5528 4518 829 +3 5529 6354 2731 +3 5530 6191 3907 +3 5531 7523 2005 +3 1921 3514 1920 +3 5532 5485 1788 +3 6954 4292 5533 +3 1471 3543 7328 +3 3241 5763 5534 +3 3082 3084 3042 +3 3401 4520 7758 +3 6039 6582 5535 +3 6804 5536 8098 +3 5878 5537 3856 +3 5538 4053 6838 +3 3201 6669 5539 +3 1234 5515 5540 +3 6162 2108 1981 +3 20 21 43 +3 1311 1350 3747 +3 5541 1815 1850 +3 5543 5542 5123 +3 2614 3178 5068 +3 4766 5015 5544 +3 4679 5545 4821 +3 1869 1962 5546 +3 3369 5547 7540 +3 5548 4912 1573 +3 683 6896 1367 +3 5549 435 7491 +3 4918 4920 4919 +3 8053 3519 5550 +3 5551 836 6879 +3 2602 8173 7791 +3 4719 5552 5553 +3 2082 6816 5554 +3 5555 2886 4102 +3 4866 1624 6539 +3 8225 4992 4989 +3 5556 2852 6710 +3 685 5557 8125 +3 1264 1330 1331 +3 7812 4389 2511 +3 5559 5558 5437 +3 946 4516 4541 +3 960 961 3387 +3 7889 1780 8219 +3 1787 1832 8198 +3 768 5560 5931 +3 6923 1768 3167 +3 5561 7371 5069 +3 2096 3060 6219 +3 2674 2757 2821 +3 3834 3835 6501 +3 4013 5562 7215 +3 2456 2458 2545 +3 5474 2212 5703 +3 6293 2857 2855 +3 1492 1552 7806 +3 3210 3169 5563 +3 5564 5735 8090 +3 608 8153 5497 +3 37 65 64 +3 3409 2089 3410 +3 1701 5565 1792 +3 5566 6438 3892 +3 5567 2758 6093 +3 5559 5568 5558 +3 2536 7830 5143 +3 2653 7476 2710 +3 902 6875 5309 +3 6752 1400 2771 +3 1978 3708 2062 +3 3833 5469 4356 +3 232 5776 273 +3 1231 1232 4819 +3 3969 1188 3971 +3 5569 6676 3070 +3 5570 7045 2798 +3 3638 5687 3588 +3 4990 4834 5571 +3 5572 4278 1662 +3 5619 5410 5573 +3 4384 2213 4386 +3 5306 5574 5508 +3 8191 8133 5575 +3 7037 5576 2703 +3 7508 5577 7709 +3 7713 6883 5578 +3 6454 4446 7417 +3 6734 6499 5187 +3 1703 5579 3714 +3 4398 3124 1866 +3 3525 7815 5593 +3 5479 1175 1233 +3 5581 1939 5580 +3 4196 5582 3225 +3 355 421 353 +3 5583 3600 2403 +3 2589 2672 5584 +3 7406 5842 3913 +3 3631 7257 7974 +3 4504 6420 1417 +3 3212 3366 2038 +3 6657 8210 2379 +3 5022 5047 5585 +3 5330 6887 5586 +3 5588 3476 5587 +3 6105 3238 3237 +3 5589 7361 3564 +3 7906 6981 1033 +3 8120 7913 7797 +3 1793 1836 1885 +3 5591 5590 7757 +3 3704 3761 7696 +3 685 5592 5593 +3 1181 1238 1180 +3 5594 3404 6252 +3 3260 6688 6971 +3 5595 237 521 +3 4600 4602 4689 +3 6987 655 6520 +3 1608 1609 5596 +3 8172 4894 2797 +3 7806 1552 5597 +3 1077 1160 5354 +3 6446 5598 8174 +3 6547 5599 5600 +3 5601 5830 4420 +3 5949 5986 5602 +3 6765 5603 2694 +3 5604 7214 496 +3 7843 6098 2943 +3 1788 5485 5605 +3 5606 0 468 +3 4837 5607 7297 +3 6787 5608 3916 +3 4604 5658 7263 +3 974 7702 7796 +3 5609 7927 6618 +3 1993 8021 2078 +3 5610 5060 6741 +3 5432 2295 5611 +3 7449 5565 1701 +3 2931 3164 4213 +3 7540 2660 6934 +3 4231 5612 6733 +3 5613 7290 3130 +3 5614 692 7113 +3 5295 6642 891 +3 5615 2733 7790 +3 6857 5616 4360 +3 5617 3642 3597 +3 2785 2838 5618 +3 959 960 7790 +3 646 4523 647 +3 1203 4329 5747 +3 3960 5619 3824 +3 4137 6938 5580 +3 3554 5620 3509 +3 7064 3925 5063 +3 5621 3722 3745 +3 6262 7150 5094 +3 4978 4977 5282 +3 6626 5622 1261 +3 570 3483 210 +3 4220 3556 5623 +3 4099 1639 3399 +3 3366 2179 3132 +3 5598 7144 5624 +3 5625 1082 1162 +3 3308 5626 5627 +3 1237 7600 5628 +3 2580 5629 2578 +3 6712 2713 2715 +3 7107 5630 6423 +3 2539 5631 2621 +3 6041 5632 6346 +3 7859 8165 5633 +3 6623 5634 6055 +3 5635 6876 4660 +3 610 697 7010 +3 337 7319 5059 +3 1770 6966 4286 +3 725 656 2202 +3 7743 1549 1486 +3 4708 5636 4709 +3 904 951 947 +3 5637 2908 2905 +3 799 800 835 +3 377 378 4353 +3 5638 7240 1063 +3 1957 5639 1956 +3 7323 3832 5640 +3 5642 2100 5641 +3 5495 5643 3522 +3 2602 2643 8173 +3 8064 4933 7097 +3 522 5644 4004 +3 2651 3041 2706 +3 218 4201 5645 +3 4508 5646 2247 +3 1803 1802 5647 +3 4500 2320 2257 +3 5648 2626 2584 +3 4939 825 5649 +3 5651 3194 5650 +3 4510 5652 4507 +3 5558 2208 6322 +3 1200 7533 5428 +3 5965 5540 1344 +3 3782 8196 3880 +3 7617 889 5653 +3 2329 5654 6874 +3 7953 1618 5757 +3 6926 5102 5655 +3 250 5656 5657 +3 4690 4800 5658 +3 4642 1895 1896 +3 5659 3951 3999 +3 4884 5660 4934 +3 2302 2355 5781 +3 6603 6705 5661 +3 6454 4305 4446 +3 2482 3899 2568 +3 5093 5662 3023 +3 7424 6607 4111 +3 5663 3955 7818 +3 8012 6598 4481 +3 239 279 303 +3 5664 3740 3726 +3 6082 1742 5665 +3 1309 7714 5666 +3 7486 7325 2303 +3 5667 5191 4934 +3 650 7294 3186 +3 6489 4721 5668 +3 5669 5661 2948 +3 5594 1870 7044 +3 2470 2515 7452 +3 5164 4078 5031 +3 5470 5670 5671 +3 5672 4743 742 +3 5629 5673 6892 +3 5689 6881 5642 +3 5674 3815 3841 +3 5291 5675 1030 +3 7662 5865 6829 +3 3080 3040 2527 +3 924 5181 1022 +3 6355 1628 1627 +3 4941 4882 4881 +3 866 981 5181 +3 5263 5299 5676 +3 2056 7866 6517 +3 3409 7253 3408 +3 7792 7151 4301 +3 1227 8183 5677 +3 4127 5034 5678 +3 6652 5441 5679 +3 5680 4104 6869 +3 5681 2064 2161 +3 2630 8157 3700 +3 6284 4612 4614 +3 3649 5682 7361 +3 5684 7313 5683 +3 5685 4235 4357 +3 7661 181 217 +3 2813 2874 4211 +3 6794 5662 5093 +3 4487 5197 4486 +3 925 869 8224 +3 5166 5444 6868 +3 7349 5679 4971 +3 7413 4364 7827 +3 5954 6148 6958 +3 1688 1776 7348 +3 1699 1748 1785 +3 2044 2046 3341 +3 5516 5100 5686 +3 5687 3590 3588 +3 29 82 5688 +3 4330 7781 2186 +3 4502 5689 5690 +3 5692 1134 5691 +3 5693 6099 6980 +3 5694 3987 3985 +3 1301 3533 5431 +3 5382 5695 749 +3 3261 5696 5697 +3 8067 5698 1225 +3 23 5259 77 +3 1622 5699 5700 +3 6787 7301 7146 +3 942 1036 6819 +3 5701 4610 5238 +3 4641 3018 5702 +3 2215 5703 2110 +3 6693 3741 5704 +3 7322 7300 4748 +3 5033 7707 6657 +3 426 427 4217 +3 5988 3510 2138 +3 5705 7623 5549 +3 3229 6947 560 +3 5706 5994 1070 +3 5707 1460 3271 +3 4665 4664 400 +3 8088 5826 5708 +3 4862 7365 7785 +3 6312 7173 2604 +3 442 4238 4236 +3 2145 5395 5394 +3 5709 6792 7224 +3 3242 5710 5711 +3 2117 2173 2222 +3 4633 8022 5712 +3 7655 1574 5713 +3 2269 2385 5714 +3 5715 4914 1757 +3 4489 4490 6029 +3 5717 5716 6028 +3 338 5718 339 +3 1808 4909 3332 +3 916 4187 5719 +3 6965 684 5720 +3 2248 5069 5721 +3 5723 8003 5722 +3 1376 1377 1464 +3 2832 4143 2371 +3 1422 7330 3231 +3 5725 7892 5724 +3 367 5726 5657 +3 199 5727 279 +3 3276 5728 5729 +3 5033 2326 5730 +3 6976 5824 5731 +3 211 6929 3375 +3 5173 965 5732 +3 229 6570 469 +3 7279 1351 7861 +3 2235 5733 7408 +3 4354 4591 5734 +3 5735 595 594 +3 5736 1910 1851 +3 7416 5737 7533 +3 2103 2156 2155 +3 5738 5841 3317 +3 4386 931 5739 +3 3414 5440 6089 +3 5077 5740 8004 +3 487 4230 5741 +3 3407 1919 6210 +3 2338 6264 3215 +3 2023 7015 2113 +3 6154 5742 5055 +3 5743 4119 928 +3 7957 2592 4125 +3 2617 6316 5744 +3 1622 2345 5699 +3 4292 2952 5533 +3 5745 4309 3013 +3 7461 1431 5746 +3 1261 1203 5747 +3 5748 2183 2298 +3 6767 2687 5749 +3 5750 3123 6232 +3 7382 5478 1814 +3 4845 3870 5751 +3 5752 5908 6994 +3 5753 3089 3049 +3 3207 1772 8028 +3 5625 1162 1161 +3 1043 5144 4513 +3 3659 3650 3649 +3 2620 6025 2740 +3 1992 5754 5942 +3 6458 2889 4265 +3 1160 5737 7416 +3 4884 5191 4883 +3 5755 5615 7789 +3 5756 1176 1276 +3 1567 3448 2961 +3 5757 1713 4279 +3 5759 6216 5758 +3 2015 5760 5136 +3 5116 718 5761 +3 7263 4824 5762 +3 5763 3279 3242 +3 1206 6370 1292 +3 4540 5764 4515 +3 6977 1449 6269 +3 4024 4023 5833 +3 7762 76 7831 +3 5975 5765 5562 +3 3069 3030 3068 +3 1590 5766 4706 +3 3193 5767 3192 +3 3991 3992 3944 +3 272 344 5768 +3 8073 7426 2608 +3 5280 5769 1651 +3 5770 7068 5193 +3 5565 3889 1792 +3 5771 6666 5398 +3 2322 6886 2513 +3 6254 1169 1129 +3 6368 22 8 +3 1135 5772 1136 +3 132 5838 4224 +3 1135 4968 1134 +3 4318 4550 4317 +3 2730 5773 2300 +3 7045 6115 2798 +3 5774 6227 4088 +3 5776 5775 5828 +3 2400 2492 2399 +3 655 6290 5488 +3 2877 2878 5352 +3 5628 2432 5777 +3 1654 7855 7125 +3 6610 8065 1463 +3 5778 8084 3272 +3 5321 5779 971 +3 5111 5110 2351 +3 4625 7897 5780 +3 6201 2302 5781 +3 5804 5782 4812 +3 6862 5783 2547 +3 3587 3638 1826 +3 5407 4124 6485 +3 6341 5283 5784 +3 4070 5018 5785 +3 1700 7710 7691 +3 7676 5786 6596 +3 4824 4818 6125 +3 6732 3670 5787 +3 5788 5302 1822 +3 5448 7092 5789 +3 5268 4058 2292 +3 7340 4833 4832 +3 4717 335 5790 +3 7360 957 3342 +3 4276 5791 2983 +3 5174 6092 1004 +3 5744 7597 3802 +3 5792 5915 4556 +3 7735 4818 4817 +3 5750 6232 5793 +3 5814 5794 6755 +3 1494 5784 5968 +3 2477 2478 2566 +3 1712 5795 5100 +3 7993 1347 6961 +3 8172 4895 4894 +3 5797 7663 5796 +3 3259 5812 2717 +3 5798 3292 5271 +3 4233 4235 5685 +3 5989 5799 2561 +3 6832 5800 5801 +3 1353 1318 6079 +3 5802 2110 5703 +3 2535 5774 4088 +3 5659 5803 7231 +3 5238 5782 5804 +3 5806 5805 5272 +3 5808 5807 7976 +3 4530 624 623 +3 995 3021 6522 +3 7689 5809 801 +3 2416 7685 3766 +3 2757 5518 4006 +3 717 716 5810 +3 5543 3079 7007 +3 5812 4663 5811 +3 3299 3267 5813 +3 5101 5084 5814 +3 1291 3195 1124 +3 5816 5747 5815 +3 5818 2473 5817 +3 3178 3179 3177 +3 6479 3966 3922 +3 5180 5819 3783 +3 6893 3318 5820 +3 3264 2863 2805 +3 5821 4079 4056 +3 5649 7171 3330 +3 2428 2525 2478 +3 5632 711 6844 +3 5823 1281 5822 +3 5853 1733 3283 +3 7479 6365 2746 +3 5825 5824 3531 +3 1724 6209 1763 +3 4941 4942 4882 +3 5826 5603 4724 +3 6921 2918 3329 +3 2767 1446 5891 +3 5522 1496 6341 +3 2588 7404 5827 +3 5828 275 347 +3 3216 4432 189 +3 5273 3535 5431 +3 1393 5526 6262 +3 5829 6279 7030 +3 3998 4032 7563 +3 2859 4568 4570 +3 2851 7572 2964 +3 6610 1463 5830 +3 5831 4868 6585 +3 4110 5832 2173 +3 58 5833 4021 +3 4595 4597 4686 +3 2873 2931 7463 +3 4589 5834 2655 +3 7130 1777 5835 +3 3357 5206 5836 +3 3647 4212 3648 +3 3359 5837 2289 +3 2032 2127 2125 +3 3254 2714 6590 +3 5214 5838 3615 +3 2396 5839 5840 +3 5861 4805 4803 +3 2394 6754 5841 +3 5843 2254 5842 +3 4826 7517 7047 +3 6521 5489 5844 +3 1011 1365 6761 +3 8175 3443 4936 +3 5846 5845 2646 +3 5400 4385 4388 +3 3971 5847 5823 +3 5848 3708 1978 +3 5849 6109 546 +3 320 500 5850 +3 5851 4789 5545 +3 4724 5708 5826 +3 5853 5852 1774 +3 3181 6730 5854 +3 7772 5855 4339 +3 1966 5856 7152 +3 142 178 176 +3 6078 4297 5857 +3 3620 6546 3568 +3 5858 2171 6335 +3 6189 7956 1901 +3 5860 5859 7610 +3 4141 1920 3512 +3 5861 8185 4805 +3 7961 5026 5862 +3 2544 2543 2541 +3 2202 5124 5809 +3 3063 3143 3142 +3 5098 2453 8107 +3 4464 4463 4566 +3 7324 5863 6763 +3 2245 4072 7085 +3 408 472 473 +3 7487 927 5864 +3 5866 8230 5865 +3 5867 8073 2609 +3 1541 1542 2895 +3 524 3688 6536 +3 140 175 3426 +3 779 743 5868 +3 7066 6861 3059 +3 4215 4216 6863 +3 5869 8103 7694 +3 5871 1506 5870 +3 5872 3077 34 +3 8191 7844 1116 +3 7650 3777 5873 +3 590 7234 5874 +3 1036 1083 1037 +3 5875 8131 671 +3 5876 5041 2517 +3 6643 5877 8116 +3 4629 4631 5878 +3 5279 696 5265 +3 5112 3551 5879 +3 8024 7101 5880 +3 1399 5881 5678 +3 3324 326 1958 +3 4362 4611 7363 +3 3984 3898 7020 +3 4096 3402 5882 +3 8211 853 6951 +3 5883 2839 7531 +3 8081 5884 1174 +3 987 4624 5305 +3 2129 5885 7759 +3 2413 7898 6862 +3 5886 7626 2004 +3 5333 1774 7334 +3 1480 1482 1543 +3 6015 366 5887 +3 5889 6951 5888 +3 7354 1475 1474 +3 6664 5378 2324 +3 1925 5220 5890 +3 3987 3990 3940 +3 4125 2676 2675 +3 1810 1845 1844 +3 2419 2466 2467 +3 3863 432 494 +3 2123 2228 2177 +3 3245 3282 7190 +3 8040 625 624 +3 31 52 53 +3 5891 6174 985 +3 5892 7008 3902 +3 915 1007 3621 +3 656 763 762 +3 4872 4953 5893 +3 5894 1928 4503 +3 5115 5366 4647 +3 1890 2276 7848 +3 1770 4286 5895 +3 6545 5896 5286 +3 5897 7796 7809 +3 337 4713 7319 +3 2193 5898 5403 +3 2533 5171 7923 +3 7491 509 5899 +3 3789 5981 7694 +3 791 3189 3187 +3 8047 3031 3030 +3 7909 5900 7175 +3 732 769 731 +3 764 5901 6150 +3 5902 7867 5118 +3 1305 5451 1342 +3 261 327 3299 +3 2581 7876 6398 +3 525 356 421 +3 3985 3987 3984 +3 1588 1625 1624 +3 1082 5903 7075 +3 4403 1665 7746 +3 2627 5827 2670 +3 5476 5904 4695 +3 1659 6747 1750 +3 3007 5048 6777 +3 5905 1008 4188 +3 2599 2837 2835 +3 5907 1965 5906 +3 2705 5801 2802 +3 5909 2207 5908 +3 4678 4679 5910 +3 5911 2704 5417 +3 1740 6544 1739 +3 7261 4749 5912 +3 5467 706 7176 +3 5913 1401 4282 +3 3173 6173 6721 +3 5260 5259 23 +3 7368 2259 5914 +3 5916 4556 5915 +3 7931 4797 4822 +3 6002 3012 2966 +3 6272 5917 4232 +3 2080 4509 7959 +3 3693 1211 1209 +3 1054 1842 5918 +3 4867 4966 4965 +3 6921 6372 2865 +3 2532 3365 4585 +3 5920 4976 5919 +3 3028 3092 3977 +3 6522 6088 6794 +3 6439 5921 5957 +3 4236 4238 4237 +3 3775 3695 7556 +3 345 1119 5922 +3 5594 7044 7525 +3 2449 5923 6242 +3 2736 1616 1546 +3 8048 4857 1989 +3 2896 5924 2957 +3 275 5925 347 +3 5926 1582 1662 +3 5335 2505 3701 +3 2742 2871 2872 +3 7247 643 5927 +3 3640 5928 3591 +3 6247 3605 2421 +3 1230 7744 1275 +3 6624 7450 834 +3 1249 5963 5513 +3 3454 5929 6241 +3 7243 4662 5930 +3 6180 5931 766 +3 5932 7721 774 +3 4087 7472 5933 +3 3551 7671 2302 +3 2803 2805 3265 +3 2665 5934 7549 +3 5935 7057 2973 +3 746 2677 745 +3 2792 5936 418 +3 2881 7555 7111 +3 4330 5937 7781 +3 533 5938 4030 +3 1111 6006 1113 +3 4702 5939 4671 +3 5940 2693 5232 +3 5941 5784 1494 +3 5942 6908 2027 +3 4801 4827 7517 +3 5943 6472 5046 +3 5944 5814 6755 +3 2640 5883 2787 +3 2090 5945 7147 +3 5946 6281 1207 +3 976 6459 5947 +3 1651 7255 1649 +3 7771 3759 5948 +3 5950 5949 7303 +3 963 5173 5174 +3 5690 2059 3788 +3 1381 5951 6711 +3 5952 5151 2613 +3 999 1371 952 +3 7353 4728 2564 +3 5954 5953 7411 +3 256 253 498 +3 2707 4346 8035 +3 5620 2403 2446 +3 3235 6423 5246 +3 2106 1581 2773 +3 5955 7689 801 +3 1766 6814 1819 +3 1645 1693 3635 +3 7437 2683 6124 +3 5957 3192 5956 +3 7098 5958 6085 +3 3822 3679 6936 +3 4799 4820 6578 +3 4283 5959 5960 +3 7068 5961 5193 +3 5959 5962 6306 +3 2935 6919 3665 +3 5513 5963 6079 +3 866 5964 981 +3 5548 1537 4912 +3 1232 5965 4819 +3 7973 3915 5966 +3 6726 3199 5070 +3 2700 2702 2823 +3 5381 7888 2069 +3 4673 5967 8205 +3 7278 5150 4591 +3 1494 5968 7415 +3 670 746 708 +3 2827 5969 8059 +3 5970 3138 3066 +3 2107 6483 4044 +3 7348 1776 1871 +3 5971 6857 7022 +3 5099 5972 2807 +3 4868 5973 2231 +3 238 8033 557 +3 1472 6983 1686 +3 4748 7300 5974 +3 5975 4014 5765 +3 491 428 3478 +3 1522 6350 6823 +3 3128 2471 5976 +3 1806 1808 3332 +3 7467 4903 2518 +3 6710 2851 5977 +3 5978 907 7232 +3 1068 1108 1154 +3 5980 6662 5979 +3 5538 4054 4053 +3 2068 5802 5325 +3 6746 3711 3972 +3 5823 5822 3927 +3 6769 5869 5981 +3 3633 6187 5982 +3 5983 2871 2743 +3 5984 3589 3592 +3 3317 5985 6782 +3 5986 4254 4264 +3 5928 3594 2051 +3 1631 4552 4550 +3 3503 5987 5264 +3 5798 3293 3292 +3 2994 7689 3385 +3 438 4584 5090 +3 6600 7090 2853 +3 4667 398 6026 +3 5671 4453 4310 +3 655 7389 6290 +3 2050 3510 5988 +3 4590 8174 7920 +3 1410 3271 1496 +3 2337 6484 2336 +3 4472 2183 2296 +3 2596 3119 2633 +3 4040 4089 6853 +3 1671 5391 1760 +3 1105 1106 4116 +3 4851 5989 5990 +3 5991 5226 946 +3 1164 1213 5396 +3 5992 884 4621 +3 4880 5868 6366 +3 6566 2120 7590 +3 5077 5167 5740 +3 5993 6227 7039 +3 1115 5994 1027 +3 5996 7201 5995 +3 2776 4137 5997 +3 1605 1653 1650 +3 3195 5998 1505 +3 6317 216 215 +3 2846 2902 2960 +3 4267 2786 2638 +3 3966 7162 3922 +3 6904 8010 5999 +3 6000 3933 3885 +3 6001 8038 27 +3 7090 2967 6002 +3 1660 6003 5420 +3 6004 7608 4454 +3 103 141 497 +3 6880 6005 8023 +3 1467 3352 6149 +3 6006 6481 1113 +3 6948 2581 2914 +3 335 337 336 +3 7455 6007 7916 +3 1137 912 965 +3 1596 1635 6008 +3 5422 84 458 +3 6690 2332 2435 +3 7140 4903 4980 +3 708 745 6009 +3 3736 6010 6011 +3 4498 4497 3135 +3 541 517 450 +3 6012 3797 3755 +3 7561 4242 6013 +3 2766 7063 1446 +3 6014 5866 7662 +3 4974 1995 8108 +3 1899 5028 1948 +3 3572 6015 6016 +3 5863 5161 6017 +3 6019 6018 2475 +3 2590 6175 2628 +3 3956 3958 3844 +3 4047 7715 4086 +3 6020 1193 5016 +3 2209 8132 4272 +3 6021 5360 5794 +3 6931 2864 4192 +3 6022 5321 6023 +3 4985 4986 4984 +3 6024 6022 6023 +3 6025 2576 2740 +3 6866 6026 397 +3 8177 7140 4900 +3 1753 1706 5475 +3 6028 6027 740 +3 5241 6515 4741 +3 4324 4486 6029 +3 5777 6030 7179 +3 6515 5699 6031 +3 2230 6032 2339 +3 7645 3459 2401 +3 1099 6033 1182 +3 7628 3006 2953 +3 6034 3946 3905 +3 2595 4035 3994 +3 7957 2548 2592 +3 1087 1048 1086 +3 7110 4136 4134 +3 5094 7150 1575 +3 5597 6035 7667 +3 3870 5585 1587 +3 5355 4220 4221 +3 6373 6298 4633 +3 7733 3040 3080 +3 2936 6275 6036 +3 6037 561 482 +3 331 330 4355 +3 6038 3437 859 +3 4865 4058 5268 +3 3719 3748 3718 +3 3286 6039 6040 +3 7473 593 6041 +3 4737 6042 1947 +3 3696 6402 6824 +3 5552 6043 1065 +3 6920 4902 6044 +3 6046 6995 6045 +3 6438 5143 7670 +3 6084 2035 6337 +3 4168 4169 6047 +3 2971 973 6048 +3 1290 1260 6049 +3 6051 6050 2806 +3 4793 6820 7908 +3 6052 2513 6886 +3 3087 6053 3100 +3 6054 7495 3953 +3 5438 2277 6055 +3 6139 2318 2368 +3 6318 668 4758 +3 3673 5477 3692 +3 5011 6784 6056 +3 3374 6057 6301 +3 3198 514 52 +3 6058 8094 7060 +3 6336 2234 2235 +3 6059 2865 6372 +3 1270 6060 1300 +3 4497 6101 6061 +3 3938 7223 3891 +3 6330 6062 2606 +3 7519 7133 5244 +3 2098 975 973 +3 4596 6063 4796 +3 6064 2013 2372 +3 1903 6065 6217 +3 7137 6395 7704 +3 47 6066 6067 +3 4139 6068 2163 +3 2415 6069 3764 +3 6378 6070 8115 +3 5297 666 4385 +3 6071 5818 5817 +3 6072 934 987 +3 6073 3694 2998 +3 7870 2557 6074 +3 1875 1925 1924 +3 7268 1933 6663 +3 7529 6075 6076 +3 5037 5036 8140 +3 6858 1781 1879 +3 6898 4965 6197 +3 7749 4191 4651 +3 3540 4407 8220 +3 6077 7799 8094 +3 1474 1475 1535 +3 5939 6078 4671 +3 4112 6347 6511 +3 1962 3455 6775 +3 6038 3438 3437 +3 7088 729 806 +3 3640 6667 5234 +3 536 297 344 +3 5284 1353 6079 +3 686 767 729 +3 2064 2163 2161 +3 1807 1806 5025 +3 1269 6080 8183 +3 1387 1686 6081 +3 818 851 7617 +3 1976 1975 6294 +3 1688 6082 1776 +3 6083 657 656 +3 6085 2035 6084 +3 7058 4068 4067 +3 6086 4638 1715 +3 2297 6416 4544 +3 4393 6087 1248 +3 3271 1460 1553 +3 7405 5662 6088 +3 3382 477 7213 +3 7452 4418 2469 +3 3414 6089 4875 +3 4273 6090 8190 +3 1359 1413 1411 +3 7404 5349 5827 +3 6538 1198 1197 +3 32 4163 7632 +3 779 5868 5172 +3 6091 3081 3040 +3 6925 613 612 +3 1004 6092 5772 +3 998 1049 997 +3 7152 1965 1964 +3 2632 5567 6093 +3 125 95 164 +3 2887 4904 6044 +3 6094 7148 5493 +3 2077 2076 6095 +3 2807 5131 3757 +3 3337 3338 7939 +3 7982 7608 4683 +3 1405 2246 6096 +3 1874 3588 3590 +3 6097 4280 4279 +3 4006 7136 6098 +3 8201 2233 2342 +3 6099 3062 7405 +3 6101 6100 4501 +3 3124 1385 1866 +3 2795 7859 4725 +3 5338 5916 7786 +3 394 6277 336 +3 2725 4859 6930 +3 6102 5258 7216 +3 4190 5651 4733 +3 7892 7159 6064 +3 3559 6674 5860 +3 6103 3608 3607 +3 2702 5556 6710 +3 7164 6962 7803 +3 5430 6104 7857 +3 6105 792 856 +3 4464 4566 4462 +3 1143 1179 7828 +3 6250 2241 2309 +3 6106 7773 6532 +3 837 3527 3529 +3 6878 7983 6107 +3 5486 2301 2349 +3 6108 3424 369 +3 3494 6109 6110 +3 7269 6111 6112 +3 6016 4988 7532 +3 7578 5733 4472 +3 7 8 21 +3 6113 7197 4521 +3 2829 6114 6068 +3 6797 3336 7948 +3 941 943 942 +3 6115 6786 2847 +3 1659 7161 6747 +3 160 5257 6116 +3 3733 6117 1074 +3 6118 3438 6151 +3 2890 4265 2889 +3 1396 5806 6106 +3 1030 5675 6119 +3 443 6127 515 +3 8017 1096 6120 +3 1450 6485 4124 +3 4019 8208 4020 +3 4219 316 361 +3 6640 1457 6973 +3 5704 7526 8036 +3 6813 3873 6121 +3 6405 877 6801 +3 6123 6122 1761 +3 1053 6259 1089 +3 6467 6228 5241 +3 6611 4899 626 +3 8084 572 3272 +3 4643 2214 6124 +3 5364 644 7247 +3 3970 3882 5377 +3 4821 4820 6125 +3 388 445 444 +3 6126 7208 1394 +3 6127 446 516 +3 5156 1111 6128 +3 5628 5777 7905 +3 4337 4474 6660 +3 6130 6129 5419 +3 6403 4581 6131 +3 6133 6132 1961 +3 6540 4731 6235 +3 3679 3680 6134 +3 5263 5262 1873 +3 6135 8219 1877 +3 3595 3525 6136 +3 5636 4708 4808 +3 4346 6731 6137 +3 6139 6138 4831 +3 1668 4741 6140 +3 5620 2494 6141 +3 328 6142 741 +3 6632 5195 5856 +3 7071 461 6143 +3 225 190 6144 +3 6793 7385 6145 +3 6147 403 6146 +3 4868 2231 6585 +3 6475 1912 6148 +3 1467 6149 1379 +3 1972 6150 6151 +3 837 6152 3527 +3 5599 6153 3454 +3 7168 4811 6154 +3 3115 7822 7637 +3 8041 6155 6156 +3 5067 6640 6973 +3 5934 391 6157 +3 6523 959 2733 +3 6158 6675 2397 +3 5560 6159 842 +3 6161 6160 2845 +3 6162 2020 5088 +3 3807 3847 2368 +3 432 5887 431 +3 6164 6163 4122 +3 4925 1118 4955 +3 6165 250 7369 +3 1681 1771 1678 +3 836 835 909 +3 4697 5058 6166 +3 6168 505 6167 +3 3337 7939 6278 +3 2062 5948 6169 +3 6170 7357 6389 +3 1296 5077 8004 +3 2735 5148 5171 +3 6961 1347 6171 +3 7620 4935 6172 +3 2207 3522 8127 +3 2230 6173 6471 +3 6756 801 5809 +3 6800 2517 5041 +3 1447 7166 6174 +3 7760 3945 3942 +3 3200 4125 6175 +3 7433 6518 5001 +3 3793 3887 3888 +3 4641 5702 4638 +3 4710 4711 6959 +3 3088 3087 6176 +3 6350 6177 7612 +3 3235 3273 6178 +3 3445 1427 3444 +3 3097 5582 6179 +3 5364 596 644 +3 7545 6180 767 +3 6638 4487 6850 +3 3126 3127 6181 +3 7098 6946 5958 +3 6039 6912 6582 +3 6182 14 25 +3 6183 8117 3500 +3 2819 2939 2938 +3 4275 6184 1943 +3 6791 2336 2391 +3 1882 6185 6186 +3 6060 1272 7202 +3 5289 6187 1568 +3 221 8034 7944 +3 8052 2938 6919 +3 5370 2410 2502 +3 6188 5152 7958 +3 4830 7697 3762 +3 7271 6189 4858 +3 6478 6190 2356 +3 2902 2901 2960 +3 6072 2511 4389 +3 8158 3907 6191 +3 3126 5793 3401 +3 6420 4506 6192 +3 6194 6193 6718 +3 3188 3157 4696 +3 5230 3634 3583 +3 7072 2743 2666 +3 6468 6195 4682 +3 7870 2514 6196 +3 4839 8205 5967 +3 5819 3868 3881 +3 4526 2106 2772 +3 1623 6197 4967 +3 5356 6239 1824 +3 1618 6198 7550 +3 8144 7934 6902 +3 6020 1252 1193 +3 8093 6199 6200 +3 7514 3683 3684 +3 6201 7002 3765 +3 6833 6202 5555 +3 1639 1687 7581 +3 6203 4616 6940 +3 7898 6204 5783 +3 6205 1676 2197 +3 5550 7155 6206 +3 4610 5318 4802 +3 4951 4876 6207 +3 1085 3278 3241 +3 5705 3110 6179 +3 4172 4174 7641 +3 766 5281 6208 +3 2868 6506 3418 +3 2197 1726 6209 +3 6334 4470 6703 +3 911 910 6975 +3 7926 3406 6210 +3 6211 2916 3220 +3 6213 1173 6212 +3 2244 2248 5721 +3 1413 1360 1412 +3 6215 3934 6214 +3 1142 5756 6216 +3 5575 5544 4767 +3 7797 7913 4691 +3 243 7732 3691 +3 618 641 4112 +3 6217 8021 1993 +3 1549 5154 1486 +3 2922 6848 2980 +3 999 952 906 +3 2479 2478 2477 +3 4838 6218 5080 +3 5395 6219 6790 +3 2417 6220 4094 +3 7468 1141 6221 +3 577 6222 3661 +3 6508 6223 2822 +3 4161 2665 6224 +3 2082 1546 6816 +3 6226 3027 6225 +3 1638 3355 6673 +3 7299 7039 6227 +3 2390 2485 4559 +3 7835 1250 7845 +3 4329 6955 1328 +3 56 8112 3197 +3 1550 4744 6228 +3 1524 5424 6229 +3 6230 4810 1069 +3 7771 3799 3759 +3 6400 6231 5202 +3 5793 6232 2275 +3 3173 6471 6173 +3 752 6233 5528 +3 4995 6234 7627 +3 2516 6235 2559 +3 4363 6236 4611 +3 2709 3335 3179 +3 890 6237 939 +3 6331 3696 2824 +3 6974 6238 1637 +3 499 371 433 +3 1971 4039 5760 +3 2631 7595 7157 +3 2177 2227 2634 +3 5483 903 5073 +3 6239 3109 3455 +3 2418 8137 6034 +3 2398 2399 2491 +3 6240 8223 6941 +3 5944 5686 5100 +3 5325 5802 2165 +3 6601 5477 6739 +3 4694 4828 4801 +3 5023 5024 6031 +3 5600 3454 6241 +3 6242 3645 2447 +3 6873 6243 4274 +3 5468 1144 1179 +3 2928 2924 2926 +3 3070 6244 1731 +3 5558 5568 2164 +3 6156 920 6245 +3 132 5296 5838 +3 4749 7261 1117 +3 5909 5752 6246 +3 6247 4271 4270 +3 5865 8230 867 +3 6249 4781 6248 +3 3576 6062 6330 +3 2240 6250 2307 +3 6251 3681 4361 +3 4049 5021 5019 +3 7306 7493 6252 +3 1441 6253 6129 +3 1051 7780 6254 +3 1321 1288 1357 +3 3305 7522 6255 +3 2108 6256 1981 +3 4496 6257 4553 +3 7359 2633 3119 +3 6258 1031 1122 +3 2488 5433 2572 +3 6259 3575 1089 +3 6303 6406 6260 +3 6566 2030 2120 +3 5509 6261 2463 +3 6262 5525 7150 +3 6263 6563 1455 +3 2392 6264 6265 +3 2489 6266 2761 +3 2894 2955 6504 +3 648 4533 5414 +3 4370 4252 4620 +3 2811 6267 2923 +3 1634 1684 3307 +3 4543 6268 4511 +3 6270 6977 6269 +3 922 6271 7391 +3 6272 5107 7120 +3 1176 8100 1277 +3 2410 2409 2459 +3 2710 7476 2804 +3 5373 6870 6273 +3 3215 6274 8129 +3 620 1466 645 +3 8002 1062 1064 +3 1873 6036 6275 +3 311 355 354 +3 1084 6276 6395 +3 6773 4127 4126 +3 6277 5790 336 +3 2727 6278 6887 +3 6279 7585 7142 +3 2425 6280 6281 +3 7157 3909 8158 +3 5155 1987 2682 +3 3939 3613 6282 +3 6284 6283 4612 +3 6286 6285 6071 +3 6287 7479 3601 +3 89 6288 88 +3 6289 3215 6264 +3 6290 7677 724 +3 544 50 145 +3 6291 8145 616 +3 3803 3869 7619 +3 112 6224 6730 +3 2220 6426 7395 +3 4674 5267 4783 +3 6292 6889 2593 +3 7367 5976 7065 +3 6838 7332 6215 +3 7291 2801 6293 +3 7450 6294 7616 +3 6295 7091 1941 +3 304 306 6911 +3 876 5743 6296 +3 459 5854 5235 +3 5985 2572 6297 +3 6028 8078 7424 +3 6298 2034 6231 +3 1398 6805 6299 +3 1462 3135 1556 +3 793 6193 6194 +3 7269 3943 6111 +3 3315 6300 8000 +3 7596 6574 6212 +3 4877 5295 891 +3 3374 6301 500 +3 6302 5331 1024 +3 3431 7942 3421 +3 2184 5773 2730 +3 6303 7571 6621 +3 5683 4999 638 +3 6304 2547 2504 +3 852 5889 5945 +3 3322 4325 4324 +3 1444 5891 985 +3 3622 6305 3574 +3 5960 5959 6306 +3 6307 4451 4794 +3 1412 4420 1497 +3 368 320 5850 +3 7595 6308 3909 +3 2255 6309 7696 +3 4267 6458 2786 +3 2985 6310 2146 +3 894 6311 990 +3 6312 2520 7173 +3 6313 5924 4984 +3 1770 6314 1316 +3 3446 1529 1530 +3 6316 6315 5250 +3 4845 7135 3870 +3 6137 6828 4567 +3 143 6680 6317 +3 6677 637 6318 +3 3274 793 1812 +3 6319 2652 2653 +3 6320 4944 6366 +3 2414 2415 6321 +3 5558 6322 5437 +3 2243 2312 6323 +3 2282 6149 6324 +3 7986 6479 6325 +3 7613 6326 7193 +3 6327 2683 7437 +3 1287 5317 6328 +3 4279 1713 4277 +3 3303 79 551 +3 5645 573 376 +3 4403 6198 5082 +3 6329 7462 5122 +3 2524 6330 4728 +3 2254 3196 7398 +3 5212 908 3344 +3 2675 6331 2673 +3 5205 6588 6158 +3 3742 4167 3744 +3 4340 4562 7761 +3 5694 3988 3987 +3 6966 6332 7174 +3 5228 1099 1182 +3 97 128 6333 +3 2387 4471 6334 +3 2219 6335 2265 +3 642 5927 7682 +3 1859 6514 3250 +3 5189 6336 2088 +3 7056 6337 4479 +3 4189 1141 7468 +3 3026 3064 6338 +3 6836 1381 6339 +3 8189 5170 4640 +3 5081 4838 5080 +3 914 6340 967 +3 1408 6341 5941 +3 6342 4374 720 +3 6343 4935 7620 +3 4844 4842 4983 +3 727 6344 4210 +3 6345 7570 4138 +3 1487 5305 4624 +3 2835 2837 7692 +3 1967 3422 2057 +3 6545 5286 1633 +3 8017 6120 1094 +3 5800 4464 4462 +3 3550 913 3524 +3 6347 6346 6722 +3 5900 1461 7175 +3 5182 5181 924 +3 7077 701 6348 +3 6349 7263 5762 +3 7014 6177 6350 +3 1078 5493 6351 +3 7605 7218 1092 +3 4759 6677 6318 +3 323 324 321 +3 5042 8172 2797 +3 5587 100 3475 +3 4163 32 6352 +3 6993 4302 7151 +3 3411 6353 2135 +3 2731 6354 2234 +3 7131 2486 2527 +3 7145 2347 5204 +3 8097 7594 6302 +3 953 952 998 +3 6153 5137 6355 +3 4217 5141 3650 +3 939 1030 6356 +3 2944 7136 3695 +3 1709 6357 1800 +3 1113 3219 1026 +3 504 6358 6808 +3 4400 6359 6360 +3 2995 8029 6361 +3 1863 6714 6942 +3 6362 3651 4222 +3 452 4245 6825 +3 3850 3804 3801 +3 5995 1536 1535 +3 4594 4576 6363 +3 4656 4669 4659 +3 1067 3925 7064 +3 7681 1779 6364 +3 8070 6365 7441 +3 3804 6740 3801 +3 5440 2347 6089 +3 4943 4880 6366 +3 6367 5228 1145 +3 6368 149 22 +3 2812 6369 7429 +3 6535 7960 6370 +3 6371 5774 3983 +3 6059 6372 2978 +3 6373 8071 1550 +3 5333 2721 6374 +3 868 6743 6375 +3 3466 3468 6376 +3 6377 4519 4517 +3 4114 6129 4113 +3 6379 6378 1038 +3 6664 2324 6380 +3 4272 8132 6381 +3 5666 1394 1348 +3 6166 4996 5412 +3 1072 7500 4626 +3 4750 4749 935 +3 1941 7606 4135 +3 6383 408 6382 +3 5681 2205 6396 +3 6697 2319 6384 +3 6385 4303 4443 +3 1347 6386 6171 +3 6849 7421 4644 +3 975 977 974 +3 6387 4012 7230 +3 1276 1277 1306 +3 6404 6388 7956 +3 6268 6170 6389 +3 2545 2501 2588 +3 7991 4856 6390 +3 6391 7440 1854 +3 4097 4098 7534 +3 7318 6392 6870 +3 6393 1640 1639 +3 2449 4208 5923 +3 4505 4506 4504 +3 6394 3537 2932 +3 208 244 6519 +3 4512 6395 6507 +3 3820 6396 7070 +3 6397 6466 5276 +3 6398 6464 2753 +3 6399 8124 6339 +3 1056 5228 6367 +3 6231 6400 8022 +3 6401 1967 2011 +3 8124 6060 7202 +3 6403 2826 6402 +3 1028 5780 1071 +3 7488 6388 6404 +3 6405 6622 877 +3 4589 2570 5834 +3 7589 2638 7832 +3 7777 3710 3304 +3 8067 7539 5698 +3 7445 1153 6406 +3 1146 7907 1187 +3 1089 1140 1090 +3 4544 7658 2298 +3 6407 6696 4043 +3 1766 4321 4320 +3 3690 6408 6409 +3 5157 7235 5634 +3 6383 6382 5218 +3 2707 8035 4344 +3 2327 6410 2424 +3 4623 1072 1487 +3 5341 2794 2841 +3 7757 2433 7112 +3 6023 917 969 +3 4027 6411 4021 +3 6412 2045 1956 +3 2689 2690 5749 +3 7041 6840 6413 +3 6415 530 6414 +3 7145 2346 6416 +3 1646 6417 7935 +3 6903 6418 3596 +3 3611 490 3610 +3 6419 5692 5691 +3 3446 5951 1426 +3 4501 6420 4548 +3 2759 1441 4114 +3 3604 6074 7312 +3 7928 7596 6212 +3 2112 2684 2682 +3 196 197 234 +3 3953 2854 2852 +3 671 7652 711 +3 3450 3451 6421 +3 786 4323 6422 +3 6423 7810 8118 +3 588 6424 586 +3 5788 1822 1823 +3 5150 7542 4592 +3 4317 6061 6425 +3 2142 1336 5119 +3 460 459 5402 +3 7395 6426 2384 +3 5679 4972 4971 +3 6872 4413 2109 +3 87 116 117 +3 6427 2642 7260 +3 2742 2743 2871 +3 3153 6428 6429 +3 1782 1830 6430 +3 6432 7776 6431 +3 2677 8123 822 +3 7979 664 6433 +3 1791 7204 1884 +3 3943 3283 6434 +3 1294 7100 4510 +3 7988 1450 4124 +3 3253 3289 3288 +3 1737 5302 5788 +3 3753 1703 3714 +3 3961 3831 3830 +3 3083 3044 7850 +3 340 6435 6510 +3 5332 6436 6427 +3 6289 2717 5811 +3 6406 1107 6260 +3 3073 6650 3072 +3 1209 6665 1263 +3 1526 1599 6437 +3 4029 5765 4030 +3 3983 2536 6438 +3 8058 3390 6855 +3 1827 3728 7362 +3 763 5720 684 +3 5926 1708 2774 +3 5683 638 637 +3 6821 4203 2304 +3 3191 6439 1123 +3 6440 2719 861 +3 2853 7090 6002 +3 6442 6441 2169 +3 6444 6443 4197 +3 704 6445 5490 +3 5609 7504 7927 +3 6446 512 5598 +3 6575 7375 6595 +3 6447 5791 6295 +3 6220 4038 6448 +3 8105 2644 2699 +3 7133 2490 5244 +3 2837 2785 2836 +3 5284 6079 5963 +3 5119 1336 7016 +3 7609 630 605 +3 6543 4015 6449 +3 6450 7064 5247 +3 3304 6728 6877 +3 704 5490 6451 +3 4344 4465 4564 +3 4381 6348 702 +3 6161 7397 4896 +3 8170 7118 2959 +3 1191 1247 6314 +3 844 6452 6453 +3 5200 6454 4304 +3 295 4260 6455 +3 6474 3037 6456 +3 5217 1559 7446 +3 6457 7104 6759 +3 6458 7475 2786 +3 1961 5546 2049 +3 6459 7391 4263 +3 1428 1268 7355 +3 4995 7627 5412 +3 4735 4468 6460 +3 8157 6403 3697 +3 300 552 6461 +3 6463 4780 6462 +3 7902 3381 3382 +3 1690 1642 5134 +3 1512 2285 2286 +3 7088 765 728 +3 7876 2583 6464 +3 3268 6793 3234 +3 2200 136 2201 +3 3163 6465 6763 +3 5329 7987 6466 +3 7599 2424 5427 +3 6467 1668 1586 +3 4982 3013 6468 +3 7518 6302 1024 +3 7162 3923 6469 +3 6250 2309 2307 +3 2151 5641 5646 +3 6137 4567 4345 +3 6470 2099 609 +3 6481 5184 3219 +3 6712 2230 6471 +3 227 5162 462 +3 6762 6178 3273 +3 1093 1092 6472 +3 5537 1491 6473 +3 3078 6474 2438 +3 6475 8182 2001 +3 6476 6624 834 +3 3734 5873 3735 +3 6477 3636 6785 +3 1066 1023 7156 +3 4204 6478 7295 +3 5247 3881 3868 +3 4705 6123 1761 +3 7783 3966 6479 +3 7521 1821 1822 +3 6877 6728 184 +3 6480 2815 2008 +3 271 3689 3677 +3 2324 2375 2686 +3 1013 4290 6481 +3 7168 6482 4811 +3 5130 3817 3816 +3 5529 2299 6354 +3 2158 4044 6483 +3 6232 3078 6484 +3 1460 1554 1553 +3 6486 6485 5881 +3 5693 3143 3022 +3 1291 5998 3195 +3 4436 4377 4293 +3 6487 7352 5149 +3 921 976 977 +3 7294 6488 3155 +3 5610 4619 4369 +3 528 485 4176 +3 2575 4923 2735 +3 6490 6489 4296 +3 6491 689 7481 +3 138 3428 175 +3 5540 1345 1344 +3 6492 6045 7024 +3 2178 7772 4339 +3 6493 5373 6273 +3 1590 1626 5766 +3 3580 6494 1273 +3 495 3431 3420 +3 6787 5103 5608 +3 8110 3842 411 +3 528 6495 485 +3 5339 523 568 +3 6411 6496 7143 +3 7442 6497 5391 +3 2586 2627 2587 +3 6498 8009 8162 +3 1010 1055 1054 +3 6499 8193 2089 +3 5197 4489 6029 +3 6500 3429 72 +3 4482 7490 6533 +3 6937 5640 6501 +3 663 6502 694 +3 5108 5426 5107 +3 434 569 3328 +3 6171 1393 1433 +3 5086 4407 3540 +3 4195 4762 4761 +3 6503 2226 2272 +3 3853 3798 6050 +3 3842 8110 7520 +3 5612 4227 6733 +3 5253 7601 3282 +3 4650 5708 6504 +3 6350 7612 6823 +3 6147 6146 4428 +3 2794 4649 2793 +3 3395 6505 7161 +3 6561 3418 6506 +3 5199 6882 1358 +3 3685 122 3687 +3 6507 6276 4514 +3 3958 3823 3844 +3 7335 6508 6548 +3 4635 1666 8141 +3 810 2002 6509 +3 463 6510 4173 +3 6841 6885 2291 +3 7936 6511 6512 +3 3699 3700 3697 +3 7024 6045 2442 +3 6513 27 8038 +3 7576 7886 1343 +3 1915 1914 6514 +3 2942 7225 3670 +3 6482 4889 4811 +3 4741 6515 4773 +3 697 610 699 +3 2649 2800 7966 +3 3800 3850 2104 +3 7513 1051 6254 +3 6516 4791 3050 +3 3060 6517 6219 +3 5001 6518 780 +3 6285 2328 5818 +3 3986 3985 3896 +3 5964 6589 980 +3 4415 2688 2687 +3 3942 5892 6528 +3 207 208 6519 +3 8227 6520 6521 +3 7007 6522 1045 +3 2949 2951 4171 +3 1820 8028 1913 +3 1628 1591 3779 +3 2678 959 6523 +3 4444 6524 4678 +3 874 6525 4071 +3 6526 2204 6407 +3 6637 8068 6527 +3 7042 4264 4254 +3 6016 6015 5887 +3 8175 4936 7950 +3 7489 5273 3533 +3 3805 3804 6528 +3 1329 6529 8065 +3 6530 1801 4738 +3 6369 5404 2930 +3 1616 1661 1615 +3 1043 5991 5144 +3 1770 1316 6966 +3 6531 5415 5255 +3 6286 4975 6285 +3 7059 5256 693 +3 4080 6106 6532 +3 2856 6293 2855 +3 6994 5908 6533 +3 1905 1906 6534 +3 7074 6535 1206 +3 120 3686 6536 +3 6700 8076 839 +3 4785 4786 6537 +3 1214 838 600 +3 4874 1158 6538 +3 4414 6124 2214 +3 1828 1827 1778 +3 5936 305 419 +3 5360 5186 4409 +3 3558 2742 2812 +3 4866 6539 7630 +3 6560 1555 5859 +3 4646 2423 6540 +3 6541 7743 1402 +3 5834 5820 6542 +3 5931 5560 842 +3 5769 1650 1651 +3 4629 1318 7350 +3 1664 6543 7953 +3 6544 1738 1636 +3 2348 2350 2492 +3 6889 6292 7801 +3 5217 1562 6545 +3 6546 4184 805 +3 438 5090 4583 +3 5968 6547 1626 +3 6219 6517 7853 +3 7265 7577 2799 +3 6548 2756 7737 +3 726 2065 6549 +3 3654 4193 2724 +3 8128 4517 6550 +3 3932 6000 3885 +3 2591 3200 6175 +3 2042 2041 3287 +3 2842 2958 5633 +3 6552 3791 6551 +3 8224 6553 6554 +3 1400 7273 6555 +3 2123 2122 2228 +3 6656 3048 6556 +3 8151 2111 2071 +3 1581 6557 1580 +3 2892 2953 2891 +3 6719 6558 651 +3 5513 6559 7900 +3 51 50 6255 +3 7279 7861 1436 +3 6674 6560 5860 +3 8139 7832 2556 +3 6561 3433 493 +3 4183 686 6899 +3 1353 6562 6563 +3 6242 2447 3600 +3 6945 7659 2243 +3 2255 7696 3761 +3 6564 6699 617 +3 1922 845 813 +3 4305 4447 4446 +3 6565 798 3340 +3 3229 560 222 +3 2029 2031 6566 +3 7720 7384 5670 +3 4129 6567 2124 +3 744 709 6568 +3 2734 7519 5204 +3 6570 7756 6569 +3 4409 5155 4410 +3 6571 96 94 +3 1775 5836 5206 +3 7506 5880 2500 +3 1694 1744 6572 +3 3712 3512 6573 +3 3323 5229 576 +3 7839 5322 3856 +3 1340 5343 6574 +3 650 719 6076 +3 6575 8113 3585 +3 4241 4360 4607 +3 560 6576 222 +3 4234 2580 4208 +3 7194 3854 5972 +3 373 5813 567 +3 218 5645 741 +3 6154 5055 4780 +3 6577 3504 3528 +3 6579 4822 6578 +3 4523 6580 5810 +3 7288 6581 1289 +3 8000 2279 6582 +3 6584 6583 4155 +3 7980 2702 2700 +3 4867 5831 6585 +3 1499 6695 7834 +3 5552 1065 5553 +3 6586 7758 4520 +3 5784 5283 6547 +3 6587 7276 4272 +3 456 4255 4376 +3 6588 2533 7380 +3 1680 6923 7699 +3 6589 5294 980 +3 6591 6590 2713 +3 6592 4316 4545 +3 6890 2652 7857 +3 6288 90 88 +3 177 6593 258 +3 7325 6594 2303 +3 5356 3109 6239 +3 5053 4147 5054 +3 2010 7567 2055 +3 7681 1828 6595 +3 5065 804 4184 +3 6565 6596 3386 +3 5812 5811 2717 +3 7128 7871 5779 +3 3419 6597 564 +3 4555 6598 4485 +3 3952 6599 6600 +3 6408 476 6601 +3 3203 1632 3204 +3 756 346 479 +3 2563 5845 5846 +3 687 6602 7545 +3 2313 2362 2361 +3 1835 7268 6663 +3 6603 5669 5969 +3 6779 6604 3463 +3 3930 8103 5869 +3 2379 6605 6606 +3 1883 1930 6185 +3 4111 6607 8153 +3 4621 5076 6608 +3 6609 3159 3146 +3 4629 7350 4631 +3 1327 6610 5601 +3 651 3184 6611 +3 3319 2808 2919 +3 6613 2016 6612 +3 7093 5389 7558 +3 5745 2969 4309 +3 5816 5815 7634 +3 6615 6614 5562 +3 1510 6616 6617 +3 6618 1409 1406 +3 4604 4690 5658 +3 6639 4121 4120 +3 6619 1104 1148 +3 6620 1709 6854 +3 7313 4999 5683 +3 451 450 5520 +3 2331 7915 2433 +3 1508 5539 6669 +3 6812 6621 5864 +3 4714 4716 7083 +3 4420 5830 1498 +3 2287 2286 2285 +3 6622 1444 4119 +3 2442 2393 6781 +3 5157 6623 1069 +3 6896 6058 6624 +3 7598 7705 3111 +3 430 319 3470 +3 7148 6625 6626 +3 6627 4152 6750 +3 5160 2493 6628 +3 6630 7267 6629 +3 4692 4801 4826 +3 1613 4050 8161 +3 8048 1989 4855 +3 7201 7249 5995 +3 5882 2552 2551 +3 134 3494 3493 +3 6597 3049 331 +3 2575 2574 4923 +3 3543 6631 1571 +3 7362 3728 6632 +3 5064 4615 4614 +3 6633 639 4999 +3 5910 4821 6125 +3 5420 6634 1797 +3 6635 670 5367 +3 3116 6636 5952 +3 2459 8068 6637 +3 5196 5197 6638 +3 6766 7718 4417 +3 6270 6269 6639 +3 6640 1407 1457 +3 2445 6641 8216 +3 891 6642 890 +3 6695 6643 7834 +3 5352 2934 2933 +3 2929 5987 3503 +3 2465 4144 4146 +3 6645 3171 6644 +3 3908 4534 5397 +3 4733 5650 5252 +3 1268 2281 7355 +3 6646 6093 2827 +3 2245 7085 6647 +3 5724 6064 1929 +3 7200 1344 1547 +3 1388 1389 6648 +3 153 112 6649 +3 3072 6650 2000 +3 5178 7179 6651 +3 3378 739 738 +3 5029 6652 6653 +3 6654 7760 3989 +3 5003 6655 5381 +3 4840 5139 6249 +3 955 6847 1001 +3 3086 6656 3107 +3 5033 6657 2326 +3 6658 7207 3717 +3 6659 5159 5278 +3 5292 4478 6660 +3 6661 7593 7259 +3 587 611 6662 +3 5436 5764 4540 +3 4368 6663 1977 +3 7590 2175 2174 +3 2166 6664 4643 +3 3189 3188 4696 +3 3024 3025 6665 +3 3462 6666 7021 +3 4178 4231 4230 +3 1730 1765 1766 +3 407 5336 465 +3 6561 5145 3418 +3 6837 6906 2951 +3 5524 5200 4304 +3 6306 5962 1280 +3 2192 7941 6667 +3 6296 928 6668 +3 3729 1697 771 +3 3561 6669 6670 +3 4642 5186 1895 +3 741 6671 328 +3 1322 6672 5135 +3 1598 6673 2287 +3 119 4020 4018 +3 3304 6877 551 +3 6674 8045 6560 +3 1189 7388 1244 +3 2925 3463 8042 +3 7380 2489 6675 +3 6676 5369 3168 +3 113 112 3181 +3 5992 6802 884 +3 5058 4807 6166 +3 2365 2367 2414 +3 3040 3081 3039 +3 5500 1714 6198 +3 2472 2519 5799 +3 7393 4288 1284 +3 1439 705 5311 +3 5085 2542 2582 +3 5684 5683 6677 +3 3300 7086 261 +3 6678 5317 1287 +3 6679 1858 1859 +3 6317 6680 216 +3 445 5971 446 +3 2848 2850 7293 +3 7334 3310 7726 +3 6681 5804 4828 +3 1777 3586 1825 +3 7359 7808 6682 +3 4188 5943 1091 +3 3805 6528 3902 +3 3701 2505 3768 +3 2446 2447 6683 +3 5908 2207 8127 +3 758 6684 6193 +3 4936 2428 2479 +3 6685 5805 5806 +3 5632 671 711 +3 4391 930 2511 +3 5605 1835 4368 +3 602 7105 838 +3 2998 3671 6686 +3 2505 3702 3768 +3 1984 5581 2020 +3 3356 6687 6274 +3 3603 3606 3602 +3 698 7611 634 +3 7999 3136 6413 +3 5506 2650 2607 +3 6689 6971 6688 +3 3920 5276 3921 +3 2331 6690 7915 +3 2369 2416 3703 +3 7443 6691 986 +3 3601 5631 2577 +3 4594 6692 4683 +3 836 909 7358 +3 6024 6023 4186 +3 631 7457 690 +3 4414 2214 2215 +3 7302 6693 7924 +3 3795 4628 6694 +3 1498 7984 6695 +3 6697 4090 6696 +3 327 291 3269 +3 6673 2288 2287 +3 5407 6485 6486 +3 6699 2769 6698 +3 3192 5767 3160 +3 3404 7403 5836 +3 3571 6700 3570 +3 3315 2132 6300 +3 6701 2638 2786 +3 6702 4324 6029 +3 2436 6334 6703 +3 786 3851 4323 +3 8170 7917 4893 +3 3786 4167 3742 +3 3778 1623 8214 +3 5209 6639 2768 +3 5237 6704 1127 +3 6706 6682 6705 +3 5686 6707 1893 +3 7345 4924 4957 +3 4166 6708 8154 +3 6709 6888 7707 +3 268 269 3675 +3 2702 6710 2823 +3 7489 1302 1341 +3 1568 6187 1601 +3 7873 3717 3718 +3 5799 2604 2561 +3 7464 5091 5090 +3 6561 5146 5145 +3 3933 3886 3858 +3 4190 8151 5651 +3 2644 2700 6786 +3 6177 1381 6711 +3 6591 6712 6713 +3 6354 4875 2234 +3 1886 5484 3709 +3 6893 2808 3319 +3 2995 2996 8029 +3 6281 7137 1208 +3 1527 7180 7566 +3 5472 6619 1148 +3 494 431 493 +3 6714 140 3426 +3 2766 6715 7063 +3 6716 6689 6688 +3 6717 3661 6724 +3 4027 4009 6496 +3 7191 4275 1943 +3 7553 5698 1267 +3 6718 7232 1369 +3 1321 1357 1356 +3 7084 5927 642 +3 1411 7512 1461 +3 2266 2330 2381 +3 6719 6611 3183 +3 2308 2406 2357 +3 2774 1708 4130 +3 6320 4933 4944 +3 4211 2873 4212 +3 2967 7875 8187 +3 6720 6161 4896 +3 3173 6721 3130 +3 8098 1867 6544 +3 3729 3730 3732 +3 6722 6844 5176 +3 6723 5550 7963 +3 7807 5597 7182 +3 3660 6724 5999 +3 6725 6208 807 +3 210 3495 8202 +3 3195 1505 6726 +3 1363 1423 7330 +3 1241 3722 5621 +3 1730 4320 4551 +3 7423 7047 4817 +3 6722 5176 6727 +3 6728 80 7053 +3 6729 1659 1658 +3 702 6348 701 +3 1807 5347 1808 +3 5854 6730 228 +3 4278 1663 1662 +3 2686 5236 2688 +3 1164 1165 1163 +3 4846 4845 5751 +3 3166 1680 7899 +3 2706 2860 6731 +3 5269 6732 7555 +3 4230 6733 4229 +3 6734 2008 2007 +3 1294 6735 7100 +3 6565 3386 798 +3 1851 6736 1953 +3 7147 5945 4398 +3 6464 2625 4359 +3 1879 5894 1927 +3 6737 1727 1764 +3 7773 1483 2736 +3 4032 6738 4100 +3 7107 652 5630 +3 3077 7514 34 +3 784 5649 3330 +3 7216 5258 1561 +3 6408 6601 6739 +3 4082 1797 4084 +3 2996 3664 8029 +3 8071 4846 4744 +3 864 978 6271 +3 1596 6008 1684 +3 3760 6740 2255 +3 6741 6926 5655 +3 286 6742 3613 +3 6743 7240 7997 +3 6305 7496 6744 +3 4545 6192 4546 +3 4002 3957 3956 +3 6843 3119 2596 +3 1556 1593 6643 +3 4727 2605 4790 +3 619 6745 673 +3 3207 1820 3208 +3 6747 7938 6746 +3 1517 3391 3390 +3 1465 6748 1511 +3 3597 6749 2191 +3 5766 6123 4705 +3 7808 6750 6682 +3 5947 7536 1057 +3 6751 6475 6148 +3 6752 7141 1400 +3 4432 5109 190 +3 7470 1346 6753 +3 6754 2530 2488 +3 1690 6421 1742 +3 805 4184 804 +3 871 4885 6922 +3 6755 7860 1946 +3 2178 4339 4525 +3 978 1021 7940 +3 6756 1935 801 +3 4425 401 4426 +3 565 3677 6757 +3 6758 7639 5440 +3 6457 6759 5465 +3 4005 522 4004 +3 6760 1700 5532 +3 6762 6761 7115 +3 3165 6763 7421 +3 3988 4041 6764 +3 2608 8079 7292 +3 2496 1623 4967 +3 1102 5473 5472 +3 6765 4729 4726 +3 7782 3315 5044 +3 6767 6766 4416 +3 369 320 368 +3 234 6768 5776 +3 2118 2224 2223 +3 3928 6769 7962 +3 2815 5546 1961 +3 979 1063 6770 +3 6771 2487 3293 +3 5950 7303 4265 +3 6847 956 1003 +3 1692 3516 3450 +3 991 1042 6772 +3 4899 6935 4898 +3 2771 4526 6773 +3 3295 3294 2864 +3 6774 334 224 +3 1962 6775 2049 +3 6716 6776 6689 +3 6720 5570 6160 +3 6778 5633 6777 +3 1880 1928 5894 +3 2741 6604 6779 +3 8104 6780 7980 +3 6782 6982 6781 +3 937 6783 6784 +3 6477 6785 4406 +3 4470 6334 4471 +3 826 828 2087 +3 2699 2644 6786 +3 6336 7408 2088 +3 5103 6787 2825 +3 2257 6788 8069 +3 7740 8207 6789 +3 5088 5087 2064 +3 4312 4313 4542 +3 6790 7853 2241 +3 6791 7025 4337 +3 7979 7030 664 +3 4323 826 6792 +3 3234 6793 7241 +3 8146 6006 929 +3 1126 3278 1046 +3 1045 6522 6794 +3 6795 6245 972 +3 453 452 517 +3 6797 6796 3336 +3 5970 6798 8168 +3 2412 6799 2413 +3 6721 6265 3174 +3 5376 1330 1263 +3 4777 6800 5457 +3 4118 6801 5464 +3 4754 884 6802 +3 5115 2516 2696 +3 5367 670 708 +3 474 4012 7215 +3 3747 1349 3748 +3 5509 3072 6261 +3 6803 1289 1256 +3 6804 5836 7403 +3 6805 5678 4128 +3 6807 1944 6806 +3 6488 6075 755 +3 5950 2891 7625 +3 3320 3329 6808 +3 5697 5696 989 +3 6735 6225 6809 +3 6692 7981 4681 +3 6796 2867 6810 +3 7267 1476 6629 +3 211 6811 6929 +3 6812 6406 6303 +3 6813 3872 7457 +3 6814 8188 8101 +3 7336 6815 4051 +3 6679 5357 1858 +3 5554 6816 1752 +3 4278 5572 4277 +3 6985 1132 6817 +3 5888 6818 1385 +3 5353 6819 1081 +3 6820 8083 6991 +3 6822 4203 6821 +3 6823 1527 5424 +3 3319 4860 4859 +3 1342 1390 1389 +3 2824 6824 3771 +3 517 6825 4243 +3 3121 751 827 +3 1188 1105 4075 +3 6826 7388 1189 +3 36 35 3684 +3 632 6130 665 +3 7115 3275 680 +3 7921 3623 6305 +3 4592 4597 6827 +3 6828 4347 7229 +3 811 6829 810 +3 5856 6830 6831 +3 7711 5508 5507 +3 2611 4464 6832 +3 6833 4101 7592 +3 4223 6834 4222 +3 6835 4065 7058 +3 5237 1878 1373 +3 5743 877 4119 +3 850 4390 4257 +3 6836 8124 7202 +3 5014 5016 5015 +3 6837 7475 6906 +3 2847 2848 2902 +3 6838 6214 6000 +3 5061 1140 3575 +3 6468 4682 4451 +3 3685 3687 6134 +3 7782 5044 2043 +3 5405 2023 6839 +3 6676 6840 6244 +3 6841 2077 6885 +3 7885 582 110 +3 6842 2189 2092 +3 4095 5882 6843 +3 6346 5632 6844 +3 4262 4261 3893 +3 1994 8054 7300 +3 4850 6920 6044 +3 2976 3485 6167 +3 6845 7302 3142 +3 7640 7864 6846 +3 7073 956 6847 +3 2980 6848 535 +3 3165 6849 6798 +3 4358 4930 4604 +3 1818 6850 8013 +3 1194 4957 4924 +3 6851 2401 5270 +3 519 4365 4248 +3 558 332 6852 +3 7401 5268 2290 +3 4038 6853 6448 +3 6620 6854 1708 +3 5636 4808 5056 +3 976 5947 1019 +3 6492 2703 5576 +3 6855 5677 4969 +3 1643 5134 1642 +3 6856 281 5496 +3 1156 4394 3054 +3 3078 2438 6484 +3 447 5616 6857 +3 1780 6858 8219 +3 3634 4199 1645 +3 3943 6868 3283 +3 1309 5666 6030 +3 3347 1131 1183 +3 4220 2538 3556 +3 4590 7919 6859 +3 5978 7232 6684 +3 2523 7883 5480 +3 896 5709 6860 +3 7344 903 1123 +3 6861 994 3020 +3 6907 6862 6304 +3 4179 4215 6863 +3 6397 5329 6466 +3 2042 3287 3252 +3 2162 6864 2259 +3 2249 1402 1454 +3 6592 7178 6865 +3 2492 2402 6851 +3 5275 209 4224 +3 6866 333 6026 +3 2647 6599 3952 +3 6867 5324 1016 +3 5166 6868 1559 +3 5680 6869 8059 +3 1591 5219 3779 +3 4768 1193 1286 +3 2004 1513 6748 +3 6870 2077 6841 +3 2193 5403 6478 +3 7766 6429 6428 +3 7550 6198 1714 +3 5650 5730 6913 +3 212 585 213 +3 298 756 345 +3 1033 6094 1078 +3 6871 5222 4735 +3 6873 1986 6872 +3 6874 7374 6019 +3 6875 7344 3773 +3 2842 5078 2896 +3 7425 2705 8018 +3 4620 6876 4700 +3 551 6877 182 +3 7040 6878 8101 +3 532 5619 3960 +3 6000 6214 3933 +3 3539 1568 1644 +3 747 784 7139 +3 6143 4256 294 +3 5342 4281 1484 +3 7510 3591 3589 +3 5814 5083 5794 +3 6879 2678 6523 +3 8142 6442 7046 +3 6881 6880 5642 +3 6882 1323 1358 +3 6884 5067 6883 +3 101 137 139 +3 6885 6095 2172 +3 4393 7431 6087 +3 6381 6052 6886 +3 7048 3589 5984 +3 5556 3953 2852 +3 160 6116 6768 +3 3792 3794 1612 +3 4775 5030 2420 +3 4332 6586 7591 +3 748 785 747 +3 3088 6176 3103 +3 5586 6887 2921 +3 7388 5408 1244 +3 7046 6442 6888 +3 6889 4582 2593 +3 4156 3262 6890 +3 2730 2731 6353 +3 4567 7229 6891 +3 6287 6892 7441 +3 6831 6830 2054 +3 6894 2726 6893 +3 2564 4728 4727 +3 5792 4483 5915 +3 5057 6895 82 +3 1367 6896 6476 +3 6898 6897 4965 +3 6899 5348 4181 +3 3976 3929 6769 +3 3240 7062 3239 +3 7154 6900 4574 +3 6701 6901 2838 +3 6 19 6902 +3 7515 7882 6903 +3 5319 3530 3523 +3 6724 3661 6904 +3 823 7660 893 +3 2797 4894 2898 +3 6137 6731 2912 +3 1666 6905 8141 +3 2951 6906 5533 +3 6907 2413 6862 +3 5754 2950 6908 +3 237 301 7648 +3 6909 4180 4181 +3 169 1711 170 +3 6524 4679 4678 +3 3116 7638 6636 +3 6498 3643 3599 +3 8186 3266 3233 +3 1131 3349 1224 +3 1198 7055 1255 +3 8194 3828 8176 +3 6910 5311 705 +3 2375 2374 5236 +3 304 6911 420 +3 3191 7742 1501 +3 6451 703 613 +3 8000 6582 6912 +3 2664 3507 7237 +3 7576 4819 7886 +3 3102 3104 3103 +3 474 7102 4012 +3 5650 6913 5252 +3 2555 4268 7640 +3 5283 1495 5599 +3 5543 5123 6550 +3 2109 2110 5802 +3 6914 2658 2657 +3 3739 4258 776 +3 471 5096 4106 +3 7302 7924 3142 +3 6861 6915 994 +3 3147 3059 7198 +3 3622 6916 7921 +3 4858 1900 6917 +3 6024 6918 804 +3 3770 7146 3772 +3 293 6147 4428 +3 6229 1526 7031 +3 3053 3015 603 +3 7644 5019 1354 +3 6537 4817 7047 +3 6919 2997 3665 +3 6920 7895 4902 +3 6721 3131 3130 +3 2647 5911 6599 +3 4860 2918 6921 +3 2282 1379 6149 +3 6011 5380 6922 +3 6883 5067 5074 +3 3333 6278 2728 +3 2973 7057 2972 +3 5167 6670 6669 +3 5209 6270 6639 +3 568 249 248 +3 4041 4042 6696 +3 6923 3206 1768 +3 6496 3962 8194 +3 1955 6924 3136 +3 6865 7178 5323 +3 427 7753 5141 +3 5120 6112 6111 +3 1439 7722 6925 +3 5079 243 312 +3 7751 4711 6926 +3 6927 6371 7223 +3 6928 7803 2818 +3 5007 7304 887 +3 498 6929 3377 +3 6526 6407 4043 +3 7032 1675 1762 +3 4402 4401 1584 +3 6931 6930 6059 +3 3793 6552 3887 +3 3877 8130 3878 +3 6933 2820 6932 +3 4586 7540 6934 +3 6935 6429 4898 +3 721 6058 6896 +3 5027 3332 6652 +3 6102 7216 3914 +3 6937 3822 6936 +3 6938 2019 5580 +3 4417 7718 2691 +3 6051 3854 7108 +3 6940 6939 4835 +3 7488 1759 6388 +3 6062 5514 2606 +3 6941 7770 88 +3 4189 8215 6916 +3 1863 6942 251 +3 6095 2117 2221 +3 1268 1267 2281 +3 4756 6802 6943 +3 6720 4896 4900 +3 1292 6370 7114 +3 6944 7242 1088 +3 2149 2150 6945 +3 1911 7283 6946 +3 6834 6362 4222 +3 6947 186 560 +3 6948 2582 2581 +3 3201 6465 3741 +3 661 7481 730 +3 6949 3707 3709 +3 4661 864 8102 +3 7570 7126 4138 +3 1013 1014 4290 +3 7799 6950 722 +3 6119 6258 1077 +3 8128 829 6377 +3 7041 6413 3136 +3 6952 8211 6951 +3 3309 6953 7825 +3 4266 6954 6906 +3 6955 6529 1329 +3 6957 539 6956 +3 3191 1123 903 +3 5027 5029 5026 +3 1392 1431 7461 +3 3075 3074 3035 +3 3250 6958 1857 +3 4710 6959 4372 +3 6960 6084 2083 +3 6444 6961 6443 +3 6962 2671 7483 +3 4703 4808 4708 +3 2956 5051 4298 +3 1653 4138 1652 +3 4322 6963 3322 +3 3980 3936 7320 +3 8137 3946 6034 +3 6965 3435 6964 +3 5516 1712 5100 +3 6966 4284 4286 +3 7234 6967 5874 +3 2532 7383 7033 +3 2381 4788 6018 +3 6110 6968 3495 +3 4841 6969 5139 +3 4589 6970 6971 +3 5936 419 418 +3 6408 6972 476 +3 5074 6973 1492 +3 2396 5121 5839 +3 5040 6974 1635 +3 3758 3798 6949 +3 6976 3441 6975 +3 6977 7393 1246 +3 6978 4031 4103 +3 6979 7959 1262 +3 5346 1047 5345 +3 7398 3162 6980 +3 3711 7938 3756 +3 6981 1035 1033 +3 2529 6982 7811 +3 1396 6106 4080 +3 3355 5206 3357 +3 1147 1148 1149 +3 6478 5403 6190 +3 3507 4220 5623 +3 5301 7726 3310 +3 1439 6925 6967 +3 3630 6983 6984 +3 1516 6985 7242 +3 2394 2443 6754 +3 6986 6627 4150 +3 2037 3034 3035 +3 6319 7857 2652 +3 7480 2065 6987 +3 7674 3150 6988 +3 6984 8138 6989 +3 3362 7253 2048 +3 2868 2923 6506 +3 2525 5867 2567 +3 444 446 6127 +3 1539 3908 1574 +3 1702 1701 6990 +3 6820 6991 7908 +3 1744 1745 1780 +3 3118 3116 5952 +3 6067 79 582 +3 6557 1582 5926 +3 2899 6992 6993 +3 5752 6994 7928 +3 2397 6675 2531 +3 833 6684 794 +3 5205 5204 5244 +3 1470 8060 1469 +3 2167 2166 7011 +3 7914 7724 5919 +3 2395 6995 5227 +3 3790 6996 2439 +3 1704 3981 4459 +3 6997 7181 7082 +3 1510 3306 6616 +3 3247 3056 5161 +3 7183 5318 4610 +3 7628 2953 6998 +3 6764 6999 6654 +3 4436 7000 7167 +3 7954 3037 6474 +3 898 692 5614 +3 2414 6321 5334 +3 3171 4765 6644 +3 7048 3590 3589 +3 6773 2772 4127 +3 1394 7208 7001 +3 7002 5781 5583 +3 6526 4043 6483 +3 7003 753 6113 +3 1570 6188 7004 +3 3655 5481 7005 +3 2540 2539 2621 +3 8069 6788 5344 +3 7506 8024 5880 +3 2251 2314 2364 +3 7791 5042 2642 +3 1763 6737 7006 +3 5543 7007 5542 +3 7973 6131 4581 +3 6362 5214 3651 +3 3944 3993 7008 +3 510 7009 4575 +3 2219 2265 2264 +3 2701 7010 5717 +3 7011 6124 2683 +3 7012 1572 1534 +3 1765 8188 6814 +3 769 5095 7013 +3 2841 2793 4653 +3 3426 211 3427 +3 5337 3419 564 +3 4093 5045 3285 +3 5307 7014 1380 +3 7015 2073 2113 +3 7017 7016 5886 +3 6172 4935 5660 +3 3137 3138 7018 +3 7019 6363 4593 +3 6567 1548 2124 +3 3853 3897 7020 +3 7021 5771 2870 +3 7495 3952 3953 +3 7645 2401 2353 +3 6433 663 4068 +3 516 7022 8121 +3 5240 1847 7023 +3 6241 5929 1675 +3 1565 1512 6238 +3 3174 6265 6264 +3 860 6918 5719 +3 6492 7024 2703 +3 3209 3211 4253 +3 2785 5618 2836 +3 6284 7754 7627 +3 2174 6503 2224 +3 2390 4559 7025 +3 4206 3474 4207 +3 565 7026 230 +3 4046 1751 7027 +3 1600 1691 1692 +3 7301 2945 7146 +3 970 1010 7028 +3 5412 4996 4995 +3 3781 872 873 +3 7029 7603 849 +3 943 6379 1038 +3 3662 2081 7680 +3 7030 737 664 +3 6993 7688 4302 +3 7031 3397 1425 +3 3422 2058 2057 +3 1674 7032 6123 +3 2761 7033 5839 +3 3645 3646 6683 +3 3155 3187 7034 +3 2958 2896 2957 +3 1707 4132 7035 +3 2455 2456 7036 +3 1403 4745 4846 +3 3885 4675 5449 +3 2180 7037 2714 +3 3837 3839 3829 +3 6865 5519 4315 +3 7038 7704 4512 +3 1889 7039 7027 +3 1988 5164 1948 +3 2288 1739 1597 +3 7041 7040 3033 +3 4261 4262 7042 +3 5648 7043 2626 +3 3615 246 245 +3 7044 1869 5546 +3 6075 3236 755 +3 2946 7102 4001 +3 2603 2699 7045 +3 7046 6709 2114 +3 2550 4945 3946 +3 8195 6537 7047 +3 2684 7011 2683 +3 2936 1874 7048 +3 7705 7598 7049 +3 5983 7050 2871 +3 7051 7141 6752 +3 2087 7052 897 +3 1870 1869 7044 +3 4758 706 5467 +3 6408 6739 6409 +3 6728 7053 184 +3 7447 940 3733 +3 7582 3010 7054 +3 1550 6228 1551 +3 7055 6803 1255 +3 6731 3043 2912 +3 6077 8094 6058 +3 5292 2128 7056 +3 2862 3232 7057 +3 3213 2712 6590 +3 5946 1207 7074 +3 6835 7058 7059 +3 6624 7060 7450 +3 7061 8218 146 +3 2890 2891 5950 +3 3239 7062 947 +3 3087 5753 3419 +3 7063 1110 5209 +3 4867 6585 1588 +3 3968 1067 7064 +3 6938 2828 2019 +3 2671 6548 7737 +3 3199 5870 1506 +3 8066 6489 6490 +3 4001 474 4003 +3 565 271 3677 +3 1866 1385 6981 +3 1605 1573 6345 +3 2977 3297 3296 +3 4731 7846 7065 +3 6609 7066 3159 +3 2106 1484 2105 +3 6827 7019 4593 +3 739 7067 6457 +3 7589 8139 2787 +3 4082 5420 1797 +3 4273 8190 2209 +3 6838 6215 6214 +3 1499 7834 1592 +3 6703 4467 4468 +3 7508 4973 5577 +3 4781 4829 4832 +3 628 605 7068 +3 5912 5974 4766 +3 6005 2101 7069 +3 7070 7185 2160 +3 227 461 7071 +3 7184 2949 7738 +3 7579 7444 4642 +3 4496 1593 4495 +3 3647 3648 7072 +3 1333 858 7073 +3 1991 5373 6493 +3 2367 2415 2414 +3 6357 5106 2983 +3 7075 5946 7074 +3 7946 771 7076 +3 6445 7077 5490 +3 4041 6696 4090 +3 7135 3869 3870 +3 4584 6446 4588 +3 1021 7078 1061 +3 414 7079 7460 +3 2320 2258 5902 +3 5503 4261 5454 +3 6854 1800 4131 +3 3716 7080 3752 +3 8109 7081 2738 +3 3967 6450 3923 +3 429 430 3469 +3 4288 4289 5895 +3 2997 3667 3666 +3 4307 5504 7316 +3 7111 7555 7779 +3 893 854 6379 +3 1188 4075 7082 +3 7083 333 6866 +3 5804 4812 4814 +3 2606 5429 2648 +3 3497 1548 6360 +3 594 7248 7084 +3 6166 4807 4996 +3 6525 7675 7085 +3 7086 3301 261 +3 2149 6945 2242 +3 7087 830 900 +3 6972 412 476 +3 6899 729 7088 +3 2913 3180 7089 +3 5418 2904 7090 +3 7091 7606 1941 +3 3176 6687 7092 +3 7239 7093 4789 +3 7002 7094 3765 +3 790 948 7543 +3 2755 6928 7095 +3 3306 1596 1634 +3 2453 2498 2499 +3 2038 3172 7096 +3 5000 7097 7433 +3 5443 532 3960 +3 3411 2135 3412 +3 6736 7098 7099 +3 4092 3358 6448 +3 7100 6809 5435 +3 8070 2813 6365 +3 2284 3354 3353 +3 4792 2417 4037 +3 4303 4677 4443 +3 2455 7036 7101 +3 1001 1003 1002 +3 4861 7785 4913 +3 7102 7230 4012 +3 6511 6347 3120 +3 4334 6054 2645 +3 2221 7573 2268 +3 3655 7005 7103 +3 5527 6759 7104 +3 4930 4690 4604 +3 4332 4557 4333 +3 4524 7105 4528 +3 7106 5345 3240 +3 3791 6996 3858 +3 7107 6178 680 +3 6051 7108 3897 +3 6323 2361 2360 +3 6807 1893 2021 +3 7041 5463 7040 +3 3090 7109 3028 +3 4239 8121 7798 +3 3221 3220 2916 +3 8091 3075 6650 +3 6645 4750 988 +3 2035 4479 6337 +3 7606 7687 7110 +3 2937 7111 3667 +3 6507 4514 7602 +3 5739 850 4387 +3 7727 373 567 +3 2385 7757 7112 +3 6364 1875 4326 +3 4960 7345 7337 +3 4338 2336 6791 +3 2928 2927 2924 +3 5819 5180 3868 +3 1405 6096 7113 +3 6955 7114 6529 +3 7115 682 3275 +3 7117 7116 59 +3 4876 4951 4950 +3 6502 695 694 +3 5542 7007 1045 +3 383 382 438 +3 7118 4981 2843 +3 1039 2425 5903 +3 7119 7829 5442 +3 7210 5699 6515 +3 6272 7120 4569 +3 7121 2158 6483 +3 3685 6134 4408 +3 3724 3721 7122 +3 7123 7141 1315 +3 2788 7124 7619 +3 7168 6154 7925 +3 2602 7791 5340 +3 682 1368 4897 +3 2917 2916 6211 +3 5626 1735 6953 +3 4225 133 132 +3 3535 3536 3534 +3 7126 7125 6760 +3 7127 1085 7741 +3 3 3489 7552 +3 4685 4796 4795 +3 5105 6374 1773 +3 2020 2019 5088 +3 841 7128 6022 +3 1951 1952 7129 +3 3540 8220 7130 +3 3647 7072 3606 +3 5251 2486 7131 +3 3693 3698 4543 +3 7132 1736 1735 +3 3193 1125 1291 +3 7021 2870 6604 +3 6762 1011 6761 +3 7134 2575 7133 +3 5495 5304 5303 +3 1269 3394 3350 +3 2966 3011 5512 +3 1771 1732 1772 +3 7135 7619 3869 +3 1218 722 6950 +3 7136 7556 3695 +3 6280 1084 7137 +3 7554 1153 7138 +3 1205 7139 7660 +3 60 584 7192 +3 2518 4903 7140 +3 7117 81 7116 +3 6094 1079 7148 +3 1373 2142 1374 +3 7141 7273 1400 +3 6279 7142 7030 +3 4008 7143 7698 +3 7144 4602 4600 +3 2654 2347 7145 +3 701 4491 2213 +3 1583 8192 2105 +3 5534 1504 1503 +3 6787 7146 2825 +3 1528 2090 7147 +3 7651 7511 4677 +3 5493 7148 7731 +3 548 549 185 +3 2938 2939 2937 +3 7149 2999 2945 +3 7150 7486 1575 +3 8027 6993 7151 +3 7152 6831 2053 +3 2903 2966 7752 +3 5327 7153 7347 +3 5439 6394 5129 +3 5128 4350 7154 +3 3539 7155 7372 +3 3738 4382 7156 +3 3994 2631 7157 +3 1881 5724 1929 +3 6417 6572 7889 +3 7158 48 78 +3 7159 6186 1970 +3 3000 7230 4031 +3 7161 7160 6747 +3 7568 4229 6733 +3 3922 7162 4448 +3 3996 2692 5089 +3 8077 4896 7397 +3 4512 6507 4511 +3 7164 7163 6962 +3 1129 2437 1166 +3 5920 7017 7165 +3 3659 4214 885 +3 3157 902 3158 +3 6452 870 6453 +3 238 557 277 +3 2784 6174 7166 +3 4016 4015 6543 +3 204 8049 242 +3 5368 6635 5367 +3 7145 5205 2346 +3 7593 574 7259 +3 2057 2058 4062 +3 3782 5183 3781 +3 5426 4573 4571 +3 6208 5281 8041 +3 4722 2956 4723 +3 6712 6471 6713 +3 2256 4040 4038 +3 4436 7167 4377 +3 6284 4836 7754 +3 5052 7168 4441 +3 8223 7770 6941 +3 5029 5028 5026 +3 6377 7003 4519 +3 7169 7439 3862 +3 7170 2410 5370 +3 557 556 302 +3 3330 7171 7172 +3 2604 7173 6780 +3 3546 7343 1874 +3 176 178 177 +3 6966 7174 4284 +3 6544 1867 1738 +3 4544 2346 2397 +3 4427 4428 401 +3 2015 5136 2060 +3 709 6009 6568 +3 4659 4699 5635 +3 7909 7175 5707 +3 675 7197 753 +3 709 708 6009 +3 6539 2271 1717 +3 651 650 3184 +3 2462 2414 5334 +3 2271 5399 1809 +3 5467 7176 4757 +3 2641 2640 6846 +3 4347 2911 5917 +3 5924 7177 4983 +3 1418 1500 7178 +3 3845 3812 2999 +3 7912 1868 5837 +3 6899 7088 5348 +3 7179 1348 7740 +3 3580 1273 3579 +3 7180 3448 1567 +3 7181 4076 7082 +3 1614 5475 6003 +3 5117 6531 1721 +3 7807 7182 5290 +3 36 62 61 +3 7183 7363 5318 +3 6986 6837 7184 +3 834 7450 7616 +3 2205 7185 6396 +3 1789 1749 1788 +3 3483 3484 3496 +3 2017 1978 7186 +3 5033 5730 5032 +3 294 403 6147 +3 6642 6237 890 +3 3759 2157 6169 +3 7180 5313 3448 +3 3936 4459 4458 +3 7194 5972 3797 +3 182 6877 183 +3 7187 535 6848 +3 983 7487 7188 +3 2152 2250 7646 +3 7189 2781 2780 +3 4857 8048 4908 +3 2566 5506 5514 +3 5074 1492 5075 +3 6675 5121 2531 +3 3245 7190 1420 +3 5065 6022 6024 +3 7191 1944 5211 +3 527 7192 162 +3 7193 40 68 +3 3854 7194 3894 +3 2380 6019 8061 +3 966 6976 6975 +3 849 7603 848 +3 5045 5044 2084 +3 7195 6049 1324 +3 44 45 7196 +3 3176 7092 5448 +3 3309 3310 1734 +3 674 647 7197 +3 2451 2450 2495 +3 7451 7198 7199 +3 636 7541 6424 +3 4314 1294 6170 +3 1982 1984 1983 +3 1439 5311 7722 +3 56 3197 3198 +3 7886 7200 8026 +3 714 751 3121 +3 8026 6630 7201 +3 4930 7798 4690 +3 7202 5343 3444 +3 7317 3582 7203 +3 2115 6441 6442 +3 4415 5501 2212 +3 6335 2267 2265 +3 7204 1793 1885 +3 4540 4515 4541 +3 6282 3612 3611 +3 7191 1943 7205 +3 5987 5771 7206 +3 1762 1721 5541 +3 6985 1517 1132 +3 7668 7207 7208 +3 4751 4752 4765 +3 7054 4305 6454 +3 7209 8155 6025 +3 3351 1379 1378 +3 7210 5700 5699 +3 4634 1586 7211 +3 5128 7154 4348 +3 7212 4049 5785 +3 5718 5066 339 +3 75 7213 7214 +3 1207 2080 6535 +3 6614 474 7215 +3 7216 7282 3914 +3 2072 2071 2112 +3 2727 2728 6278 +3 7217 7167 5459 +3 2005 7523 2085 +3 2418 2417 4792 +3 7218 5918 1142 +3 7219 7657 4536 +3 1149 3724 7122 +3 7129 7342 2031 +3 4634 7220 5202 +3 3333 3337 6278 +3 7562 1205 823 +3 3221 2972 7221 +3 6053 3086 3099 +3 5334 2505 5335 +3 7223 7222 3891 +3 3620 3568 3565 +3 6902 550 3476 +3 7224 897 945 +3 7225 6686 475 +3 4489 4488 4490 +3 8085 6656 6556 +3 6480 2008 6734 +3 4042 7121 4043 +3 7071 6143 193 +3 1374 5920 5919 +3 5651 5650 4733 +3 2741 7226 2620 +3 6708 4154 8154 +3 5017 1319 7212 +3 7227 6934 3517 +3 655 6987 3384 +3 7228 220 4196 +3 6006 1013 6481 +3 7229 4568 6891 +3 7231 4031 7230 +3 6193 6684 7232 +3 4177 487 5741 +3 1535 1536 7745 +3 6819 1037 1081 +3 7234 7233 705 +3 7174 2249 7654 +3 1114 7235 6128 +3 5176 7236 5213 +3 6666 7237 7429 +3 1279 7238 3746 +3 2195 2196 2250 +3 2464 2463 6261 +3 3676 3678 3677 +3 3237 755 3236 +3 5282 2472 4851 +3 41 3 3488 +3 5504 7239 5851 +3 7240 6554 1063 +3 7241 6145 507 +3 4454 4574 6900 +3 4699 4669 5316 +3 7242 6817 1088 +3 7557 2600 2641 +3 455 4424 7243 +3 7244 3516 3515 +3 7335 5584 6508 +3 4150 6627 6750 +3 7006 1818 7862 +3 4734 8043 4776 +3 6953 4886 1862 +3 7174 7654 7245 +3 2777 2778 2776 +3 3204 1681 3205 +3 7246 2996 2995 +3 1398 6299 7381 +3 6185 1974 6186 +3 2253 7787 2252 +3 7248 5364 7247 +3 7363 5861 5318 +3 4931 5172 4946 +3 6650 3034 2000 +3 899 994 995 +3 7249 6629 1557 +3 511 512 6446 +3 3006 3005 7250 +3 7251 1567 1689 +3 5744 5250 7597 +3 2078 2119 5832 +3 7703 5194 3975 +3 3598 2355 6749 +3 3258 3259 2716 +3 4623 1487 4624 +3 6927 7299 6371 +3 7252 1395 820 +3 867 5964 866 +3 5115 2558 5366 +3 2048 7253 3412 +3 4757 7176 4763 +3 5955 7676 7254 +3 3905 3848 3849 +3 2274 4558 4557 +3 7255 1698 2963 +3 7234 1439 6967 +3 6821 2304 5617 +3 1195 4925 1194 +3 7256 7709 5577 +3 7258 7974 7257 +3 8058 6855 4969 +3 2026 7259 6415 +3 3174 2338 6181 +3 3138 5970 8168 +3 6427 7260 2796 +3 7261 3125 1117 +3 7262 1756 1798 +3 4605 4604 7263 +3 2861 5935 7264 +3 2771 5342 4526 +3 7265 7966 7577 +3 5901 7338 6118 +3 1547 7266 7267 +3 1791 1884 7268 +3 4728 6330 2565 +3 7269 1559 6868 +3 7284 1379 2282 +3 249 5656 250 +3 4435 4433 7270 +3 5542 4541 5123 +3 143 6317 6593 +3 4864 6404 7271 +3 6974 1637 1635 +3 7272 8052 2935 +3 2033 2032 2081 +3 2756 2822 2883 +3 6057 3375 6301 +3 7273 7123 5913 +3 5252 6913 8163 +3 4426 456 7274 +3 7275 1943 6184 +3 5523 1250 4746 +3 2650 2608 7292 +3 8102 864 6271 +3 2164 7276 8014 +3 4709 4372 4707 +3 3616 7484 7277 +3 6754 5840 2530 +3 639 8064 5000 +3 4590 7920 7278 +3 3999 3951 3950 +3 2583 2584 2625 +3 3978 7279 3930 +3 7280 1840 1841 +3 7133 2735 2490 +3 610 7298 699 +3 3825 7520 3843 +3 6881 2012 6880 +3 4659 5635 4440 +3 7281 5239 3730 +3 1509 7446 7282 +3 138 140 139 +3 1847 1846 1904 +3 4193 4192 2724 +3 2987 5589 3564 +3 3363 3412 2135 +3 7283 4483 6946 +3 1378 7284 2280 +3 3755 7896 7285 +3 7286 5540 5965 +3 989 7287 1032 +3 6784 6783 4928 +3 1867 5302 1738 +3 1159 7288 6803 +3 4360 7289 4607 +3 8091 3132 7290 +3 5935 2862 7057 +3 4636 1715 4637 +3 7352 5192 5149 +3 2265 2267 2266 +3 2977 2976 3297 +3 5841 2488 5985 +3 7292 7291 2800 +3 7293 7054 5200 +3 7294 6075 6488 +3 2695 2116 5168 +3 7295 2356 4205 +3 5907 5906 7296 +3 4354 7297 4591 +3 633 699 7298 +3 6371 7299 5774 +3 6135 1877 1875 +3 4097 2596 4098 +3 2386 2387 6334 +3 292 4431 4429 +3 7300 5012 5974 +3 7149 7301 3917 +3 8004 5740 7302 +3 6954 7303 5602 +3 3978 3930 3929 +3 2834 2782 2833 +3 2984 6310 2985 +3 6723 1600 3448 +3 936 7304 5009 +3 7910 982 7305 +3 4739 4738 4774 +3 193 265 1898 +3 4003 410 4002 +3 7307 7306 1775 +3 915 7308 1007 +3 6526 2160 2204 +3 1655 7710 1700 +3 4266 6906 7475 +3 7118 2843 2959 +3 2171 7309 7396 +3 7310 1233 1232 +3 5599 3454 5600 +3 1560 7269 6112 +3 922 7391 6459 +3 8099 1657 7932 +3 7700 1127 7311 +3 7075 7074 1204 +3 4268 3604 7312 +3 7574 4816 4815 +3 6577 802 3504 +3 6091 3118 3081 +3 7313 4998 4999 +3 2788 7619 7135 +3 6387 472 4012 +3 3416 2868 3417 +3 4731 7065 4777 +3 6152 6344 7314 +3 4407 7315 4406 +3 5710 8095 5711 +3 4306 7316 4447 +3 6494 7317 1303 +3 4461 5801 5800 +3 3010 4306 4305 +3 3028 3977 3182 +3 2673 6331 5518 +3 1443 6405 4118 +3 2308 2358 2406 +3 734 1405 7113 +3 1727 5196 6638 +3 5889 5888 3124 +3 7318 5942 6392 +3 5059 7319 5060 +3 5499 4377 7755 +3 3934 7320 7321 +3 3728 1924 1923 +3 1668 6467 4741 +3 6645 6644 7322 +3 2542 2544 2541 +3 764 6152 837 +3 1105 4116 4075 +3 7323 6937 6936 +3 4602 4601 4798 +3 2340 2341 2443 +3 2137 3213 7729 +3 6591 6713 3212 +3 7324 5539 5120 +3 3970 3974 3882 +3 3770 2825 7146 +3 3452 3453 5299 +3 5510 1480 7325 +3 545 544 80 +3 5488 1217 5489 +3 7327 7326 5425 +3 1532 7328 1603 +3 6052 2422 7329 +3 5505 5298 1138 +3 6304 6862 2547 +3 4467 4470 4563 +3 3618 3565 3619 +3 7331 6617 7330 +3 7208 7207 6658 +3 4050 7332 6815 +3 3753 7333 1703 +3 2721 7334 7748 +3 5827 7335 2670 +3 7336 5554 1614 +3 4960 7337 6884 +3 6118 7338 5072 +3 4858 6189 1900 +3 3430 22 149 +3 7339 1310 7669 +3 4803 4805 7340 +3 8096 7341 7342 +3 7343 1826 3588 +3 7344 4287 3773 +3 7345 4870 7337 +3 4095 6843 4097 +3 7347 2610 7346 +3 7306 7348 7493 +3 6653 7349 5163 +3 7350 4745 1403 +3 3297 3682 2974 +3 2307 2308 5125 +3 7351 3471 5411 +3 7352 7969 5192 +3 2241 7413 2309 +3 5149 627 1011 +3 5600 6241 1674 +3 4787 2524 7353 +3 5257 161 5595 +3 1561 1563 1562 +3 5574 5588 5587 +3 7499 620 6745 +3 7354 6648 1475 +3 1428 7355 1336 +3 7356 4791 6516 +3 4510 4507 7357 +3 5620 6141 3509 +3 6379 894 6378 +3 4503 4198 4502 +3 6383 409 408 +3 7212 5785 5018 +3 6879 836 7358 +3 7319 7751 5060 +3 7149 3845 2999 +3 7359 6706 2633 +3 1792 1793 7204 +3 7360 3387 957 +3 3064 6226 6225 +3 4160 4159 2351 +3 3564 7361 3610 +3 4771 2316 2314 +3 7362 1966 4200 +3 865 866 5182 +3 4107 465 4106 +3 4342 4565 4341 +3 7364 4362 7363 +3 7366 7785 7365 +3 305 304 420 +3 7367 3128 5976 +3 7368 2162 2259 +3 7399 3341 2133 +3 7369 5657 5726 +3 4093 3285 7370 +3 7364 7363 7183 +3 2251 2364 7371 +3 2316 2252 2315 +3 3519 1529 7372 +3 7295 6478 2356 +3 5486 2349 2350 +3 5363 5937 5362 +3 7373 4930 4358 +3 5654 2263 7374 +3 7681 6595 7375 +3 5323 1558 3185 +3 5617 7376 3642 +3 2904 2906 7875 +3 6470 2701 7377 +3 7325 1543 6594 +3 7337 7378 6884 +3 5707 7175 1460 +3 3479 3480 7975 +3 4034 4035 7379 +3 1317 6473 4397 +3 4074 1190 1243 +3 5937 5385 7781 +3 5512 5492 5504 +3 6588 7380 6158 +3 3536 1531 7847 +3 1352 7381 6685 +3 590 7233 7234 +3 6122 5478 7382 +3 2530 7033 7383 +3 7384 4456 4572 +3 3971 5823 3974 +3 7385 7530 3222 +3 2107 7070 2160 +3 5674 3816 7386 +3 983 7188 3967 +3 3179 3117 3177 +3 3599 3644 7387 +3 3690 6409 3675 +3 1641 1642 6082 +3 1151 3094 7388 +3 6290 7389 7677 +3 6419 7390 6944 +3 4091 6853 4089 +3 2839 2889 7531 +3 7391 7940 3038 +3 6602 661 7392 +3 6270 5310 7393 +3 1367 6476 7394 +3 7396 2220 7395 +3 4395 5322 7839 +3 4171 2952 4172 +3 5000 8064 7097 +3 3401 5793 4520 +3 398 4665 399 +3 4355 4837 7297 +3 8096 6534 7341 +3 4482 6533 8127 +3 5133 7929 5634 +3 4895 7397 7778 +3 2254 7398 3913 +3 7249 1557 1536 +3 3251 3254 2712 +3 3314 2044 7399 +3 2189 2239 2186 +3 5404 3607 3608 +3 3110 3047 7400 +3 1868 3360 7401 +3 2572 6315 6316 +3 5933 3820 7402 +3 5536 7403 3406 +3 7404 6527 5349 +3 7226 6779 2739 +3 3160 5843 3146 +3 7406 7405 5358 +3 3537 7407 2993 +3 7708 6509 4661 +3 6623 1109 6715 +3 2088 7408 7409 +3 2870 3463 6604 +3 7410 1237 1308 +3 3459 4793 3460 +3 2148 3261 5697 +3 5567 2633 2758 +3 1524 6823 5424 +3 3969 1105 1188 +3 2964 2903 7752 +3 4093 7370 7411 +3 3429 6500 7412 +3 2309 7413 2358 +3 1579 1613 3980 +3 7414 6453 869 +3 720 4374 719 +3 7937 1494 7415 +3 1070 5994 1725 +3 5338 2037 5885 +3 5354 7416 1199 +3 4598 4687 6063 +3 1253 1196 1254 +3 4304 6454 7417 +3 5013 5015 1507 +3 6531 1722 5415 +3 3022 1210 3023 +3 2233 7418 2344 +3 7444 6839 2072 +3 2654 6416 7419 +3 4630 5322 1490 +3 2373 4416 7420 +3 4730 5457 6436 +3 6926 4710 5102 +3 7043 7478 2626 +3 4619 5058 4697 +3 1709 1800 6854 +3 5863 6017 7421 +3 5319 7422 3530 +3 4800 4691 7423 +3 5717 6028 7424 +3 6381 2373 6052 +3 7426 7425 8079 +3 7059 7058 5256 +3 3112 7427 3045 +3 5049 4299 7428 +3 7686 7764 6191 +3 4092 6448 6853 +3 467 115 116 +3 6666 7429 5398 +3 1488 7430 7431 +3 675 753 6233 +3 2160 7185 2159 +3 6455 4260 4259 +3 7432 3636 6477 +3 2238 2237 2301 +3 5000 7433 7434 +3 2223 2224 7435 +3 6942 6714 3427 +3 7525 3405 3403 +3 7436 5432 5611 +3 4552 6257 4549 +3 4788 2427 4787 +3 6327 7437 2070 +3 2936 7048 1963 +3 4869 6884 6883 +3 6420 6192 4548 +3 2519 2521 6312 +3 3969 3970 3925 +3 5993 1888 1980 +3 4245 4362 7364 +3 4431 225 6144 +3 7331 7330 1423 +3 1669 2496 7438 +3 1238 7528 1278 +3 6223 2821 2822 +3 2154 2103 7439 +3 6285 5818 6071 +3 1073 7788 1158 +3 7440 1912 2001 +3 7630 6539 1717 +3 5673 8070 7441 +3 2440 3356 6274 +3 7182 6497 7442 +3 7171 896 7172 +3 7443 935 1117 +3 6070 1041 1039 +3 3960 3824 3825 +3 7444 5405 6839 +3 984 7445 6812 +3 2569 6971 6970 +3 3246 7282 7446 +3 2784 7166 1068 +3 4949 938 7447 +3 901 5073 902 +3 7448 1422 1421 +3 7911 3443 8175 +3 4708 4709 4707 +3 2963 1699 1784 +3 5596 1658 7449 +3 4661 6509 864 +3 2760 3145 4115 +3 2571 2658 6914 +3 642 7682 7652 +3 7450 796 6294 +3 7451 3773 4287 +3 7736 792 6105 +3 7452 4419 4418 +3 7998 7453 7454 +3 1852 7283 1911 +3 2229 7455 2334 +3 3582 6989 3581 +3 7672 4018 7456 +3 7457 691 690 +3 5114 7458 7459 +3 7460 2026 7618 +3 3834 6501 5640 +3 1391 7461 1477 +3 5010 6056 4493 +3 1637 1636 1685 +3 7910 7462 982 +3 6828 2911 4347 +3 4085 2457 2456 +3 1709 5106 6357 +3 6807 4276 1893 +3 6635 6512 670 +3 1641 6082 1688 +3 3648 7463 7684 +3 7461 5746 1477 +3 7465 5091 7464 +3 1763 7006 1817 +3 1540 985 6174 +3 3162 3161 6980 +3 3055 7821 3053 +3 5094 1575 1576 +3 2291 6885 7309 +3 2588 5827 2627 +3 3628 7317 6494 +3 4121 7466 6163 +3 7467 2887 4903 +3 1383 3534 3520 +3 8203 4966 4866 +3 7468 1230 5884 +3 3983 2535 2536 +3 7671 6749 2302 +3 7332 4051 6815 +3 5037 7467 5039 +3 2540 2621 3555 +3 5163 7349 7469 +3 4210 6344 6152 +3 5288 7470 5515 +3 6325 3922 3880 +3 7779 3668 7471 +3 3772 2945 3775 +3 696 4291 5265 +3 4072 7518 4071 +3 7615 2280 7539 +3 2436 6703 5222 +3 4935 4934 5660 +3 2197 1676 1726 +3 5086 3540 6206 +3 3084 3182 3977 +3 7842 3039 5242 +3 641 6346 6347 +3 7472 1981 6256 +3 7474 7977 7473 +3 7635 2786 7475 +3 2720 5245 7476 +3 6711 5951 7477 +3 7478 2587 7164 +3 7479 7441 6365 +3 6570 6569 470 +3 7480 6549 2065 +3 7481 688 732 +3 6680 7482 216 +3 6962 7483 7802 +3 7362 6632 1966 +3 6158 7380 6675 +3 7484 7103 7277 +3 2461 5335 6204 +3 8131 642 671 +3 957 3387 3388 +3 780 779 6655 +3 6133 4336 6132 +3 1924 1925 5890 +3 4719 5553 7485 +3 7478 7164 2669 +3 5510 7325 7486 +3 5183 5180 872 +3 2406 4085 8063 +3 3316 2340 2395 +3 2654 7145 6416 +3 4061 7487 6621 +3 1717 1759 7488 +3 1911 6946 7098 +3 7490 1302 7489 +3 3047 5549 7491 +3 7492 4269 4270 +3 3262 2723 2720 +3 4803 7340 4804 +3 6252 7493 1870 +3 1795 1837 1889 +3 7494 7792 4300 +3 6768 5775 5776 +3 1334 7073 6847 +3 2034 4634 5202 +3 2646 4790 7495 +3 1005 7496 6259 +3 7701 5808 7497 +3 4096 5882 4095 +3 6726 5870 3199 +3 7165 1376 1375 +3 6626 1261 7730 +3 2259 6864 4142 +3 7498 4951 1029 +3 1066 5807 5808 +3 5462 38 65 +3 7841 621 7499 +3 1560 1559 7269 +3 3860 3789 7694 +3 2750 2752 2751 +3 4626 7500 7835 +3 2239 2187 2186 +3 5760 6613 7501 +3 6637 6527 7404 +3 5388 7502 7503 +3 6118 3439 3438 +3 6581 5199 7504 +3 1452 1833 4016 +3 3307 5286 5896 +3 7547 4250 7890 +3 7505 5554 7336 +3 7507 8024 7506 +3 4973 7508 2170 +3 1814 1849 7509 +3 2870 5771 5987 +3 7296 3591 7510 +3 1679 7018 8168 +3 4756 4754 6802 +3 4627 1488 7816 +3 2738 3415 5147 +3 7417 4444 7511 +3 4242 4244 4609 +3 1461 7512 6674 +3 874 4071 4073 +3 7329 2422 2468 +3 1371 1050 7513 +3 2481 900 899 +3 34 7514 3680 +3 1525 1526 6437 +3 5325 2211 8190 +3 2943 6073 2941 +3 1400 6555 5342 +3 7433 7097 6518 +3 3242 3279 3280 +3 7516 7882 7515 +3 6782 6297 8181 +3 1997 6960 1998 +3 8195 7047 7517 +3 6552 6551 3887 +3 7518 4073 4071 +3 3591 5928 3592 +3 530 5456 4175 +3 4743 182 3270 +3 7350 6263 4745 +3 7134 7133 7519 +3 5190 7763 7187 +3 3544 3546 3545 +3 1257 1258 6581 +3 5898 5409 5403 +3 4750 6645 7322 +3 3842 7520 3826 +3 7521 7401 1821 +3 3465 3503 3477 +3 1190 1189 1243 +3 6439 1501 1502 +3 1803 5647 246 +3 735 734 4069 +3 295 6510 463 +3 1720 1761 1813 +3 7518 984 4073 +3 7522 51 6255 +3 1959 7943 7523 +3 6274 6687 7524 +3 5490 7077 6348 +3 3636 3586 6785 +3 3405 7525 6480 +3 711 7652 748 +3 5582 3224 3225 +3 3065 7526 7527 +3 6973 1493 1492 +3 7528 5722 7714 +3 757 7529 4374 +3 2559 4730 5332 +3 7804 3223 7530 +3 4700 5315 4707 +3 7589 2787 7531 +3 2136 5362 2185 +3 3572 6016 7532 +3 1607 5596 7449 +3 3478 3502 3560 +3 7533 1816 1290 +3 2915 2917 2913 +3 5258 6617 6616 +3 1275 7744 5451 +3 5130 5674 3840 +3 4097 7534 7964 +3 7535 8128 6550 +3 6488 3187 3155 +3 3506 2697 2694 +3 6506 3433 6561 +3 7536 1059 1100 +3 7880 3129 7367 +3 6953 1862 7825 +3 2059 5642 5641 +3 4466 4564 4465 +3 537 3050 380 +3 2284 7537 1513 +3 483 422 6495 +3 3654 6542 2725 +3 3195 6726 3196 +3 7662 5866 5865 +3 2747 7538 5384 +3 6600 5418 7090 +3 6740 7503 2255 +3 7459 8204 8147 +3 5972 2806 2807 +3 4720 4297 6078 +3 7539 6080 7615 +3 7114 1362 6529 +3 7540 7948 2660 +3 586 6424 7541 +3 2571 4535 7811 +3 7220 7679 1621 +3 7681 6364 1828 +3 4592 7542 4597 +3 4597 7542 4596 +3 949 950 7543 +3 7544 6540 2516 +3 2670 7335 6548 +3 7545 7392 6180 +3 7546 7575 8011 +3 3822 3680 3679 +3 4885 871 870 +3 395 394 7547 +3 2210 2212 5501 +3 6237 5291 939 +3 1086 7311 1127 +3 7548 7042 4255 +3 7055 1159 6803 +3 1726 1727 6737 +3 2156 3704 7697 +3 7549 6157 267 +3 6745 645 673 +3 4618 4989 4992 +3 6693 5704 8036 +3 5757 1618 7550 +3 3095 376 573 +3 7015 2024 2073 +3 7551 7045 5570 +3 77 531 4499 +3 3 7552 3488 +3 4697 6166 4994 +3 1114 1070 5133 +3 3275 5416 680 +3 1166 7553 1266 +3 1152 1068 7554 +3 7555 5787 7779 +3 2229 2334 4963 +3 6114 2830 6068 +3 4459 3982 3937 +3 4460 3771 7556 +3 7312 2557 7557 +3 2764 6622 6405 +3 6730 194 228 +3 7093 7558 6579 +3 5876 7559 2643 +3 7554 1154 1155 +3 397 6026 399 +3 7504 1322 7927 +3 3548 2666 2744 +3 4027 4021 5833 +3 5459 4660 4662 +3 5616 7560 7561 +3 783 7562 8123 +3 3998 7563 3949 +3 7564 553 326 +3 6295 1941 2775 +3 217 4743 5672 +3 2580 7565 2623 +3 4064 713 712 +3 4 3 1 +3 5423 7566 7251 +3 4063 5243 2150 +3 6215 1579 3934 +3 5709 7224 6860 +3 1902 1950 5754 +3 3635 3585 3584 +3 2282 6324 2283 +3 2790 6998 2892 +3 2699 6786 6115 +3 2055 7567 3060 +3 6414 4229 7568 +3 4912 7569 7570 +3 1104 7976 1148 +3 5444 1633 5852 +3 8160 4116 7571 +3 6182 25 5260 +3 7572 2903 2964 +3 6910 5312 5311 +3 5146 495 3420 +3 3084 7878 3083 +3 7573 2270 7911 +3 5840 5839 7033 +3 1095 1094 1178 +3 3968 7064 6450 +3 4676 4443 7574 +3 3197 635 7575 +3 2798 4617 2844 +3 1231 4819 7576 +3 3975 683 1365 +3 2799 7577 2906 +3 3738 4383 4382 +3 7408 5733 7578 +3 4774 7961 5862 +3 2814 2876 2875 +3 7579 5405 7444 +3 385 7580 441 +3 3415 2661 2618 +3 5891 1447 6174 +3 3235 6178 7107 +3 1638 7581 3400 +3 4977 6606 6605 +3 2850 7582 7293 +3 7583 5690 2058 +3 828 855 7584 +3 5498 632 7585 +3 6960 6085 6084 +3 8039 5439 2874 +3 1515 1004 5692 +3 5819 4383 3783 +3 7824 5677 1226 +3 1667 1666 4635 +3 3267 327 3268 +3 7440 7586 1854 +3 3352 1566 3354 +3 3551 6201 3552 +3 7587 183 184 +3 7588 8092 451 +3 5465 6759 5464 +3 7995 8030 1041 +3 106 143 178 +3 7589 4267 2638 +3 2079 6566 7590 +3 6123 7032 6122 +3 2108 2064 5681 +3 1557 2293 1537 +3 876 5203 845 +3 2274 7591 2337 +3 3329 3328 6808 +3 6646 7592 7379 +3 351 352 7593 +3 8006 6668 7594 +3 7595 3997 6308 +3 6295 5791 6806 +3 7596 1340 6574 +3 7597 2728 2727 +3 6706 6705 6603 +3 5480 6168 6167 +3 6719 651 6611 +3 7598 7400 7049 +3 7498 4872 5893 +3 6631 1534 1571 +3 696 697 4291 +3 7555 6732 5787 +3 1805 7031 1425 +3 6778 6777 3230 +3 1599 7251 5134 +3 6755 5794 7860 +3 6515 6031 4773 +3 2101 2060 2102 +3 7199 7198 832 +3 3819 4653 3818 +3 4201 3224 573 +3 2728 3334 3333 +3 1344 1345 7266 +3 5035 7599 8163 +3 5215 3786 5216 +3 1549 1620 1585 +3 750 786 825 +3 1236 1180 7600 +3 711 748 7236 +3 4460 2824 3771 +3 5503 4173 4174 +3 7561 6013 7289 +3 3281 7448 7601 +3 6507 7602 4511 +3 7721 7603 774 +3 7584 4516 7052 +3 12 7762 7604 +3 5460 7028 7605 +3 1942 7687 7606 +3 3735 3736 5471 +3 7327 803 7326 +3 4312 4542 5764 +3 4721 2955 4723 +3 6791 2390 7025 +3 950 3239 951 +3 789 832 830 +3 7607 6579 6578 +3 4310 4454 7608 +3 6399 6339 7014 +3 7783 927 983 +3 529 7214 7213 +3 6923 1678 3206 +3 7294 6076 6075 +3 437 5097 4578 +3 7609 607 630 +3 5537 6473 3856 +3 1554 5860 7610 +3 1136 1138 5298 +3 2233 2344 2342 +3 2034 5202 6231 +3 7738 4164 4153 +3 7842 2527 3039 +3 879 878 2762 +3 586 7541 7611 +3 409 5975 4013 +3 6823 7612 1527 +3 4909 4910 4908 +3 301 562 352 +3 6984 6983 7257 +3 791 790 3189 +3 7613 1 6326 +3 2444 7134 7519 +3 4365 6940 4615 +3 2627 2670 7163 +3 3171 6645 4645 +3 2246 2245 6647 +3 1942 1943 7275 +3 1031 1033 1078 +3 5454 7548 404 +3 4925 4955 4957 +3 4285 1284 4284 +3 2339 2392 6265 +3 4327 1954 1999 +3 4277 4151 5795 +3 7614 151 4434 +3 5526 5525 6262 +3 4298 5051 5050 +3 3350 1339 7615 +3 858 7616 6432 +3 7888 7617 888 +3 1464 1511 4847 +3 7618 8010 6904 +3 1199 7416 1200 +3 5020 3803 7619 +3 6633 6343 7620 +3 4819 5965 7200 +3 5758 6216 1234 +3 2225 5590 5591 +3 1438 2124 7621 +3 2354 4684 5004 +3 3896 7020 3897 +3 7623 3108 7622 +3 6552 1544 7624 +3 5950 7625 5949 +3 4521 5810 4522 +3 4605 7263 6349 +3 7415 5968 1590 +3 7016 1338 7626 +3 3002 3001 4106 +3 4160 2665 7549 +3 7430 6087 7431 +3 1457 1458 1493 +3 6283 6284 7627 +3 3828 3961 3829 +3 4422 4437 7628 +3 4205 7376 2304 +3 5159 6659 1090 +3 3238 5153 949 +3 4800 7423 4825 +3 7301 3916 3917 +3 1988 5163 5164 +3 4197 7629 1431 +3 1661 6359 4132 +3 7458 8204 7459 +3 1498 6695 1499 +3 5551 6879 958 +3 7490 7489 4890 +3 7631 8203 7630 +3 2392 2716 2717 +3 2457 5370 2458 +3 32 7632 7633 +3 3637 3639 3638 +3 6603 5969 2758 +3 1259 7634 1325 +3 7161 6505 7160 +3 6986 7635 6837 +3 5337 564 379 +3 4948 710 746 +3 86 6649 113 +3 4783 5267 4782 +3 1118 4926 4955 +3 6048 7636 1017 +3 1617 6360 6359 +3 8010 6414 7568 +3 2317 6138 3703 +3 8139 7589 7832 +3 7638 7637 6636 +3 776 8089 7922 +3 7639 2398 2445 +3 3257 3291 3256 +3 1609 6729 5596 +3 7243 5930 455 +3 1441 4115 6253 +3 2521 2520 6312 +3 5923 3645 6242 +3 2553 2635 2636 +3 2556 7640 8139 +3 6932 2820 1095 +3 2639 2638 6701 +3 940 939 6356 +3 2632 6093 6646 +3 1380 7014 6350 +3 4172 7641 4165 +3 6957 229 155 +3 2964 7752 2965 +3 732 688 5095 +3 1479 5094 1542 +3 7728 1902 7642 +3 3562 3561 6670 +3 4857 7643 6917 +3 7196 106 142 +3 7981 4685 5494 +3 7644 5785 5019 +3 4451 5494 4794 +3 4356 7465 7464 +3 7645 6820 3459 +3 5646 2152 7646 +3 7632 33 7633 +3 7647 6587 2322 +3 1669 7438 4913 +3 521 237 7648 +3 7394 795 833 +3 1345 6753 5450 +3 7649 3783 3738 +3 3126 5750 5793 +3 3872 7650 691 +3 4834 4993 4992 +3 7651 7417 7511 +3 2498 2500 2544 +3 7652 8119 748 +3 7186 3706 6612 +3 6652 5679 6653 +3 883 7653 932 +3 4313 3693 7805 +3 6101 4501 6425 +3 7063 5209 2768 +3 7245 7654 5913 +3 4366 4369 4618 +3 669 709 744 +3 1477 7655 1478 +3 3784 3785 4383 +3 1367 7394 1368 +3 7657 7656 7087 +3 4397 6541 4399 +3 4881 7252 4879 +3 1357 6618 1406 +3 7418 7658 2344 +3 5944 6707 5686 +3 2226 2634 2272 +3 7659 2312 2243 +3 7660 824 854 +3 179 7661 7086 +3 5607 6859 7919 +3 159 160 197 +3 770 6014 7662 +3 4797 4823 4822 +3 67 39 7663 +3 2576 2662 2740 +3 6700 839 3570 +3 7516 7664 3513 +3 1024 5331 7138 +3 7665 2335 4473 +3 1511 6748 1512 +3 6875 903 7344 +3 1825 1826 7343 +3 1532 1603 7666 +3 7667 1589 1672 +3 6222 7618 6904 +3 4813 4782 4812 +3 5589 3608 7361 +3 6108 5656 3425 +3 5274 5980 5979 +3 1362 1417 7930 +3 7669 7668 6126 +3 6438 7670 3892 +3 7671 2191 6749 +3 6108 5657 5656 +3 1950 1903 2950 +3 662 661 6602 +3 256 255 253 +3 1260 1259 1325 +3 539 7672 4017 +3 5949 7625 5499 +3 1281 5847 4076 +3 7008 3948 3904 +3 6219 7853 6790 +3 3981 1794 3982 +3 7673 5797 5796 +3 6520 5489 6521 +3 7674 3151 3156 +3 3632 1469 8060 +3 4527 4528 7105 +3 7564 259 553 +3 7795 578 577 +3 2449 4209 4208 +3 3514 1873 6275 +3 6296 8006 5203 +3 5329 772 7675 +3 4193 6930 6931 +3 6053 3099 3100 +3 7254 7676 7677 +3 6155 843 920 +3 764 6150 7678 +3 3065 3064 3026 +3 1619 7679 4637 +3 7112 4335 2430 +3 5473 1060 6619 +3 7174 6332 2249 +3 3662 7680 2121 +3 4978 4850 4979 +3 7935 1779 7681 +3 5101 5100 5795 +3 5134 7251 1689 +3 7652 7682 8119 +3 7432 5350 7683 +3 3525 5593 5592 +3 7684 2988 2989 +3 7189 2419 2781 +3 7686 5530 7685 +3 7687 5997 7110 +3 7614 83 151 +3 7688 5524 3008 +3 4805 4695 5904 +3 7689 7254 3385 +3 7690 6773 4126 +3 3938 3891 5383 +3 3364 4875 6089 +3 7530 3092 3222 +3 1700 7691 5532 +3 2771 6773 7690 +3 67 38 39 +3 2835 7692 4145 +3 1371 7513 8111 +3 7693 3499 3498 +3 7505 2082 5554 +3 5996 5995 1475 +3 7482 179 216 +3 7067 6253 7104 +3 3860 7694 3884 +3 1533 7258 7257 +3 2754 2816 7695 +3 2970 5670 5470 +3 4347 6272 4569 +3 6554 7485 1063 +3 7697 7696 3762 +3 5410 7698 3827 +3 6711 7477 1468 +3 8047 3069 7699 +3 1816 1260 1290 +3 4439 1167 7700 +3 6295 6806 7091 +3 7819 115 155 +3 3088 3089 5753 +3 863 4661 8102 +3 6043 7701 1065 +3 7796 7702 1098 +3 5664 5216 3740 +3 1364 5770 7703 +3 3082 3113 3182 +3 2483 2482 2526 +3 1234 5288 5515 +3 725 3383 726 +3 5307 3393 4901 +3 1208 7704 4509 +3 3112 7705 7427 +3 2139 2138 5879 +3 3308 1735 5626 +3 7049 7400 4537 +3 6867 930 5324 +3 6412 1956 5639 +3 6168 576 505 +3 5687 7510 3590 +3 5670 7706 5671 +3 7598 3110 7400 +3 7707 8210 6657 +3 3082 3042 7822 +3 5232 2693 5231 +3 7708 810 6509 +3 7469 4907 7709 +3 4699 5316 5315 +3 1728 4489 5196 +3 2223 7435 7990 +3 7500 4747 7835 +3 4080 6532 1545 +3 1348 8207 7740 +3 4856 4855 6390 +3 7710 1702 1790 +3 1816 5043 1260 +3 1111 5156 1112 +3 2385 7112 2431 +3 5374 5508 7711 +3 653 654 5961 +3 1244 5407 7712 +3 2918 3553 3329 +3 7713 8007 4962 +3 7714 7669 6126 +3 4082 7715 4083 +3 7560 4242 7561 +3 6229 5424 5423 +3 7515 6903 2141 +3 3766 3767 3764 +3 5977 2962 7582 +3 7377 1440 7716 +3 2217 4905 7717 +3 2003 1956 3313 +3 7194 3855 3894 +3 3252 3253 3251 +3 6064 7159 2013 +3 949 7543 948 +3 4647 2691 7718 +3 5452 7719 3879 +3 2852 2854 7572 +3 6800 5041 5457 +3 2909 2910 7720 +3 7721 8089 880 +3 4424 4426 7274 +3 1264 1263 1330 +3 7722 704 6451 +3 6065 4974 8108 +3 4093 7723 5045 +3 3750 7080 3751 +3 3459 3460 5270 +3 3364 2654 7419 +3 2754 7695 2878 +3 1163 6704 7724 +3 1509 1562 5217 +3 5516 2983 5106 +3 5908 8127 6533 +3 7422 5072 7725 +3 1065 7701 7497 +3 7334 7726 7748 +3 506 7727 566 +3 1703 3754 5579 +3 7728 1844 1902 +3 2038 7729 3212 +3 938 890 940 +3 309 4871 310 +3 1917 5531 7739 +3 4863 1758 4864 +3 7731 6626 7730 +3 207 6519 7732 +3 1852 8013 7283 +3 5209 1110 5310 +3 6492 6046 6045 +3 1336 7355 1338 +3 5092 847 1922 +3 5116 5761 7901 +3 5738 2394 5841 +3 3941 3942 7767 +3 4676 7574 5267 +3 2104 3801 2157 +3 26 48 7158 +3 648 623 676 +3 7238 3720 3746 +3 6860 944 992 +3 2789 2791 2790 +3 3140 5376 3025 +3 7697 3704 7696 +3 6298 1551 2034 +3 7733 5068 3177 +3 3026 6338 1330 +3 7734 416 578 +3 49 545 3710 +3 4678 5910 7735 +3 2208 2164 8014 +3 1040 1039 5903 +3 757 7736 7529 +3 2671 7737 7483 +3 7184 7738 6627 +3 6412 7739 2047 +3 6651 7740 1481 +3 3462 2663 2662 +3 5669 5680 8059 +3 1602 1695 2534 +3 7516 7515 7664 +3 4864 7488 6404 +3 7742 7062 7741 +3 1787 1834 1832 +3 7743 6400 1549 +3 5219 2197 6209 +3 1984 2020 6162 +3 6287 7441 7479 +3 1390 7863 5996 +3 1130 1224 1222 +3 7744 1231 7576 +3 1603 1602 1647 +3 7926 5837 3359 +3 3460 2538 5355 +3 6915 3021 994 +3 44 7196 105 +3 5831 4915 4916 +3 5076 932 6608 +3 5453 3657 7193 +3 610 7010 609 +3 847 5464 6801 +3 7536 1058 1057 +3 7012 7745 1572 +3 4736 8122 4775 +3 2508 5344 5314 +3 1522 1524 1523 +3 5941 6341 5784 +3 2194 4364 7413 +3 7746 1715 4638 +3 3853 3852 3798 +3 1665 1715 7746 +3 7491 543 509 +3 5429 2607 7747 +3 7748 3311 1860 +3 7455 7916 2334 +3 4168 6047 5142 +3 6873 6872 6243 +3 739 6457 814 +3 7784 5849 3472 +3 5265 5359 3739 +3 1815 1909 1908 +3 7067 7104 6457 +3 8129 4778 3175 +3 133 98 5296 +3 6082 5665 1776 +3 8027 7151 7792 +3 1174 7749 3577 +3 1038 6378 8115 +3 5148 5147 7750 +3 5060 7751 6741 +3 7157 7595 3909 +3 4861 4862 7785 +3 7103 570 7277 +3 7530 3091 3092 +3 2965 7752 4307 +3 6164 4122 3094 +3 7753 3939 6282 +3 872 3783 7649 +3 4994 5412 7754 +3 6458 4266 7475 +3 7544 5115 4647 +3 5066 292 293 +3 6073 2944 3694 +3 6205 8200 1676 +3 2053 6831 2052 +3 7968 254 497 +3 5986 7755 4254 +3 7756 4014 5975 +3 8159 1814 7509 +3 727 3436 6964 +3 2634 2227 2333 +3 2726 5330 5586 +3 7757 2331 2433 +3 2227 4963 2333 +3 7759 2130 7758 +3 808 809 6440 +3 4911 7366 7365 +3 7426 7347 7425 +3 2256 3945 7760 +3 7338 837 3529 +3 4559 7761 4473 +3 24 76 7762 +3 8114 368 7763 +3 1055 6933 6932 +3 3906 7764 3848 +3 6619 1103 1104 +3 1809 1811 1810 +3 5895 1191 1770 +3 4188 7765 7308 +3 2587 7163 7164 +3 3052 7766 4469 +3 3941 7767 7768 +3 7769 28 393 +3 7453 7770 7454 +3 6949 7771 3707 +3 6327 2022 2683 +3 7772 2128 5855 +3 6981 5353 1035 +3 1420 3562 3244 +3 1025 3569 5557 +3 2559 6235 4730 +3 5272 1483 7773 +3 4370 4372 6959 +3 2324 5378 2323 +3 7774 5918 7218 +3 7775 3023 1210 +3 5722 7669 7714 +3 164 126 165 +3 3547 7516 3513 +3 4032 4100 4103 +3 6407 2204 2203 +3 1928 1881 4198 +3 7616 6294 7776 +3 6066 49 7777 +3 3991 3944 3945 +3 7473 6041 641 +3 4319 1677 1730 +3 1916 5287 1917 +3 1213 1212 3279 +3 1649 1696 4587 +3 4981 7118 7778 +3 3770 3771 6824 +3 518 519 4247 +3 7111 7779 3667 +3 6769 5981 7962 +3 6260 6826 1190 +3 4453 5671 7706 +3 1314 1397 5421 +3 6222 6904 3661 +3 1082 7075 1162 +3 5901 6151 6150 +3 7780 6200 1168 +3 4336 2092 7781 +3 7782 7399 2132 +3 6296 6668 8006 +3 3965 874 7783 +3 1478 7655 5713 +3 4793 7908 3508 +3 2918 2920 3553 +3 7693 7784 7351 +3 7266 1391 7267 +3 5907 7296 7510 +3 4571 4573 4572 +3 7686 7685 3808 +3 4914 4913 7785 +3 4960 4961 4924 +3 2769 618 6698 +3 7786 5915 4481 +3 1007 7308 7765 +3 2317 7787 6138 +3 3095 3096 376 +3 7200 1547 8026 +3 825 786 6422 +3 114 153 6649 +3 7788 1120 1159 +3 797 7789 1220 +3 6999 4090 4089 +3 5773 5486 2300 +3 7106 3277 5345 +3 1712 5106 1663 +3 2804 2805 2803 +3 5615 7790 7360 +3 6803 7288 1289 +3 4451 4682 5494 +3 766 5931 5281 +3 7791 8172 5042 +3 4843 8027 7792 +3 6213 6212 1228 +3 185 7793 7228 +3 2315 2317 6069 +3 7407 7794 7795 +3 6309 7503 7502 +3 8148 974 7796 +3 4327 2036 4328 +3 8218 572 147 +3 3350 7615 6080 +3 4603 4358 4605 +3 7386 268 3674 +3 5084 5083 5814 +3 7798 8120 7797 +3 802 8025 3504 +3 5193 5961 7799 +3 7406 6099 7405 +3 3339 723 8072 +3 6554 4719 7485 +3 2908 2907 2969 +3 7800 662 6602 +3 6889 7801 3912 +3 4384 701 2213 +3 2272 2273 5590 +3 4920 4922 4962 +3 6630 6629 7249 +3 7803 7802 2818 +3 328 6671 7804 +3 3199 1296 7872 +3 6884 7378 5067 +3 4542 7805 4513 +3 967 6340 6744 +3 1029 1073 4874 +3 7692 2836 4147 +3 5973 7806 7807 +3 897 7052 5226 +3 7563 3999 3949 +3 6664 2216 5378 +3 7808 4149 6750 +3 5897 7809 1096 +3 4876 4949 7447 +3 6113 4522 4536 +3 1277 1307 1306 +3 61 60 93 +3 4641 4640 3018 +3 5630 6558 7810 +3 1235 7993 1307 +3 2823 6710 5977 +3 8181 2571 7811 +3 7813 7812 881 +3 5858 2291 2171 +3 3250 5953 5954 +3 3484 69 3493 +3 3487 41 3492 +3 7814 3714 5579 +3 1782 6430 1880 +3 3281 7601 1297 +3 3769 2593 2630 +3 8145 592 616 +3 2426 4787 7353 +3 4608 5701 6681 +3 7815 3526 5593 +3 5212 2986 6431 +3 5818 2380 2473 +3 4625 7816 7897 +3 1481 1480 5510 +3 3410 3412 7253 +3 2753 4359 2754 +3 5031 2420 5030 +3 4367 7817 3831 +3 5913 7654 1401 +3 7894 7451 7199 +3 735 694 736 +3 7659 2247 2312 +3 4943 6366 4944 +3 2720 7476 2652 +3 1615 1752 6816 +3 7775 1210 1211 +3 7250 4294 4436 +3 4447 7316 4450 +3 4243 6825 4244 +3 7840 1075 1121 +3 8149 3080 3037 +3 6570 7865 7756 +3 6940 4616 6939 +3 6793 6145 7241 +3 3954 7818 5608 +3 5933 7402 4045 +3 7575 7819 8011 +3 5578 5075 7820 +3 2312 2244 2313 +3 6315 5249 5250 +3 3503 5264 3560 +3 8166 2797 5078 +3 6623 6715 1069 +3 5417 2799 5418 +3 270 272 5768 +3 6412 2047 2045 +3 3879 2780 2831 +3 1083 1082 5625 +3 3609 3611 3610 +3 4062 5243 4063 +3 7635 7475 6837 +3 7821 6988 3016 +3 7953 5757 4280 +3 3083 3045 3044 +3 5857 7925 8062 +3 5659 2946 3951 +3 7390 7242 6944 +3 5093 3023 7775 +3 4830 3762 4831 +3 7637 7822 2860 +3 4684 7823 7094 +3 5086 6206 7155 +3 6807 6806 5791 +3 4970 4969 7824 +3 4258 4387 4257 +3 5374 7711 134 +3 1754 1890 6634 +3 6789 1435 1482 +3 2369 2368 3808 +3 5594 3403 3404 +3 7197 6113 753 +3 5301 7825 5287 +3 5731 5824 5825 +3 2741 6779 7226 +3 1356 1407 6640 +3 7826 7868 3890 +3 7827 2359 2408 +3 7657 7087 5328 +3 8031 7828 7410 +3 7829 4938 5667 +3 4350 510 4575 +3 7830 3986 5143 +3 3381 8032 7831 +3 1420 1419 3562 +3 7483 7737 3737 +3 7346 6832 5801 +3 4267 7589 7531 +3 2670 6548 2671 +3 806 807 841 +3 5424 1527 7566 +3 6729 1610 1659 +3 7237 3505 7429 +3 8020 2556 7832 +3 1333 7073 1334 +3 2441 6781 6982 +3 7992 3861 4283 +3 7086 7661 3301 +3 7833 4404 5084 +3 1592 7834 8200 +3 4657 4295 4656 +3 1430 3721 3722 +3 3126 6181 3175 +3 6155 920 6156 +3 6439 5957 1123 +3 3793 4628 3792 +3 552 351 6461 +3 7413 7827 2358 +3 932 7653 815 +3 7669 1310 7668 +3 5590 2331 7757 +3 3213 3212 7729 +3 1327 1329 6610 +3 1992 5942 7318 +3 3006 4423 2953 +3 4626 7835 4627 +3 7525 2815 6480 +3 6022 7128 5321 +3 4786 4678 7735 +3 5874 6967 7836 +3 4789 7093 6579 +3 5085 2582 6948 +3 3450 3516 7244 +3 2446 6683 7837 +3 1785 1787 1786 +3 1650 1698 7255 +3 6530 1716 1801 +3 7838 3152 4898 +3 4395 7839 1285 +3 5987 7206 5264 +3 1076 1075 7840 +3 7693 7351 3499 +3 283 241 4871 +3 1750 6747 6746 +3 61 62 584 +3 7841 601 621 +3 622 647 674 +3 886 7304 936 +3 2719 862 2098 +3 5629 6892 2578 +3 6280 7137 6281 +3 4704 4702 4671 +3 810 6829 2002 +3 6004 4683 7608 +3 4340 7131 7842 +3 2821 2757 7843 +3 4610 4802 5238 +3 5437 6322 2828 +3 5853 1774 5333 +3 7844 5575 4769 +3 1915 6514 1858 +3 4607 7289 4693 +3 1032 1031 6258 +3 1608 5596 1607 +3 7566 1567 7251 +3 6410 2379 6606 +3 6270 7393 6977 +3 5545 7607 4821 +3 5949 5602 7303 +3 4627 7835 7845 +3 7079 2026 7460 +3 6685 7381 5805 +3 5610 4251 5060 +3 7846 7880 7367 +3 6575 1743 8113 +3 3536 7847 3520 +3 1890 7848 7849 +3 3042 3083 7850 +3 4325 4485 4486 +3 1884 1934 1933 +3 5479 1233 7310 +3 4429 263 293 +3 7851 7089 3117 +3 2161 5392 2162 +3 1045 6794 5436 +3 7852 1747 1782 +3 6965 6964 684 +3 7853 2194 2241 +3 562 561 6037 +3 6751 7854 6475 +3 7855 1655 7125 +3 6656 7856 3107 +3 1754 6634 1705 +3 1707 7035 1755 +3 2550 2594 2595 +3 2838 6901 4148 +3 7858 6890 7857 +3 1702 6990 1790 +3 7663 5482 3656 +3 2738 7081 7971 +3 4395 1285 1192 +3 4725 7859 6778 +3 3367 2661 3369 +3 5971 447 6857 +3 1388 6648 7354 +3 1946 7860 4411 +3 1436 7861 4054 +3 5736 7862 1910 +3 7863 7201 5996 +3 7557 7864 7312 +3 3909 6308 4753 +3 5102 4709 5636 +3 7368 5914 2159 +3 2965 4307 4306 +3 7865 4014 7756 +3 5021 1456 5020 +3 4860 2919 2918 +3 925 8224 6743 +3 1488 7431 1489 +3 7866 4063 2149 +3 2962 2965 3010 +3 7786 5916 5915 +3 876 6296 5203 +3 1110 1109 4289 +3 3651 3652 6742 +3 2335 7893 4473 +3 1233 5758 7286 +3 6836 6339 8124 +3 2833 4144 7867 +3 1748 5254 1749 +3 7013 810 7708 +3 5964 980 981 +3 6876 4662 4660 +3 7888 818 7617 +3 3795 6694 7868 +3 1357 1406 1407 +3 7869 5671 4310 +3 3260 4663 5812 +3 7492 7870 4269 +3 7871 919 5779 +3 3574 6305 6744 +3 2770 1448 1449 +3 3162 5070 7872 +3 2655 5834 6542 +3 3775 2999 3774 +3 7873 8044 3749 +3 7874 5593 3526 +3 7875 2905 2968 +3 1794 1751 4046 +3 2541 2583 7876 +3 1893 6707 1892 +3 7130 5835 3518 +3 1387 1472 1686 +3 3036 7758 2130 +3 2894 6504 5708 +3 7862 1852 1910 +3 7223 5566 7222 +3 5055 5742 4997 +3 4302 4303 6385 +3 1178 1143 8031 +3 7763 7877 7187 +3 4467 4563 4564 +3 3112 7878 7949 +3 4627 7845 1249 +3 674 7197 675 +3 7880 7879 2323 +3 7881 5870 1505 +3 2718 6104 2528 +3 5760 7501 5136 +3 3802 2727 5330 +3 2573 1176 5756 +3 1941 4135 1940 +3 2009 2051 7882 +3 7883 547 3323 +3 7935 6417 1779 +3 404 405 402 +3 4941 4944 4932 +3 6309 3762 7696 +3 4202 2192 6667 +3 4304 7417 7651 +3 1531 1469 5982 +3 5673 7884 8070 +3 3246 7446 1560 +3 900 2131 3020 +3 850 882 4390 +3 7347 7346 7425 +3 3519 7372 7155 +3 78 583 7885 +3 7870 6196 2557 +3 1343 7886 7863 +3 6092 5173 5732 +3 7396 7395 7887 +3 2321 4271 6247 +3 2949 4165 4164 +3 7888 5006 2069 +3 5595 3144 237 +3 4790 2647 7495 +3 6139 2369 6138 +3 2909 7720 2970 +3 1779 7889 6135 +3 7890 4993 4991 +3 4340 7842 5487 +3 6682 6750 4152 +3 6233 4518 5528 +3 7427 3046 7891 +3 2437 1225 5698 +3 7892 1882 7159 +3 1289 6581 7504 +3 4074 6997 4075 +3 302 2792 562 +3 3491 3488 7552 +3 4475 4474 7893 +3 2706 3041 2860 +3 7451 7894 3773 +3 919 6795 918 +3 7895 4980 4902 +3 6921 3320 6372 +3 525 357 356 +3 5063 5377 3867 +3 7938 7896 3756 +3 7723 2043 5045 +3 1115 7897 1489 +3 3042 7850 3043 +3 5770 5193 5194 +3 380 3833 381 +3 5626 1734 5627 +3 6188 4199 7004 +3 5541 5255 1815 +3 6756 5124 1972 +3 157 120 6536 +3 6799 2461 7898 +3 3166 7899 7018 +3 7900 4630 1490 +3 754 7901 788 +3 2335 4475 7893 +3 7903 10 7902 +3 2980 535 501 +3 1272 5343 7202 +3 3954 5608 5966 +3 2759 2760 1441 +3 4861 4864 7271 +3 4970 6200 6199 +3 7904 150 8179 +3 1308 5628 7905 +3 7287 1866 7906 +3 2177 2228 2227 +3 842 6159 843 +3 7907 8050 1187 +3 5447 2540 7908 +3 1399 5678 6805 +3 1657 1607 1656 +3 4137 5580 1939 +3 1358 1323 7909 +3 6380 2685 2214 +3 870 7910 926 +3 767 6180 766 +3 5845 4790 2646 +3 2364 2366 2365 +3 1581 2105 1710 +3 7865 533 4014 +3 222 6576 3101 +3 2268 7911 6426 +3 7912 6210 1919 +3 558 224 334 +3 7913 4693 4692 +3 175 3376 6811 +3 775 8206 774 +3 5156 5157 4810 +3 5737 1816 7533 +3 6447 2983 5791 +3 1163 7724 7914 +3 5669 8059 5969 +3 3451 5263 5676 +3 4852 4973 4853 +3 1363 1376 1423 +3 7915 2435 2484 +3 5217 6545 5166 +3 7130 8220 1777 +3 7344 8005 4287 +3 2335 7916 4475 +3 3433 3432 493 +3 7177 2898 7917 +3 1547 7267 6630 +3 7918 3029 1500 +3 4885 1697 5471 +3 5723 5722 7528 +3 6563 2788 1455 +3 6171 6386 1393 +3 4587 1747 7852 +3 7297 5607 7919 +3 7920 5624 4688 +3 7687 2776 5997 +3 3320 6808 6358 +3 1515 5692 6419 +3 6968 8202 3495 +3 7921 8081 3623 +3 2083 2126 2127 +3 5932 5279 7922 +3 7923 3368 3365 +3 4755 4756 6943 +3 2297 2298 2183 +3 7639 2444 2734 +3 2342 2344 2343 +3 3140 3063 7924 +3 7168 7925 4441 +3 7071 5235 227 +3 7926 7912 5837 +3 1553 5137 6153 +3 7736 3236 7529 +3 3466 6376 3467 +3 7066 5208 3159 +3 717 5810 6580 +3 6618 7927 1409 +3 5927 672 7682 +3 6957 6956 229 +3 6994 6533 4890 +3 7928 3521 7596 +3 4271 2322 2513 +3 7929 6055 5634 +3 419 420 484 +3 69 3486 3493 +3 6529 7930 8065 +3 616 592 5261 +3 1970 8051 2061 +3 651 6558 719 +3 7676 6596 7677 +3 4315 4317 6425 +3 6046 5227 6995 +3 3391 4901 3392 +3 6063 4797 7931 +3 7932 1702 7710 +3 7933 1671 5399 +3 274 273 298 +3 3221 7221 507 +3 3753 3714 3713 +3 7934 6 6902 +3 7935 7375 1693 +3 583 582 7885 +3 617 7936 640 +3 1552 7937 6035 +3 1003 1223 1222 +3 3274 758 793 +3 1672 4706 1719 +3 6678 1194 5317 +3 3790 2439 1350 +3 7938 7160 7896 +3 4145 7692 4146 +3 6887 6278 7939 +3 6876 5635 4700 +3 6271 978 7940 +3 3742 3723 3725 +3 7220 1620 5202 +3 7212 1355 4049 +3 600 622 5455 +3 7348 1871 7493 +3 5234 7941 6822 +3 6767 5749 6766 +3 1128 1129 1167 +3 312 525 355 +3 7878 3977 7949 +3 986 987 934 +3 1862 1865 1864 +3 5532 7691 5485 +3 5960 6306 3745 +3 8114 7763 7942 +3 3129 3128 7367 +3 7523 7943 2294 +3 7944 3107 7856 +3 1640 1688 7945 +3 1326 1361 1360 +3 7281 3729 7946 +3 1213 1163 7914 +3 7947 290 4760 +3 73 137 71 +3 5387 5431 3534 +3 4343 4344 4565 +3 7722 3542 704 +3 6873 4274 5211 +3 3698 6268 4543 +3 4098 2632 4036 +3 5838 3653 3615 +3 5290 7182 7442 +3 2707 2651 2706 +3 5547 6797 7948 +3 7923 7750 3368 +3 3516 1691 3518 +3 3112 7949 3093 +3 2384 7950 2383 +3 7952 7951 8076 +3 1215 1166 1266 +3 7953 6449 1618 +3 8149 7954 7955 +3 7956 7728 7642 +3 6204 2548 7957 +3 2204 2159 4500 +3 7674 6988 7821 +3 1466 675 715 +3 2749 2751 7538 +3 1934 5848 1979 +3 7958 1694 6572 +3 6992 7688 6993 +3 6283 7627 6234 +3 7174 7245 4284 +3 7960 7959 4505 +3 6117 1076 7840 +3 1487 4625 5780 +3 7961 1804 5026 +3 2494 2446 7837 +3 5847 1188 7082 +3 3928 7962 3883 +3 2729 2136 2184 +3 3420 3421 2981 +3 7084 7247 5927 +3 5902 2371 7867 +3 6130 4113 6129 +3 3308 5627 5286 +3 7963 6206 3541 +3 332 4667 333 +3 7965 4792 7964 +3 2669 7803 6928 +3 421 422 484 +3 5152 1694 7958 +3 7286 1234 5540 +3 7102 7231 7230 +3 7481 689 688 +3 3738 7156 3727 +3 3305 6255 545 +3 7748 7726 3311 +3 7747 2649 7966 +3 3989 7760 3941 +3 4390 934 6072 +3 991 6772 7967 +3 7968 256 254 +3 5361 1364 7969 +3 1139 7970 5304 +3 6455 462 295 +3 271 270 3689 +3 5496 281 280 +3 7704 7038 4509 +3 3054 1192 1247 +3 6140 4773 1716 +3 5581 5580 2020 +3 7546 3197 7575 +3 6226 3066 3027 +3 4241 4607 8120 +3 7971 2926 2869 +3 6272 4232 5107 +3 7551 2603 7045 +3 6342 757 4374 +3 7342 7341 3662 +3 5851 7239 4789 +3 3213 6590 6591 +3 4238 4240 7373 +3 7972 3168 5369 +3 6030 1348 7179 +3 3240 996 7127 +3 7973 5103 6131 +3 4748 5974 5912 +3 5829 7030 7979 +3 14 26 25 +3 4341 4563 4561 +3 1570 7004 7974 +3 6588 2490 2533 +3 3744 4283 5960 +3 7099 7098 6085 +3 6432 6431 956 +3 364 8117 7975 +3 5642 6880 2100 +3 1437 1438 7621 +3 7631 7630 1758 +3 4706 5766 4705 +3 4968 1173 6213 +3 3532 3924 3531 +3 7976 1150 1149 +3 1009 970 7028 +3 6699 6698 617 +3 6156 6245 6795 +3 7977 5564 593 +3 1973 1972 6151 +3 1625 5290 1670 +3 5129 2932 5401 +3 7979 7978 4066 +3 6978 2947 3002 +3 5860 6560 5859 +3 3363 5432 7436 +3 6692 4681 4683 +3 7742 7741 1501 +3 7980 2645 2702 +3 7981 4686 4685 +3 2546 2590 2589 +3 6195 4311 7982 +3 2378 6897 6898 +3 5739 815 850 +3 5127 5509 7983 +3 7805 7602 4513 +3 1463 1462 7984 +3 7359 6682 6706 +3 6161 6720 6160 +3 4004 5644 3959 +3 6086 1841 1840 +3 2025 2075 7985 +3 4872 4873 4953 +3 4764 778 817 +3 2468 2469 2514 +3 770 7662 811 +3 3774 5445 3695 +3 7936 4112 6511 +3 7987 7986 8130 +3 8133 4766 5544 +3 7849 7848 5461 +3 1448 7988 4123 +3 5807 1150 7976 +3 8116 5877 1630 +3 6513 8038 26 +3 4123 7988 1245 +3 1954 2000 1999 +3 1364 7703 5192 +3 3097 6179 3098 +3 5557 7989 8125 +3 7339 1239 1310 +3 2222 7990 7573 +3 1312 4059 4057 +3 1797 6634 1891 +3 5371 7991 2074 +3 7992 3883 7962 +3 1237 5628 1308 +3 4102 4103 4100 +3 2549 2506 3810 +3 1672 1719 1673 +3 7410 1308 7993 +3 6919 2937 2997 +3 3583 3633 5982 +3 7626 1424 2004 +3 3127 3401 3036 +3 7994 1791 7268 +3 1890 7849 1891 +3 4590 7278 7919 +3 540 140 6714 +3 7771 5948 3707 +3 3383 3384 2065 +3 2923 6267 2982 +3 1405 773 1404 +3 2050 3456 6775 +3 3546 2936 6036 +3 4704 4703 5316 +3 6311 4680 7995 +3 7747 7966 7265 +3 1358 7909 6672 +3 5140 3123 3122 +3 3185 1595 1594 +3 4339 5855 6007 +3 4215 4217 885 +3 2537 3217 3461 +3 6822 3593 3594 +3 7254 7677 7389 +3 5956 3159 5208 +3 1922 846 876 +3 124 163 198 +3 1885 1937 1934 +3 4159 7996 343 +3 7952 915 7951 +3 980 7997 5638 +3 3613 6742 3614 +3 4439 7700 7311 +3 6850 4484 8013 +3 4274 6243 8164 +3 7894 5309 3773 +3 7643 4858 6917 +3 5920 7165 4976 +3 4198 1929 1969 +3 6826 1151 7388 +3 7998 8167 542 +3 5646 7646 2247 +3 3631 7974 5230 +3 7912 4430 1868 +3 6894 6893 5820 +3 7759 7758 6586 +3 7999 7586 1955 +3 2169 6441 4906 +3 4888 6218 5175 +3 2674 2673 2757 +3 3731 4257 4389 +3 6403 6402 3697 +3 8000 8201 2279 +3 7307 7945 7306 +3 2303 6594 3395 +3 4054 7861 5210 +3 7963 5550 6206 +3 8001 188 534 +3 6548 6508 2756 +3 3528 3529 3527 +3 6103 3649 3608 +3 7572 2853 2903 +3 7578 2296 2086 +3 7279 3979 3930 +3 3285 2084 3286 +3 7803 6962 7802 +3 7078 1062 8002 +3 5148 7750 5171 +3 1182 6033 8003 +3 1631 1594 5517 +3 6845 7872 8004 +3 5957 5956 8005 +3 3678 157 6757 +3 4798 4799 4823 +3 2617 5744 2658 +3 4558 4337 6660 +3 1572 7745 1573 +3 2621 5631 3602 +3 2413 6799 7898 +3 875 5203 8006 +3 6108 3425 3424 +3 8007 5578 7820 +3 5755 2733 5615 +3 6835 7059 8008 +3 7937 7415 6035 +3 1126 1086 1165 +3 3642 7376 8009 +3 479 481 3666 +3 5667 4937 5191 +3 6415 6414 8010 +3 2192 2143 2193 +3 6792 897 7224 +3 7749 3624 3577 +3 8011 8019 4162 +3 8013 8012 7283 +3 3227 185 7228 +3 5885 2130 7759 +3 5717 7424 1440 +3 8014 6587 7647 +3 3368 2618 3367 +3 6933 8015 2820 +3 4028 8016 5938 +3 8015 1018 8017 +3 4747 7844 4769 +3 3321 2464 1954 +3 489 426 4179 +3 8079 7425 8018 +3 8019 469 391 +3 8020 2639 2785 +3 4374 7529 6076 +3 8108 2029 8021 +3 6541 8022 7743 +3 749 3121 3851 +3 1171 1133 1172 +3 8023 7069 2198 +3 7618 6415 8010 +3 8024 2455 7101 +3 7951 3573 8025 +3 5830 1463 7984 +3 7880 7846 7879 +3 2217 2169 4905 +3 6602 7392 7545 +3 7886 8026 7863 +3 1996 1998 2033 +3 8012 8013 4484 +3 2530 7383 5433 +3 2899 6993 8027 +3 791 755 948 +3 6592 1418 7178 +3 6958 1913 8028 +3 2049 6775 3456 +3 1414 6361 8029 +3 2326 6657 2327 +3 5385 4336 7781 +3 8030 7967 1382 +3 1178 8031 8100 +3 669 5367 709 +3 8058 1132 3390 +3 8032 7604 7831 +3 3698 1209 1264 +3 8033 239 557 +3 7944 8034 3107 +3 5909 6246 5298 +3 6608 931 2213 +3 5883 2790 2839 +3 5917 7891 4232 +3 3251 2711 2039 +3 173 5458 546 +3 1325 7634 1326 +3 8035 4566 4465 +3 4376 4254 7755 +3 6440 1185 2719 +3 3501 3477 3502 +3 2659 2660 3334 +3 5178 6651 5526 +3 2690 4647 7718 +3 6693 8036 7924 +3 840 804 6918 +3 3351 1425 1467 +3 8037 3258 6032 +3 2646 7495 6054 +3 5306 3492 3488 +3 5924 4983 4984 +3 47 48 8038 +3 7884 2747 8039 +3 8040 604 625 +3 7871 8041 919 +3 5903 5946 7075 +3 206 207 7732 +3 4410 4412 4411 +3 7360 7790 3387 +3 7863 8026 7201 +3 486 485 6495 +3 6879 7358 2678 +3 2928 8042 3467 +3 439 440 513 +3 5993 4087 6227 +3 6976 5731 3441 +3 4607 4693 7913 +3 1973 1935 6756 +3 5463 3136 6924 +3 3211 2137 3210 +3 5444 5852 5853 +3 8043 1897 4736 +3 7366 4914 7785 +3 611 586 7611 +3 5933 7472 3820 +3 6996 8044 2439 +3 3688 565 6757 +3 300 6461 350 +3 2120 2176 2175 +3 3381 7831 477 +3 7874 685 5593 +3 4592 6827 4577 +3 460 3181 5854 +3 5351 4577 4593 +3 3458 2353 2352 +3 4682 4681 5494 +3 7512 1412 8045 +3 1783 1831 1830 +3 1096 7809 5468 +3 8046 1619 1665 +3 5569 8047 3167 +3 8048 4972 4908 +3 2190 2191 7671 +3 6796 6810 3372 +3 7320 3935 7321 +3 5011 6056 5010 +3 5673 7441 6892 +3 8049 170 205 +3 3891 7222 5491 +3 2849 2823 2850 +3 6251 3903 3232 +3 2648 2704 5911 +3 4516 7584 7535 +3 6961 6171 6443 +3 7187 7877 535 +3 6620 1663 1709 +3 6086 4639 4638 +3 5823 5847 1281 +3 1101 1147 8050 +3 5549 3085 435 +3 8051 2015 2061 +3 2879 2817 8052 +3 5531 1959 7523 +3 7971 2739 2926 +3 3322 3321 4325 +3 4879 819 5295 +3 7794 3663 7795 +3 8053 6723 5313 +3 1945 1986 6873 +3 4802 4804 5782 +3 2476 3576 2524 +3 1937 1886 1936 +3 5333 6374 1733 +3 8015 8017 2820 +3 1587 5585 5700 +3 4311 4310 7608 +3 7954 3148 7955 +3 7432 1778 5350 +3 5909 5908 5752 +3 3483 3496 3495 +3 7331 1510 6617 +3 6085 5958 2035 +3 7890 4366 4993 +3 3791 6552 7624 +3 4384 4386 4385 +3 2635 4149 7808 +3 6314 8080 1316 +3 7300 8054 5012 +3 2693 2692 5231 +3 40 69 99 +3 6435 4169 4168 +3 4078 7256 2115 +3 7192 124 162 +3 1834 1788 5605 +3 205 206 243 +3 4646 6540 7544 +3 4417 2470 8055 +3 4402 1619 8046 +3 5226 5991 993 +3 1175 5759 5758 +3 3123 3078 6232 +3 7739 2005 2047 +3 6512 6511 4948 +3 4740 1668 6140 +3 812 7414 8056 +3 8048 4856 4972 +3 3031 3070 3032 +3 3874 6813 8057 +3 5797 7673 131 +3 4034 7379 7592 +3 3086 5337 3048 +3 2619 2620 7226 +3 6302 7594 5331 +3 3348 1132 8058 +3 1435 1434 3716 +3 7029 774 7603 +3 5379 2025 7985 +3 5786 3386 6596 +3 5447 7908 6991 +3 7802 7483 2880 +3 2484 5222 6871 +3 7774 1054 5918 +3 2454 7507 7506 +3 6897 4915 4965 +3 6310 3434 2146 +3 2827 8059 6202 +3 3405 6210 3406 +3 8138 8060 1384 +3 2473 8061 2521 +3 7132 5185 1736 +3 420 6911 353 +3 4704 8062 6463 +3 3643 2449 3644 +3 3367 4586 4585 +3 7507 8063 8024 +3 6394 2875 3537 +3 1575 1577 1609 +3 8064 6172 4933 +3 5805 1437 5272 +3 6935 3153 6429 +3 8108 1995 2029 +3 8065 1416 1463 +3 3754 3755 7285 +3 1152 7554 7138 +3 7979 6433 7978 +3 6676 5569 5369 +3 5943 1093 6472 +3 6774 262 334 +3 4652 2893 8066 +3 8067 6080 7539 +3 8068 2504 2546 +3 7062 7742 947 +3 3155 7034 3153 +3 7009 4352 6363 +3 7991 6390 2074 +3 6937 7323 5640 +3 3006 7250 4423 +3 103 496 7214 +3 5763 5396 3279 +3 2319 2257 8069 +3 5277 3523 5278 +3 5508 5574 3475 +3 8070 8039 2813 +3 2319 8069 5179 +3 4693 4608 4694 +3 7508 4854 2170 +3 6997 1242 7181 +3 4632 1403 8071 +3 5386 3339 8072 +3 122 92 123 +3 2280 7284 2281 +3 7326 803 802 +3 2526 5327 8073 +3 1831 5725 8074 +3 1414 7734 6361 +3 5055 4806 6462 +3 8075 5684 6677 +3 4557 4478 4477 +3 2306 2305 3704 +3 7928 6994 3521 +3 8076 8025 839 +3 4046 7027 7039 +3 3369 7540 4586 +3 1123 5957 8005 +3 5717 7010 5716 +3 7813 3731 7812 +3 4970 7824 6200 +3 2906 2905 7875 +3 6547 5600 1626 +3 2154 7439 7169 +3 3605 2466 2421 +3 8082 1940 1756 +3 7780 1168 1169 +3 6195 7982 4682 +3 3137 7018 7899 +3 5843 5842 3146 +3 2643 8077 8173 +3 4789 6579 7607 +3 4484 4485 6598 +3 7818 3916 5608 +3 7248 7247 7084 +3 7407 7795 2993 +3 2986 1130 1223 +3 7512 8045 6674 +3 740 2759 8078 +3 7292 8079 7291 +3 7144 4357 4602 +3 7839 1317 8080 +3 8081 8215 5884 +3 1799 2775 8082 +3 3458 8083 7645 +3 8084 148 572 +3 2616 7986 7987 +3 7433 667 7434 +3 8085 7623 7622 +3 2008 1961 6132 +3 6615 5562 5765 +3 1387 1386 8086 +3 3639 1965 5907 +3 6003 1705 5420 +3 3357 5836 6804 +3 6812 7445 6406 +3 644 619 4064 +3 5536 3406 7926 +3 7297 7919 4591 +3 2957 5924 6313 +3 5438 1191 2277 +3 2334 7916 2389 +3 4543 4511 7602 +3 5990 2562 4849 +3 2934 7272 7246 +3 2610 2611 6832 +3 1100 1059 7907 +3 1316 8080 4396 +3 7789 8221 1221 +3 4262 4292 4264 +3 3852 8087 3067 +3 136 540 174 +3 3911 3915 3912 +3 5940 8088 2693 +3 6771 2441 2487 +3 5932 7922 8089 +3 3992 2418 3993 +3 6259 7496 3575 +3 4316 4315 4548 +3 7374 6018 6019 +3 6494 1303 1273 +3 6593 214 258 +3 7825 1861 5287 +3 8090 8131 5875 +3 785 4939 5649 +3 2502 2459 6637 +3 4197 6443 7629 +3 8091 5613 3075 +3 7256 7469 7709 +3 8092 541 451 +3 3629 1686 3630 +3 5076 4645 883 +3 6613 6612 2306 +3 6276 6507 6395 +3 6510 6435 6583 +3 6822 6821 3593 +3 1910 1911 6736 +3 6908 1993 2028 +3 1471 7328 1532 +3 2339 6032 2716 +3 8087 3799 3067 +3 1051 8093 7780 +3 8094 1219 7060 +3 1811 5240 7023 +3 6407 6697 6696 +3 7787 4831 6138 +3 5711 8095 5998 +3 3980 4048 1704 +3 4860 6921 2865 +3 1905 6534 8096 +3 8034 3099 3107 +3 966 5320 5319 +3 4729 6765 2697 +3 3343 7855 1654 +3 8097 8006 7594 +3 1174 5884 4191 +3 2714 2713 6590 +3 744 6568 781 +3 2755 7095 2816 +3 8011 7819 8019 +3 4048 4083 7715 +3 8098 3359 1867 +3 1775 7306 6252 +3 1606 8099 7855 +3 24 44 76 +3 7579 5466 5405 +3 1026 1016 5706 +3 548 184 7053 +3 8100 1235 1277 +3 6592 6865 4316 +3 2443 2396 5840 +3 6474 6456 2438 +3 1853 8101 6107 +3 5754 6908 5942 +3 83 152 151 +3 863 8102 921 +3 1472 1471 1533 +3 3317 6782 6781 +3 8103 3884 7694 +3 4839 6249 6248 +3 2561 8104 8105 +3 4161 6224 153 +3 3163 7527 7526 +3 8106 2376 3129 +3 6028 740 8078 +3 4609 4610 5701 +3 3256 3258 8037 +3 2404 5098 8107 +3 7888 888 5006 +3 2383 7950 5198 +3 628 7068 5770 +3 1953 6736 7099 +3 6543 6449 7953 +3 6065 8108 6217 +3 7684 7463 2988 +3 3007 2957 5393 +3 2959 2899 8027 +3 6689 6776 2570 +3 2382 2383 2427 +3 5193 7799 6077 +3 6201 5781 7002 +3 936 5009 1994 +3 7569 1654 7570 +3 696 6027 5716 +3 7324 6763 6465 +3 3429 7412 74 +3 3642 8009 6498 +3 5391 5390 1760 +3 8070 7884 8039 +3 4923 2619 8109 +3 6625 5622 6626 +3 499 500 6301 +3 5029 6653 1988 +3 1302 7203 3581 +3 5775 275 5828 +3 8110 3813 3843 +3 5757 7550 1713 +3 1371 8111 1049 +3 7638 3115 7637 +3 4994 7754 4989 +3 435 8136 543 +3 8112 7633 635 +3 916 5905 4187 +3 6887 7939 2921 +3 4240 516 4239 +3 3298 3299 5813 +3 5551 799 836 +3 6725 766 6208 +3 7895 6920 4849 +3 3585 8113 7315 +3 3423 367 8114 +3 1122 1078 6351 +3 7242 6985 6817 +3 5482 5481 3655 +3 3616 7277 1803 +3 8115 1040 1083 +3 7834 6643 8116 +3 363 7975 8117 +3 5246 6423 8118 +3 7577 5637 2906 +3 7610 5859 1591 +3 5049 7428 5051 +3 2942 2941 7225 +3 8119 4940 4939 +3 8121 4241 8120 +3 4017 7672 7456 +3 3852 3853 7020 +3 3927 3976 3928 +3 781 1395 7252 +3 365 364 7975 +3 8122 5030 4775 +3 6782 5985 6297 +3 6388 7728 7956 +3 6840 3033 6244 +3 8019 155 469 +3 7229 4569 4568 +3 6028 5716 6027 +3 822 8123 6952 +3 8061 2474 2521 +3 3865 1120 7788 +3 8074 5725 5724 +3 4309 7869 4311 +3 1387 8086 1472 +3 1300 6060 8124 +3 6357 1799 1800 +3 5783 6204 7957 +3 3147 4287 5208 +3 8125 3570 803 +3 6525 7085 4071 +3 871 7462 7910 +3 7999 1854 7586 +3 8105 8104 2644 +3 8126 5032 3194 +3 5365 5364 7248 +3 4161 154 4162 +3 6664 6380 4643 +3 1226 1225 1168 +3 5837 7521 2289 +3 4514 1044 1043 +3 3140 7924 8036 +3 5643 4482 8127 +3 5774 7299 6227 +3 8126 2114 5032 +3 1865 1821 2290 +3 2766 1446 2767 +3 2485 5251 7131 +3 7219 7656 7657 +3 6040 6039 5535 +3 829 8128 855 +3 2 1 7613 +3 357 313 423 +3 8129 7524 4778 +3 7620 6172 8064 +3 4586 6934 7227 +3 1857 6958 8028 +3 6727 3838 783 +3 361 3939 7753 +3 5119 7016 7017 +3 4808 6463 6462 +3 6663 1932 1977 +3 1308 7905 1347 +3 1236 7600 1237 +3 7152 5856 6831 +3 3687 524 3686 +3 6232 6484 2275 +3 5638 7997 7240 +3 4732 4733 5233 +3 8130 6325 4878 +3 594 7084 8131 +3 7727 567 566 +3 8132 5502 6381 +3 7752 5512 4307 +3 5690 5689 2059 +3 1370 954 999 +3 1687 3400 7581 +3 3162 7872 6845 +3 2036 1999 2037 +3 4981 2845 2843 +3 5125 2357 5126 +3 4573 4348 4455 +3 5715 1669 4914 +3 2402 2401 6851 +3 7261 5912 8133 +3 3680 7514 4408 +3 4173 6510 6583 +3 1647 2534 1694 +3 6238 1597 1637 +3 3815 5674 7386 +3 6562 1354 6563 +3 7063 6715 1110 +3 1930 1931 1974 +3 4148 4149 2637 +3 4655 4333 4331 +3 8091 3073 3132 +3 1877 1876 1925 +3 1385 6818 5353 +3 2880 2881 2939 +3 601 600 621 +3 3376 3379 3377 +3 5165 8134 411 +3 5663 4002 3955 +3 6369 5398 7429 +3 6489 5668 4296 +3 7326 7314 5425 +3 7474 7473 618 +3 3604 3605 6074 +3 6051 3853 6050 +3 6221 1231 7744 +3 2224 6503 2225 +3 4596 4598 6063 +3 896 6860 4680 +3 8004 7302 6845 +3 4222 286 316 +3 7448 8135 1422 +3 1644 1601 7315 +3 1476 1478 2293 +3 8136 5225 510 +3 6423 5630 7810 +3 7948 3336 3334 +3 3430 7903 7902 +3 8137 7965 2550 +3 231 232 274 +3 7162 6469 4448 +3 8062 4780 6463 +3 607 629 630 +3 3047 7491 5899 +3 4131 4133 4132 +3 4417 8055 7420 +3 6553 4719 6554 +3 2585 2587 7478 +3 6289 2440 3215 +3 5242 2613 3672 +3 59 7116 4009 +3 6888 2169 2217 +3 4346 2706 6731 +3 2050 5988 3456 +3 8138 3632 8060 +3 4660 7000 4440 +3 8139 6846 2787 +3 3667 7779 7471 +3 1346 4197 1392 +3 700 5297 5400 +3 4430 1919 3408 +3 3253 2180 3254 +3 3577 3578 1140 +3 7881 5871 5870 +3 463 5454 4260 +3 4253 3210 5563 +3 3154 4696 3156 +3 1074 6117 3865 +3 7816 1489 7897 +3 5857 4441 7925 +3 5561 2251 7371 +3 2175 2226 6503 +3 6110 6109 5849 +3 7929 5438 6055 +3 6078 5857 4671 +3 1882 6186 7159 +3 8041 6156 919 +3 7599 8140 8163 +3 7127 1046 1085 +3 7100 6735 6809 +3 6758 2398 7639 +3 168 170 8049 +3 5160 6628 2491 +3 4739 1841 8141 +3 6633 7620 639 +3 5072 7338 3524 +3 3314 7399 7782 +3 4419 5413 5231 +3 3120 6722 6727 +3 4806 4807 5056 +3 8142 5207 2420 +3 7766 3053 4469 +3 4143 2833 7867 +3 8143 6937 6501 +3 8016 4030 5938 +3 6010 3781 6011 +3 4530 4532 4531 +3 7789 1221 1220 +3 18 8144 5588 +3 8145 6564 592 +3 4762 1387 6081 +3 2228 4525 2229 +3 920 2971 6048 +3 5356 1871 1872 +3 2349 2353 2402 +3 413 345 5922 +3 4173 6583 6584 +3 1013 8146 848 +3 8147 1848 1951 +3 5461 1939 5581 +3 3218 2861 3335 +3 1235 7410 7993 +3 4084 1795 4086 +3 8103 3931 3884 +3 5017 5018 1286 +3 5624 4600 4688 +3 4622 935 7443 +3 5139 6969 5138 +3 2017 7186 2016 +3 7636 8148 5897 +3 7733 8149 5068 +3 4894 4895 7778 +3 2189 2188 2239 +3 8151 8150 5651 +3 4760 547 7883 +3 933 934 882 +3 3062 3023 5662 +3 8152 6571 62 +3 5497 8153 4113 +3 6005 7069 8023 +3 5863 7421 6763 +3 3372 2981 3371 +3 2948 2888 8154 +3 8115 6070 1040 +3 8155 2576 6025 +3 6100 6101 4498 +3 7847 3538 3520 +3 5071 2535 4045 +3 4492 4553 4554 +3 8088 5708 4650 +3 7806 5597 7807 +3 668 667 706 +3 7484 3655 7103 +3 5643 8127 3522 +3 659 3567 1025 +3 5099 3756 7896 +3 7606 7110 4135 +3 4213 4214 2988 +3 1030 6119 1076 +3 5680 3004 4104 +3 2806 6050 5131 +3 3179 3335 7851 +3 6717 2993 3661 +3 7385 7804 7530 +3 7083 6852 333 +3 2433 2434 4335 +3 2694 5603 5826 +3 3494 6110 3496 +3 911 912 909 +3 3241 5534 3809 +3 8156 8169 3273 +3 6040 2181 3289 +3 7628 2954 3006 +3 3071 5127 7983 +3 5824 5278 3531 +3 4104 3003 4105 +3 6636 7637 3041 +3 7689 5955 7254 +3 3057 3058 3017 +3 5921 3192 5957 +3 8157 4581 6403 +3 3947 7157 8158 +3 604 603 625 +3 7537 2285 1513 +3 4035 2594 4036 +3 5293 1540 2784 +3 2013 1970 2014 +3 6343 5442 4935 +3 5304 7970 3579 +3 4629 5878 4630 +3 242 205 5079 +3 4268 7312 7864 +3 39 17 5482 +3 3565 3567 3566 +3 769 7013 809 +3 8007 7713 5578 +3 1813 8159 8204 +3 6066 7777 6067 +3 3450 6421 3449 +3 7798 7797 4690 +3 6303 6260 8160 +3 5530 7686 6191 +3 1755 1756 7262 +3 8200 1629 1676 +3 8033 199 239 +3 4654 4437 3818 +3 4323 6792 5709 +3 8113 4406 7315 +3 7855 8099 1655 +3 2761 6266 3365 +3 1660 4083 8161 +3 6811 3377 6929 +3 2698 5126 2405 +3 3275 4897 3274 +3 1491 4633 5712 +3 5973 7807 2231 +3 4951 6207 1029 +3 118 119 4373 +3 6690 2435 7915 +3 8157 4582 4581 +3 5358 7405 6088 +3 4567 6891 4462 +3 5493 7731 1201 +3 3274 1812 5416 +3 1445 1444 6622 +3 2451 4209 8162 +3 5252 8163 2377 +3 7536 1020 1059 +3 1894 1896 1895 +3 7328 1604 1603 +3 5220 1967 6401 +3 5010 4493 4494 +3 2067 8164 5326 +3 111 192 152 +3 7452 5413 4419 +3 8166 8165 7260 +3 6697 6384 4090 +3 4319 4551 4552 +3 7373 4239 4930 +3 8167 4025 4024 +3 4569 7120 4570 +3 6042 1899 1947 +3 2267 7396 7887 +3 3286 6040 3287 +3 6849 1679 8168 +3 6978 3000 4031 +3 7437 4413 2070 +3 2552 2554 2553 +3 1980 1981 7472 +3 8142 7046 5207 +3 6487 4442 8169 +3 5652 4546 4507 +3 2029 6566 2079 +3 881 7812 2140 +3 3736 6011 6922 +3 3679 6134 3686 +3 2121 7680 2123 +3 8170 4844 7917 +3 7823 3765 7094 +3 5292 7056 4478 +3 742 741 6142 +3 3393 1521 3394 +3 7721 5932 8089 +3 7996 296 343 +3 6283 4987 8171 +3 5419 6129 6253 +3 7115 6761 682 +3 3315 8000 6912 +3 6152 7314 3527 +3 2404 8107 3474 +3 6403 6131 2826 +3 8112 32 7633 +3 6842 2139 2189 +3 4495 4549 6257 +3 7051 1315 7141 +3 1830 1831 8074 +3 7705 7049 7427 +3 4140 2832 4142 +3 8173 4895 8172 +3 6766 7420 4416 +3 6183 363 8117 +3 7895 4848 4980 +3 8174 5624 7920 +3 4419 3996 4421 +3 6426 7911 8175 +3 4346 6137 4345 +3 5616 7561 4360 +3 7698 8194 8176 +3 879 848 8146 +3 814 5092 3973 +3 7123 7273 7141 +3 8151 2168 8150 +3 7559 7140 8177 +3 5604 75 7214 +3 7674 3055 3151 +3 6244 1767 1731 +3 7743 8022 6400 +3 1182 8003 5723 +3 1944 6807 2021 +3 1165 1127 6704 +3 2344 7658 2531 +3 2874 5129 4539 +3 5692 5772 1134 +3 3568 5285 3569 +3 8088 4649 2693 +3 183 7587 219 +3 4186 916 5719 +3 1989 1949 1990 +3 3995 3997 7595 +3 4261 7042 7548 +3 2243 6323 8178 +3 4668 7904 8179 +3 3139 3065 7527 +3 6102 3231 5258 +3 5135 6672 1410 +3 6986 7184 6627 +3 3872 691 7457 +3 7740 6789 1481 +3 1415 1414 8029 +3 4764 4763 778 +3 7826 3795 7868 +3 5779 918 971 +3 251 6942 3425 +3 2599 2555 2556 +3 1271 1228 1272 +3 5470 5671 7869 +3 4453 4455 4574 +3 5727 5496 279 +3 4281 1485 5511 +3 2079 7590 2119 +3 8189 1839 5177 +3 6068 5392 2163 +3 2246 1404 875 +3 4009 4010 3962 +3 1248 6087 1490 +3 5728 3277 5729 +3 6747 7160 7938 +3 8051 1971 2015 +3 7134 7209 2575 +3 4247 4363 4362 +3 777 4388 4387 +3 3361 2232 5227 +3 303 278 305 +3 4452 4451 6307 +3 8180 9 7 +3 6546 728 4184 +3 6782 8181 6982 +3 8100 8031 1235 +3 7854 2042 8182 +3 250 5657 7369 +3 844 6453 7414 +3 503 434 538 +3 4588 4590 6859 +3 6090 2067 5326 +3 7091 1942 7606 +3 3201 5539 7324 +3 6878 6107 8101 +3 676 679 677 +3 6346 6844 6722 +3 3951 4000 3954 +3 4922 4921 4962 +3 1713 7833 4151 +3 1226 8183 8067 +3 2940 2884 2942 +3 7656 830 7087 +3 4551 4553 6257 +3 4179 6863 4231 +3 555 429 3468 +3 7468 6221 1230 +3 2311 2243 8178 +3 423 424 486 +3 7918 3068 3029 +3 6764 6654 3989 +3 7992 8184 3883 +3 7129 8096 7342 +3 4138 7126 5254 +3 4611 6236 8185 +3 3330 7172 895 +3 2077 6095 6885 +3 2451 4234 4209 +3 6615 410 6614 +3 6882 7195 1323 +3 6217 8108 8021 +3 1968 7583 3422 +3 8186 374 3266 +3 3349 4970 1224 +3 7259 530 6415 +3 100 2201 135 +3 4631 1403 4632 +3 2270 2269 5714 +3 5112 5879 3549 +3 7026 231 230 +3 2562 2561 8105 +3 7986 6325 8130 +3 5848 1936 3708 +3 7019 4594 6363 +3 7050 3607 2871 +3 6099 5693 3062 +3 1524 6229 1805 +3 875 8006 8097 +3 2967 8187 3012 +3 4126 5881 6485 +3 5111 341 5162 +3 3033 7040 8188 +3 4639 1839 8189 +3 4039 2016 6613 +3 4650 6504 4652 +3 1255 1256 5521 +3 2424 6410 4904 +3 5916 4331 4556 +3 4409 4411 7860 +3 414 416 7734 +3 4844 8170 4843 +3 6001 47 8038 +3 2207 2206 3522 +3 5325 8190 5326 +3 6627 7738 4152 +3 8191 7261 8133 +3 7623 8085 3085 +3 7193 6326 40 +3 1154 6163 6164 +3 730 731 768 +3 1525 4099 1514 +3 6583 4168 4155 +3 1571 5280 1604 +3 3805 5388 7503 +3 3663 2995 6361 +3 8192 6097 1710 +3 7854 8182 6475 +3 5588 8144 3476 +3 3990 3989 3901 +3 8125 7989 3570 +3 2007 5385 8193 +3 7231 5803 4031 +3 6303 8160 7571 +3 3348 8058 3349 +3 5876 2602 5041 +3 7143 6496 8194 +3 349 348 1415 +3 3095 3098 3111 +3 5008 937 6784 +3 3473 4613 173 +3 2547 5783 3200 +3 7751 6926 6741 +3 1290 6049 7195 +3 482 417 528 +3 5536 3359 8098 +3 3943 6434 3247 +3 567 374 8186 +3 6177 6711 7612 +3 6797 2867 6796 +3 7384 4457 4456 +3 322 321 575 +3 6393 1641 1640 +3 3510 3511 3549 +3 3322 6963 2464 +3 3045 7427 7891 +3 7309 2220 7396 +3 3465 3467 8042 +3 2375 2323 7879 +3 2094 2052 2095 +3 4784 8195 4816 +3 1244 5408 5407 +3 4951 7498 4952 +3 6954 5533 6906 +3 7432 7683 3636 +3 6193 7232 6718 +3 6952 6951 5889 +3 5654 7374 6874 +3 7398 6980 3913 +3 7236 747 5213 +3 351 7593 6661 +3 5583 7387 3600 +3 8196 3777 4878 +3 8197 7411 5953 +3 7612 1468 1527 +3 5759 1142 6216 +3 5349 2589 5584 +3 5725 8198 7892 +3 7596 1301 1340 +3 4422 7628 6998 +3 2085 2086 2134 +3 6607 4113 8153 +3 4351 4352 7009 +3 1061 7078 8002 +3 1587 5700 7210 +3 6353 3413 2135 +3 8030 991 7967 +3 6391 1912 7440 +3 6160 2844 2845 +3 926 7910 7305 +3 3831 7817 3832 +3 289 290 7947 +3 4578 4354 5734 +3 7731 7730 5043 +3 411 8134 3673 +3 2021 1892 1945 +3 82 6895 83 +3 7173 4334 6780 +3 6052 7329 2513 +3 8199 385 441 +3 2439 8044 7873 +3 8200 8116 1629 +3 7889 8219 6135 +3 4210 764 7678 +3 5637 2855 2908 +3 7645 8083 6820 +3 7591 2275 2337 +3 1042 993 1044 +3 4652 8066 4653 +3 6599 5418 6600 +3 3593 3596 6418 +3 7870 6074 4269 +3 3934 7321 3886 +3 3724 1150 3725 +3 4493 1118 1157 +3 6689 4589 6971 +3 3803 2378 3778 +3 1698 1652 1699 +3 6188 1646 4199 +3 5772 6092 1136 +3 4883 669 707 +3 7935 7681 7375 +3 2897 2183 5748 +3 6007 4475 7916 +3 65 67 66 +3 8079 8018 7291 +3 2921 2922 2979 +3 6724 6904 5999 +3 3439 7422 5320 +3 1420 7190 3914 +3 5695 3121 749 +3 3295 2978 2977 +3 6381 6886 4272 +3 5459 7167 7000 +3 5312 4755 3542 +3 3625 4375 3626 +3 7822 3043 2860 +3 6268 6389 4511 +3 1689 2961 3449 +3 6300 2233 8201 +3 7859 5633 6778 +3 7844 8191 5575 +3 7702 1056 1098 +3 3169 2038 7096 +3 3270 218 742 +3 3482 210 8202 +3 1227 1269 8183 +3 4755 4757 4764 +3 2503 2504 8068 +3 580 253 579 +3 8065 7930 1416 +3 3952 6600 2854 +3 3599 7387 2355 +3 3777 8196 3780 +3 7021 6666 5771 +3 6021 1895 5360 +3 7170 2360 2410 +3 47 6067 583 +3 7011 4643 6124 +3 640 7936 6512 +3 4276 5516 5686 +3 8203 4967 6197 +3 3910 3912 7801 +3 1868 7401 7521 +3 3847 3848 7764 +3 7793 220 7228 +3 713 3440 714 +3 3572 7532 288 +3 1801 1804 7961 +3 7834 8116 8200 +3 7487 5864 6621 +3 8204 1848 8147 +3 6069 3703 3764 +3 8095 1505 5998 +3 8141 6905 4739 +3 8094 722 1219 +3 3994 7157 3947 +3 7665 2389 2335 +3 2763 2764 1443 +3 6894 2657 2726 +3 4891 4673 8205 +3 6855 1227 5677 +3 1648 1649 1695 +3 5934 6157 7549 +3 6249 5138 4781 +3 7623 5705 3108 +3 3892 7670 3894 +3 5460 7605 1093 +3 1520 6399 5307 +3 2435 2386 2436 +3 2883 2885 2884 +3 1017 7636 1018 +3 5042 8166 7260 +3 7493 1824 1870 +3 5279 8206 6027 +3 2741 2740 2663 +3 6597 329 564 +3 8076 7951 8025 +3 1328 1329 1327 +3 8174 5598 5624 +3 4391 5305 1028 +3 7060 796 7450 +3 6035 1589 7667 +3 8139 7640 6846 +3 3512 3513 7664 +3 2696 2559 4729 +3 6097 8192 4280 +3 4363 4248 5064 +3 8207 7001 1435 +3 1217 1216 629 +3 5821 1396 4079 +3 1578 3752 7080 +3 3540 7130 3541 +3 4621 6608 4491 +3 7024 3291 2703 +3 923 924 978 +3 1554 7610 5137 +3 5782 4829 4812 +3 8149 7955 5068 +3 2844 2846 2900 +3 6557 2774 1580 +3 4668 8179 224 +3 2411 2413 6907 +3 1431 7629 5446 +3 1417 4501 6100 +3 3631 3632 8138 +3 6411 4701 8208 +3 5622 1203 1261 +3 2480 2430 2483 +3 7287 7906 1032 +3 6170 4510 7357 +3 7031 1525 3397 +3 4595 4686 7981 +3 905 906 953 +3 1361 1327 5601 +3 6822 7941 4203 +3 1446 2768 1447 +3 7167 7217 8209 +3 328 7804 375 +3 6930 2865 6059 +3 828 7584 2087 +3 2080 7959 7960 +3 8198 1882 7892 +3 5871 3244 1506 +3 4982 6468 4452 +3 7462 6329 982 +3 2205 2162 7368 +3 4497 6061 4549 +3 6499 2007 8193 +3 4095 7964 4037 +3 3222 3028 7109 +3 8210 2217 7717 +3 2861 7264 3335 +3 5990 5989 2562 +3 78 7885 109 +3 8123 7562 8211 +3 2276 1798 4134 +3 1952 1905 8096 +3 7150 5510 7486 +3 1427 1383 4958 +3 8053 5550 6723 +3 2660 2659 5249 +3 6654 6999 4040 +3 521 7648 552 +3 7926 6210 7912 +3 4457 2910 2859 +3 5448 5789 2614 +3 5797 67 7663 +3 7317 7203 1303 +3 5114 7459 1847 +3 4889 5080 6218 +3 7932 1656 1702 +3 7163 2671 6962 +3 4735 6460 2612 +3 6090 5326 8190 +3 1761 6122 7382 +3 94 96 95 +3 4562 4341 4561 +3 7707 2217 8210 +3 8212 6328 4922 +3 2111 4190 8213 +3 4127 5678 5881 +3 5022 8214 5047 +3 1047 997 1048 +3 1951 7129 1995 +3 4785 6537 8195 +3 1310 1279 3719 +3 7858 7857 6104 +3 4483 7283 8012 +3 1784 1786 1831 +3 7921 6916 8215 +3 7830 2063 3986 +3 827 787 828 +3 7143 8194 7698 +3 7490 3214 1302 +3 3944 7008 5892 +3 5852 1734 1774 +3 4776 4775 2024 +3 7682 4940 8119 +3 8216 8155 7209 +3 757 1812 5266 +3 7280 4737 1840 +3 3682 506 3681 +3 6126 7668 7208 +3 1287 6328 8212 +3 7791 8173 8172 +3 8217 7841 7499 +3 5057 30 85 +3 5008 5009 7304 +3 7030 7142 737 +3 4639 8189 4641 +3 1790 1791 7994 +3 7538 2814 5384 +3 2063 2158 7121 +3 5047 8214 5104 +3 6426 8175 2384 +3 2068 5326 8164 +3 5505 2207 5909 +3 2211 2165 2210 +3 8218 145 3272 +3 4130 4400 6360 +3 6230 2767 1445 +3 4843 7792 7494 +3 2960 5524 7688 +3 6937 8143 3822 +3 2167 2111 8213 +3 4207 2451 8162 +3 5682 3610 7361 +3 7921 8215 8081 +3 3630 6984 6989 +3 3706 2062 6169 +3 6796 3370 3336 +3 5832 2118 2173 +3 1429 1384 8060 +3 3403 3406 7403 +3 3423 8114 7942 +3 7965 7964 7534 +3 1944 7191 7205 +3 6202 8059 6869 +3 753 7003 4518 +3 8197 4093 7411 +3 4611 8185 5861 +3 5619 5573 3824 +3 4912 7570 6345 +3 5224 377 5225 +3 7535 855 8128 +3 5020 7619 7124 +3 2568 5158 7153 +3 7839 8080 1285 +3 1687 1640 7945 +3 8219 1829 1877 +3 6691 4624 986 +3 4322 4324 6702 +3 8220 6785 1777 +3 7258 1532 7666 +3 7972 1855 3168 +3 3284 1860 1915 +3 5010 5012 8054 +3 5156 6128 7235 +3 2861 2803 2862 +3 24 23 45 +3 5022 5585 3869 +3 4380 613 636 +3 4769 4767 4768 +3 6654 2256 7760 +3 8106 2377 2376 +3 8122 1948 5030 +3 8221 1976 1221 +3 1570 5152 6188 +3 8222 15 54 +3 7833 1714 4404 +3 6738 4101 4100 +3 4115 5527 7104 +3 2198 2153 2199 +3 7851 2913 7089 +3 441 7580 442 +3 8223 7454 7770 +3 7016 7626 5886 +3 8067 8183 6080 +3 6681 5238 5804 +3 3091 3093 7949 +3 2948 8154 3004 +3 7853 2147 2194 +3 2518 7140 7559 +3 7698 8176 3827 +3 2765 4810 6230 +3 3957 4004 3958 +3 8137 4792 7965 +3 3276 5729 856 +3 4996 4806 4997 +3 4081 1660 8161 +3 2510 5054 2554 +3 7828 1237 7410 +3 7959 6979 4505 +3 3872 6813 6121 +3 8063 2455 8024 +3 7565 2914 2623 +3 4634 7211 1667 +3 5502 5501 4416 +3 7927 5135 1409 +3 7345 4959 4870 +3 1261 5747 5816 +3 6743 8224 7240 +3 8204 8159 1848 +3 8090 594 8131 +3 2979 2980 3331 +3 8014 7276 6587 +3 4981 7778 7397 +3 5706 1027 5994 +3 3499 319 365 +3 1283 1244 7712 +3 4533 677 717 +3 3760 3761 3705 +3 4632 8071 6373 +3 6603 5661 5669 +3 2810 2737 2811 +3 2295 2294 7943 +3 8220 4406 6785 +3 8047 7699 3167 +3 3012 8187 5434 +3 750 749 786 +3 7153 2610 7347 +3 5905 968 1008 +3 4330 2187 2238 +3 3371 3373 3398 +3 3965 7783 6479 +3 7167 8209 4377 +3 7258 1570 7974 +3 7907 1101 8050 +3 3850 7768 7767 +3 5613 8091 7290 +3 7037 3255 2714 +3 7968 213 256 +3 5952 6636 5151 +3 4724 4725 4779 +3 7616 7776 6432 +3 2373 7420 2422 +3 7516 2009 7882 +3 1654 7125 7126 +3 5764 5144 4515 +3 4834 8225 6939 +3 5039 2518 2560 +3 4386 5739 4388 +3 1300 8124 6399 +3 8224 6554 7240 +3 8219 6858 1829 +3 6889 3846 4582 +3 1497 1499 4379 +3 2672 2628 2674 +3 6833 5555 4101 +3 3866 3867 3864 +3 5498 5497 632 +3 4940 5382 750 +3 4471 4560 4561 +3 5831 4964 4868 +3 8150 3194 5651 +3 8121 8120 7798 +3 7583 4502 5690 +3 6311 7995 990 +3 4087 5933 4088 +3 19 7 20 +3 788 7901 789 +3 2097 4063 7866 +3 5408 1245 4124 +3 6497 1673 5391 +3 347 5925 349 +3 5163 7469 4078 +3 2377 8163 8140 +3 7408 7578 7409 +3 2425 6281 5946 +3 3242 5711 1504 +3 6274 7524 8129 +3 6251 2974 3681 +3 5047 1622 5700 +3 8166 2842 8165 +3 3749 3751 3717 +3 24 7762 11 +3 4393 4394 1725 +3 4476 5292 6660 +3 7181 1282 4076 +3 8111 1372 1049 +3 1566 1514 3399 +3 4850 4851 5990 +3 8173 8077 4895 +3 7827 2310 2359 +3 3712 6573 2050 +3 7573 7990 2270 +3 8221 3342 1976 +3 4059 1281 4060 +3 7876 6464 6398 +3 8226 8158 6191 +3 2088 7409 2295 +3 8181 7811 6982 +3 1022 979 6770 +3 6283 8171 4612 +3 6153 6355 3454 +3 6518 743 780 +3 1799 8082 4133 +3 2582 2541 7876 +3 5223 1682 3248 +3 2800 7291 6293 +3 5429 7747 2704 +3 2126 2128 7772 +3 5113 2991 3660 +3 6579 7558 4822 +3 4923 8109 5148 +3 3127 3076 3131 +3 6896 6624 6476 +3 6614 7215 5562 +3 2879 8052 7272 +3 8216 6641 8155 +3 7246 2935 2996 +3 271 230 272 +3 4872 4874 6538 +3 5198 2477 3576 +3 4282 1452 1485 +3 1679 4644 3202 +3 5515 7470 6753 +3 322 370 579 +3 4686 4596 4796 +3 1544 3792 1578 +3 8035 4345 4566 +3 3813 8110 3814 +3 2978 6372 3485 +3 7567 2056 3060 +3 8218 7061 145 +3 7136 4460 7556 +3 6436 2642 6427 +3 4022 58 4021 +3 7261 8191 3125 +3 3123 5750 4778 +3 7843 4006 6098 +3 2466 3604 2512 +3 6780 2645 7980 +3 4656 4658 4438 +3 7293 7582 7054 +3 3879 7719 2321 +3 5555 6202 2886 +3 4635 4637 7679 +3 8123 8211 6952 +3 4770 4768 1251 +3 1406 1408 1459 +3 8225 4835 6939 +3 3595 6136 727 +3 3755 3797 5099 +3 615 705 7233 +3 7046 6888 6709 +3 8132 2210 5502 +3 1708 6854 4400 +3 5101 5814 5944 +3 4796 6063 7931 +3 7559 8177 2643 +3 5386 8072 1217 +3 8184 4170 3883 +3 7022 4241 8121 +3 1266 7553 1268 +3 5867 2526 8073 +3 7650 5873 691 +3 8000 6300 8201 +3 7177 7917 4983 +3 888 7617 5653 +3 3901 3941 7768 +3 5001 5003 5002 +3 4165 7641 4166 +3 5177 1897 8043 +3 1206 6535 6370 +3 7814 1611 3714 +3 1843 1844 7728 +3 7351 7784 3471 +3 3482 8202 3498 +3 3895 3897 7108 +3 3947 8158 8226 +3 7333 5038 1703 +3 8135 1363 1422 +3 534 558 6852 +3 8020 7832 2639 +3 5427 2887 7467 +3 8203 7631 4967 +3 5843 1124 2254 +3 6263 1353 6563 +3 6559 4630 7900 +3 5003 5381 5005 +3 5381 6655 818 +3 5103 7973 5966 +3 3721 3723 3743 +3 7070 6396 7185 +3 2356 6190 5098 +3 1050 1000 1051 +3 1758 1717 7488 +3 7139 824 7660 +3 3983 6438 5566 +3 921 8102 922 +3 7216 1509 7282 +3 8155 2537 2576 +3 6411 8208 4021 +3 6271 7940 7391 +3 5547 7948 7540 +3 4353 437 5351 +3 7761 4560 4473 +3 1670 1671 7933 +3 4156 6890 7858 +3 8148 7796 5897 +3 4726 2796 2795 +3 5601 6610 5830 +3 7597 2659 2728 +3 637 7434 668 +3 7125 1700 6760 +3 1719 4705 1720 +3 5329 7675 2616 +3 4575 7009 4576 +3 2366 2315 2367 +3 3024 6665 1210 +3 7225 2998 6686 +3 6018 2426 2475 +3 2818 7802 2819 +3 6220 6448 4094 +3 5978 1334 907 +3 467 539 6957 +3 740 6027 8206 +3 3033 8188 1767 +3 3710 80 6728 +3 2821 7843 2885 +3 7480 6987 8227 +3 6106 5272 7773 +3 395 7547 8228 +3 3824 3826 7520 +3 2676 2629 3696 +3 3988 6764 3990 +3 6849 8168 6798 +3 1204 1206 3447 +3 2796 7260 8165 +3 4606 1851 1909 +3 3555 3556 3508 +3 2982 2985 3433 +3 248 250 6165 +3 8152 36 8229 +3 1394 7001 8207 +3 6870 6392 2077 +3 3796 3797 6012 +3 698 633 7298 +3 2176 2177 2226 +3 7466 4122 6163 +3 4816 8195 7517 +3 4070 5785 7644 +3 1528 7147 3261 +3 7148 6626 7731 +3 2919 2866 2920 +3 5000 7434 638 +3 7422 7725 3530 +3 3882 4170 3864 +3 4891 8205 5080 +3 436 5225 8136 +3 4433 4435 4434 +3 8093 6200 7780 +3 8230 5375 867 From abe6aa1eca42ad0038ea60815c37c2c41cc511ea Mon Sep 17 00:00:00 2001 From: Andreas Fabri Date: Thu, 1 Apr 2021 19:48:44 +0100 Subject: [PATCH 040/171] remove unused typedefs --- .../CGAL/Intersections_3/internal/intersection_3_1_impl.h | 3 --- 1 file changed, 3 deletions(-) diff --git a/Intersections_3/include/CGAL/Intersections_3/internal/intersection_3_1_impl.h b/Intersections_3/include/CGAL/Intersections_3/internal/intersection_3_1_impl.h index 8ac11d3310f..ad5f32f6a5c 100644 --- a/Intersections_3/include/CGAL/Intersections_3/internal/intersection_3_1_impl.h +++ b/Intersections_3/include/CGAL/Intersections_3/internal/intersection_3_1_impl.h @@ -970,8 +970,6 @@ do_intersect(const typename K::Plane_3 &plane, const typename K::Ray_3 &ray, const K& k) { - typedef typename K::Point_3 Point_3; - typename K::Oriented_side_3 oriented_side_3; Oriented_side os = oriented_side_3(plane,ray.source()); @@ -1718,7 +1716,6 @@ inline bool do_intersect(const Iso_cuboid_3 &icub1, const Iso_cuboid_3 &icub2, const R&) { typedef typename R::Point_3 Point_3; - typedef typename R::Iso_cuboid_3 Iso_cuboid_3; Point_3 min_points[2]; Point_3 max_points[2]; From 38c0c8852cadba91867ef4434d4306d035b259b4 Mon Sep 17 00:00:00 2001 From: Andreas Fabri Date: Sun, 4 Apr 2021 17:39:24 +0100 Subject: [PATCH 041/171] Add the Triangle_3/Triangle_3 to the static version of Do_intersect (Thank you for pointing out @mglisse --- .../include/CGAL/internal/Static_filters/Do_intersect_3.h | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/Filtered_kernel/include/CGAL/internal/Static_filters/Do_intersect_3.h b/Filtered_kernel/include/CGAL/internal/Static_filters/Do_intersect_3.h index 92cbd3ebf3f..00224e87c7d 100644 --- a/Filtered_kernel/include/CGAL/internal/Static_filters/Do_intersect_3.h +++ b/Filtered_kernel/include/CGAL/internal/Static_filters/Do_intersect_3.h @@ -78,6 +78,13 @@ public: return Intersections::internal::do_intersect(t,s, SFK()); } + result_type + operator()(const Triangle_3 &t0, const Triangle_3& t1) const + { + return Intersections::internal::do_intersect(t0,t1, SFK()); + } + + result_type operator()(const Bbox_3& b, const Segment_3 &s) const { From fa6818b7ddaf951f2b2ec79eeedddffca7116b74 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mael=20Rouxel-Labb=C3=A9?= Date: Tue, 6 Apr 2021 19:43:42 +0200 Subject: [PATCH 042/171] Fix approximate_sqrt return types --- Algebraic_foundations/include/CGAL/number_utils.h | 10 ++++++---- Number_types/include/CGAL/mpq_class.h | 1 - 2 files changed, 6 insertions(+), 5 deletions(-) diff --git a/Algebraic_foundations/include/CGAL/number_utils.h b/Algebraic_foundations/include/CGAL/number_utils.h index d29434ad603..3b7a1154cc8 100644 --- a/Algebraic_foundations/include/CGAL/number_utils.h +++ b/Algebraic_foundations/include/CGAL/number_utils.h @@ -302,19 +302,21 @@ to_interval( const Real_embeddable& x) { } template -NT approximate_sqrt(const NT& nt, CGAL::Null_functor) +typename Coercion_traits::Type +approximate_sqrt(const NT& x, CGAL::Null_functor) { - return NT(sqrt(CGAL::to_double(nt))); + return sqrt(CGAL::to_double(x)); } template -NT approximate_sqrt(const NT& nt, Sqrt sqrt) +typename Sqrt::result_type +approximate_sqrt(const NT& nt, Sqrt sqrt) { return sqrt(nt); } template -NT approximate_sqrt(const NT& nt) +decltype(auto) approximate_sqrt(const NT& nt) { // the initial version of this function was using Algebraic_category // for the dispatch but some ring type (like Gmpz) provides a Sqrt diff --git a/Number_types/include/CGAL/mpq_class.h b/Number_types/include/CGAL/mpq_class.h index 6250ea95e3a..76611b93cf9 100644 --- a/Number_types/include/CGAL/mpq_class.h +++ b/Number_types/include/CGAL/mpq_class.h @@ -40,7 +40,6 @@ namespace CGAL { - // AST for mpq_class template<> class Algebraic_structure_traits< mpq_class > From b0b38dade8739c434fe1bb09eca3921d70cfac86 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mael=20Rouxel-Labb=C3=A9?= Date: Wed, 7 Apr 2021 12:38:24 +0200 Subject: [PATCH 043/171] Add a simple test for approximate_sqrt(NT) for most NTs --- Number_types/test/Number_types/Gmpzf_new.cpp | 2 +- .../test/Number_types/include/CGAL/_test_utilities.h | 4 ++++ Number_types/test/Number_types/utilities.cpp | 5 ----- 3 files changed, 5 insertions(+), 6 deletions(-) diff --git a/Number_types/test/Number_types/Gmpzf_new.cpp b/Number_types/test/Number_types/Gmpzf_new.cpp index 95ea8c2de4f..f2ae93fe287 100644 --- a/Number_types/test/Number_types/Gmpzf_new.cpp +++ b/Number_types/test/Number_types/Gmpzf_new.cpp @@ -31,7 +31,7 @@ int main() { CGAL::test_algebraic_structure(); CGAL::test_real_embeddable(); - // assert(CGAL::approximate_sqrt(NT(4)) == NT(2)); + assert(CGAL::approximate_sqrt(NT(4)) == NT(2)); } return 0; diff --git a/Number_types/test/Number_types/include/CGAL/_test_utilities.h b/Number_types/test/Number_types/include/CGAL/_test_utilities.h index 49a0d8e5224..dff2b016e08 100644 --- a/Number_types/test/Number_types/include/CGAL/_test_utilities.h +++ b/Number_types/test/Number_types/include/CGAL/_test_utilities.h @@ -366,6 +366,10 @@ test_utilities(const NT& x) if (!test_gcd(x,typename AST::Algebraic_category())) return false; if (!test_sqrt(x,typename AST::Sqrt())) return false; + // approximate_sqrt + std::cout << " approximate_sqrt()" << std::endl; + if(CGAL::approximate_sqrt(zero + one) != one) return false; + return true; } diff --git a/Number_types/test/Number_types/utilities.cpp b/Number_types/test/Number_types/utilities.cpp index b4e3e22c81f..22958e4ee67 100644 --- a/Number_types/test/Number_types/utilities.cpp +++ b/Number_types/test/Number_types/utilities.cpp @@ -1,10 +1,5 @@ #include -// TODO: solve conflict of CORE with GMPXX -#ifdef CGAL_USE_CORE -#undef CGAL_USE_GMPXX -#endif - #include #include #include From ee58c89f7a078d7ae8124ff2f0aeef1d16d71c73 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mael=20Rouxel-Labb=C3=A9?= Date: Wed, 7 Apr 2021 12:38:52 +0200 Subject: [PATCH 044/171] Add a note about why MP_Float is not tested --- Number_types/test/Number_types/utilities.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Number_types/test/Number_types/utilities.cpp b/Number_types/test/Number_types/utilities.cpp index 22958e4ee67..32e7fb13573 100644 --- a/Number_types/test/Number_types/utilities.cpp +++ b/Number_types/test/Number_types/utilities.cpp @@ -72,7 +72,7 @@ int main() TESTIT(long double, "long double") // CGAL number types - //TESTIT(CGAL::MP_Float, "MP_Float") + //TESTIT(CGAL::MP_Float, "MP_Float") // CGAL::div(MP_Float, MP_Float) does not implement _integer_ division TESTIT(CGAL::Quotient, "Quotient") TESTIT(QMPF, "Quotient") TESTIT(CGAL::Lazy_exact_nt, "Lazy_exact_nt >") From 76719b903f384dbdc92e546cf3ae06e2f9dd2443 Mon Sep 17 00:00:00 2001 From: Andreas Fabri Date: Wed, 7 Apr 2021 12:06:26 +0100 Subject: [PATCH 045/171] Introduce the macro CGAL_NO_MPZF_DIVISION_OPERATOR --- Intersections_3/test/Intersections_3/test_intersections_3.cpp | 3 +++ Number_types/include/CGAL/Mpzf.h | 4 +++- 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/Intersections_3/test/Intersections_3/test_intersections_3.cpp b/Intersections_3/test/Intersections_3/test_intersections_3.cpp index f93026b3d11..65ec3326031 100644 --- a/Intersections_3/test/Intersections_3/test_intersections_3.cpp +++ b/Intersections_3/test/Intersections_3/test_intersections_3.cpp @@ -1,5 +1,8 @@ // 3D intersection tests. +// We want to check that no division is performed for interface macro Do_intersect_3_RT +#define CGAL_NO_MPZF_DIVISION_OPERATOR + #include #include #include diff --git a/Number_types/include/CGAL/Mpzf.h b/Number_types/include/CGAL/Mpzf.h index f850010b90b..163da7fa066 100644 --- a/Number_types/include/CGAL/Mpzf.h +++ b/Number_types/include/CGAL/Mpzf.h @@ -10,7 +10,9 @@ // // Author(s) : Marc Glisse -//#define CGAL_MPZF_DIVISION_OPERATOR 1 +#ifndef CGAL_NO_MPZF_DIVISION_OPERATOR +#define CGAL_MPZF_DIVISION_OPERATOR 1 +#endif #ifndef CGAL_MPZF_H #define CGAL_MPZF_H From a192a45f5beb0ea036803e1c2d83b9636784b7d5 Mon Sep 17 00:00:00 2001 From: Andreas Fabri Date: Wed, 7 Apr 2021 12:09:16 +0100 Subject: [PATCH 046/171] Fix warning: using the result of an assignment as a condition without parentheses [-Wparentheses] --- .../CGAL/Intersections_3/internal/intersection_3_1_impl.h | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/Intersections_3/include/CGAL/Intersections_3/internal/intersection_3_1_impl.h b/Intersections_3/include/CGAL/Intersections_3/internal/intersection_3_1_impl.h index ad5f32f6a5c..7371b641b37 100644 --- a/Intersections_3/include/CGAL/Intersections_3/internal/intersection_3_1_impl.h +++ b/Intersections_3/include/CGAL/Intersections_3/internal/intersection_3_1_impl.h @@ -1689,9 +1689,9 @@ do_intersect(const Plane_3 &plane1, const Plane_3 &plane2, int pcount = 0; bool b12, b13,b23; - if(b12 = parallel(plane1,plane2)) pcount++; - if(b13 = parallel(plane1,plane3)) pcount++; - if(b23 = parallel(plane2,plane3)) pcount++; + if((b12 = parallel(plane1,plane2))) pcount++; + if((b13 = parallel(plane1,plane3))) pcount++; + if((b23 = parallel(plane2,plane3))) pcount++; if(pcount == 3){ return (( (plane1 == plane2) || (plane1 == plane2.opposite())) && ( (plane1 == plane3) || (plane1 == plane3.opposite()))); From 17b254639059bd247700d7c8c7e9fce3ff72dc42 Mon Sep 17 00:00:00 2001 From: Laurent Rineau Date: Wed, 7 Apr 2021 14:25:30 +0200 Subject: [PATCH 047/171] Use Same_uncertainty_nt --- Algebraic_foundations/include/CGAL/number_utils.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Algebraic_foundations/include/CGAL/number_utils.h b/Algebraic_foundations/include/CGAL/number_utils.h index 298f2708e23..f54670de191 100644 --- a/Algebraic_foundations/include/CGAL/number_utils.h +++ b/Algebraic_foundations/include/CGAL/number_utils.h @@ -325,7 +325,7 @@ NT approximate_sqrt(const NT& nt) } template -Comparison_result +typename Same_uncertainty_nt::type compare_quotients(const NT& xnum, const NT& xden, const NT& ynum, const NT& yden) { From 23a0cf6321629059fa62139f0623984bfa6b6f5e Mon Sep 17 00:00:00 2001 From: Laurent Rineau Date: Wed, 7 Apr 2021 14:42:58 +0200 Subject: [PATCH 048/171] Add a #include --- Algebraic_foundations/include/CGAL/number_utils.h | 1 + 1 file changed, 1 insertion(+) diff --git a/Algebraic_foundations/include/CGAL/number_utils.h b/Algebraic_foundations/include/CGAL/number_utils.h index f54670de191..3bf8e906fc0 100644 --- a/Algebraic_foundations/include/CGAL/number_utils.h +++ b/Algebraic_foundations/include/CGAL/number_utils.h @@ -20,6 +20,7 @@ #include #include #include +#include namespace CGAL { CGAL_NTS_BEGIN_NAMESPACE From c2a71f23d7cc6a6c91b9ba36e0138ecd731a1048 Mon Sep 17 00:00:00 2001 From: Andreas Fabri Date: Thu, 8 Apr 2021 16:08:51 +0100 Subject: [PATCH 049/171] Nef_3: Improve K3_tree --- Nef_3/include/CGAL/Nef_3/K3_tree.h | 100 ++++++++++++++++------------- 1 file changed, 57 insertions(+), 43 deletions(-) diff --git a/Nef_3/include/CGAL/Nef_3/K3_tree.h b/Nef_3/include/CGAL/Nef_3/K3_tree.h index b551b5c1625..db4157c0702 100644 --- a/Nef_3/include/CGAL/Nef_3/K3_tree.h +++ b/Nef_3/include/CGAL/Nef_3/K3_tree.h @@ -22,6 +22,7 @@ #include #include #include +#include #ifdef CGAL_NEF3_TRIANGULATE_FACETS #include @@ -288,10 +289,12 @@ typedef Smaller_than< Vertex_handle, int> Smaller_; -class Node { + class Node : public Compact_container_base { friend class K3_tree; public: - Node( Node* p, Node* l, Node* r, Plane_3 pl, const Object_list& O) : + typedef typename Compact_container::iterator Node_handle; + + Node( Node_handle p, Node_handle l, Node_handle r, Plane_3 pl, const Object_list& O) : parent_node(p), left_node(l), right_node(r), splitting_plane(pl), object_list(O) { if(l == 0) @@ -304,9 +307,9 @@ public: (left_node == 0 && right_node == 0)); return (left_node == 0 && right_node == 0); } - const Node* parent() const { return parent_node; } - const Node* left() const { return left_node; } - const Node* right() const { return right_node; } + const Node_handle parent() const { return parent_node; } + const Node_handle left() const { return left_node; } + const Node_handle right() const { return right_node; } const Plane_3& plane() const { return splitting_plane; } const Object_list& objects() const { return object_list; } @@ -425,7 +428,7 @@ public: friend std::ostream& operator<< - (std::ostream& os, const Node* node) { + (std::ostream& os, const Node_handle node) { CGAL_assertion( node != 0); if( node->is_leaf()) os << node->objects().size(); @@ -441,7 +444,7 @@ friend std::ostream& operator<< return os; } - + /* ~Node() CGAL_NOEXCEPT(CGAL_NO_ASSERTIONS_BOOL) { CGAL_NEF_TRACEN("~Node: deleting node..."); @@ -452,16 +455,22 @@ friend std::ostream& operator<< } ); } - + */ private: - Node* parent_node; - Node* left_node; - Node* right_node; + + + + Node_handle parent_node; + Node_handle left_node; + Node_handle right_node; Plane_3 splitting_plane; Point_3 point_on_plane; Object_list object_list; }; + typedef Compact_container Node_range; + typedef typename Node_range::iterator Node_iterator; + typedef Node_iterator Node_handle; public: @@ -471,7 +480,7 @@ public: class Iterator; protected: Traits traits; - Node *root_node; + Node_handle root_node; Segment_3 segment; bool initialized; public: @@ -498,16 +507,16 @@ public: { friend class K3_tree; typedef Iterator Self; - typedef std::pair< const Node*, Segment_3> Candidate; + typedef std::pair< const Node_handle, Segment_3> Candidate; protected: std::list S; - const Node* node; + Node_handle node; Traits traits; CGAL_assertion_code( Segment_3 prev_segment;) CGAL_assertion_code( bool first_segment;) public: - Iterator() : node(0) {} - Iterator( const Node* root, const Segment_3& s) { + Iterator() : node() {} + Iterator( const Node_handle root, const Segment_3& s) { CGAL_assertion_code( first_segment = true); S.push_front( Candidate( root, s)); ++(*this); // place the interator in the first intersected cell @@ -520,10 +529,10 @@ public: Self& operator++() { if( S.empty()) - node = 0; // end of the iterator + node = Node_handle(); // end of the iterator else { while( !S.empty()) { - const Node* n = S.front().first; + Node_handle n = S.front().first; Segment_3 s = S.front().second; S.pop_front(); if( n->is_leaf()) { @@ -575,13 +584,13 @@ else { return !(*this == i); } private: - const Node* get_node() const { + const Node_handle get_node() const { CGAL_assertion( node != 0); return node; } inline -const Node* get_child_by_side( const Node* node, Oriented_side side) { +const Node_handle get_child_by_side( const Node_handle node, Oriented_side side) { CGAL_assertion( node != nullptr); CGAL_assertion( side != ON_ORIENTED_BOUNDARY); if( side == ON_NEGATIVE_SIDE) { @@ -651,7 +660,7 @@ class Objects_around_box { public: class Iterator; protected: - Node *root_node; + Node_handle root_node; Bounding_box_3 box; bool initialized; @@ -680,16 +689,16 @@ class Objects_around_box { friend class K3_tree; typedef Iterator Self; - typedef std::pair< const Node*, Bounding_box_3> Candidate; + typedef std::pair< const Node_handle, Bounding_box_3> Candidate; protected: std::list S; - const Node* node; + const Node_handle node; public: Iterator() : node(0) {} - Iterator( const Node* root, const Bounding_box_3& s) { + Iterator( const Node_handle root, const Bounding_box_3& s) { S.push_front( Candidate( root, s)); ++(*this); // place the interator in the first intersected cell } @@ -707,7 +716,7 @@ class Objects_around_box { node = 0; // end of the iterator else { while( !S.empty()) { - const Node* n = S.front().first; + const Node_handle n = S.front().first; Bounding_box_3 b = S.front().second; S.pop_front(); if( n->is_leaf()) { @@ -742,13 +751,13 @@ class Objects_around_box { } private: - const Node* get_node() const { + const Node_handle get_node() const { CGAL_assertion( node != 0); return node; } inline - const Node* get_child_by_side( const Node* node, Oriented_side side) { + const Node_handle get_child_by_side( const Node_handle node, Oriented_side side) { CGAL_assertion( node != nullptr); CGAL_assertion( side != ON_ORIENTED_BOUNDARY); if( side == ON_NEGATIVE_SIDE) { @@ -765,7 +774,11 @@ private: bool reference_counted; #endif Traits traits; - Node* root; + + + Node_handle root; + Compact_container nodes; + int max_depth; Bounding_box_3 bounding_box; public: @@ -951,8 +964,8 @@ typename Object_list::difference_type n_vertices = std::distance(objects.begin() public: BBox_updater() {} - void pre_visit(const Node*) {} - void post_visit(const Node* n) { + void pre_visit(const Node_handle) {} + void post_visit(const Node_handle n) { typename Object_list::const_iterator o; for( o = n->objects().begin(); o != n->objects().end(); ++o) { @@ -969,7 +982,7 @@ typename Object_list::difference_type n_vertices = std::distance(objects.begin() }; template - void visit_k3tree(const Node* current, Visitor& V) const { + void visit_k3tree(const Node_handle current, Visitor& V) const { V.pre_visit(current); if(current->left() != 0) { visit_k3tree(current->left(), V); @@ -996,7 +1009,7 @@ typename Object_list::difference_type n_vertices = std::distance(objects.begin() template friend std::ostream& operator<< (std::ostream& os, const K3_tree& k3_tree) { - os << (const Node*)k3_tree.root; // no default conversion to const Node*? + os << (const Node_handle)k3_tree.root; // no default conversion to const Node_handle? return os; } #endif @@ -1060,7 +1073,7 @@ bool update( Unique_hash_map& V, return update( root, V, E, F); } -bool update( Node* node, +bool update( Node_handle node, Unique_hash_map& V, Unique_hash_map& E, Unique_hash_map& F) { @@ -1105,7 +1118,7 @@ bool update( Node* node, CGAL_NEF_TRACEN("k3_tree::update(): right node updated? "< -Node* build_kdtree(Object_list& O, Object_iterator v_end, - Depth depth, Node* parent=0, int non_efective_splits=0) { +Node_handle build_kdtree(Object_list& O, Object_iterator v_end, + Depth depth, Node_handle parent=0, int non_efective_splits=0) { CGAL_precondition( depth >= 0); CGAL_NEF_TRACEN( "build_kdtree: "< max_depth) - return new Node( parent, 0, 0, Plane_3(), O); + return nodes.insert(Node( parent, Node_handle(), Node_handle(), Plane_3(), O)); } else { CGAL_NEF_TRACEN("Sizes " << O1.size() << ", " << O2.size() << ", " << O.size()); CGAL_assertion( O1.size() <= O.size() && O2.size() <= O.size()); @@ -1179,9 +1193,9 @@ Node* build_kdtree(Object_list& O, Object_iterator v_end, non_efective_splits = 0; if( non_efective_splits > 2) { CGAL_NEF_TRACEN("build_kdtree: non efective splits reached maximum"); - return new Node( parent, 0, 0, Plane_3(), O); + return nodes.insert(Node( parent, Node_handle(), Node_handle(), Plane_3(), O)); } - Node *node = new Node( parent, 0, 0, partition_plane, Object_list()); + Node_handle node = nodes.insert(Node( parent, Node_handle(), Node_handle(), partition_plane, Object_list())); node->left_node = build_kdtree( O1, O1.begin()+v_end1, depth + 1, node, non_efective_splits); node->right_node = build_kdtree( O2, O2.begin()+v_end2, depth + 1, node, non_efective_splits); return node; @@ -1258,7 +1272,7 @@ Plane_3 construct_splitting_plane(Object_iterator start, Object_iterator end, return Plane_3(); } -const Node *locate_cell_containing( const Point_3& p, const Node* node) const { +const Node_handle locate_cell_containing( const Point_3& p, const Node_handle node) const { CGAL_precondition( node != 0); if( node->is_leaf()) return node; @@ -1273,12 +1287,12 @@ const Node *locate_cell_containing( const Point_3& p, const Node* node) const { } } -const Object_list& locate( const Point_3& p, const Node* node) const { +const Object_list& locate( const Point_3& p, const Node_handle node) const { CGAL_precondition( node != 0); return locate_cell_containing( p, node)->objects(); } -bool is_point_on_cell( const Point_3& p, const Node* target, const Node* current) const { +bool is_point_on_cell( const Point_3& p, const Node_handle target, const Node_handle current) const { CGAL_precondition( target != 0 && current != 0); if( current->is_leaf()) return (current == target); From 3a26ede3a0480e15ecc7091c581c3e125703261e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mael=20Rouxel-Labb=C3=A9?= Date: Fri, 9 Apr 2021 16:32:38 +0200 Subject: [PATCH 050/171] Simplify test to avoid issue with boost mp Issue is fixed, see https://github.com/boostorg/multiprecision/pull/320 --- Number_types/test/Number_types/include/CGAL/_test_utilities.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Number_types/test/Number_types/include/CGAL/_test_utilities.h b/Number_types/test/Number_types/include/CGAL/_test_utilities.h index dff2b016e08..f82e59f3604 100644 --- a/Number_types/test/Number_types/include/CGAL/_test_utilities.h +++ b/Number_types/test/Number_types/include/CGAL/_test_utilities.h @@ -368,7 +368,7 @@ test_utilities(const NT& x) // approximate_sqrt std::cout << " approximate_sqrt()" << std::endl; - if(CGAL::approximate_sqrt(zero + one) != one) return false; + if(CGAL::approximate_sqrt(one) != one) return false; return true; } From 0246431abdb3663bcac31d1bb5adb2a594377dc5 Mon Sep 17 00:00:00 2001 From: Andreas Fabri Date: Mon, 12 Apr 2021 09:08:36 +0100 Subject: [PATCH 051/171] Replace Compact_container with boost::container::deque --- Nef_3/include/CGAL/Nef_3/K3_tree.h | 31 ++++++++++++++++-------------- 1 file changed, 17 insertions(+), 14 deletions(-) diff --git a/Nef_3/include/CGAL/Nef_3/K3_tree.h b/Nef_3/include/CGAL/Nef_3/K3_tree.h index db4157c0702..3aedabef03a 100644 --- a/Nef_3/include/CGAL/Nef_3/K3_tree.h +++ b/Nef_3/include/CGAL/Nef_3/K3_tree.h @@ -22,7 +22,7 @@ #include #include #include -#include +#include #ifdef CGAL_NEF3_TRIANGULATE_FACETS #include @@ -289,10 +289,10 @@ typedef Smaller_than< Vertex_handle, int> Smaller_; - class Node : public Compact_container_base { + class Node { friend class K3_tree; public: - typedef typename Compact_container::iterator Node_handle; + typedef Node* Node_handle; Node( Node_handle p, Node_handle l, Node_handle r, Plane_3 pl, const Object_list& O) : parent_node(p), left_node(l), right_node(r), splitting_plane(pl), @@ -308,7 +308,7 @@ public: return (left_node == 0 && right_node == 0); } const Node_handle parent() const { return parent_node; } - const Node_handle left() const { return left_node; } + const Node_handle left() const { return left_node; } const Node_handle right() const { return right_node; } const Plane_3& plane() const { return splitting_plane; } const Object_list& objects() const { return object_list; } @@ -468,9 +468,8 @@ private: Object_list object_list; }; - typedef Compact_container Node_range; - typedef typename Node_range::iterator Node_iterator; - typedef Node_iterator Node_handle; + typedef boost::container::deque Node_range; + typedef Node* Node_handle; public: @@ -529,7 +528,7 @@ public: Self& operator++() { if( S.empty()) - node = Node_handle(); // end of the iterator + node = nullptr; // end of the iterator else { while( !S.empty()) { Node_handle n = S.front().first; @@ -777,7 +776,7 @@ private: Node_handle root; - Compact_container nodes; + boost::container::deque nodes; int max_depth; Bounding_box_3 bounding_box; @@ -996,7 +995,7 @@ typename Object_list::difference_type n_vertices = std::distance(objects.begin() void transform(const Aff_transformation_3& t) { // TODO: Bounding box must be updated/transformed, too - if(root != 0) + if(root != nullptr) root->transform(t); BBox_updater bbup; @@ -1138,7 +1137,8 @@ Node_handle build_kdtree(Object_list& O, Object_iterator v_end, CGAL_NEF_TRACEN( "build_kdtree: "< max_depth) - return nodes.insert(Node( parent, Node_handle(), Node_handle(), Plane_3(), O)); + nodes.push_back(Node( parent, nullptr, nullptr, Plane_3(), O)); + return &(nodes.back()); } else { CGAL_NEF_TRACEN("Sizes " << O1.size() << ", " << O2.size() << ", " << O.size()); CGAL_assertion( O1.size() <= O.size() && O2.size() <= O.size()); @@ -1193,9 +1194,11 @@ Node_handle build_kdtree(Object_list& O, Object_iterator v_end, non_efective_splits = 0; if( non_efective_splits > 2) { CGAL_NEF_TRACEN("build_kdtree: non efective splits reached maximum"); - return nodes.insert(Node( parent, Node_handle(), Node_handle(), Plane_3(), O)); + nodes.push_back(Node( parent, nullptr, nullptr, Plane_3(), O)); + return &(nodes.back()); } - Node_handle node = nodes.insert(Node( parent, Node_handle(), Node_handle(), partition_plane, Object_list())); + nodes.push_back(Node( parent, nullptr, nullptr, partition_plane, Object_list())); + Node_handle node = &(nodes.back()); node->left_node = build_kdtree( O1, O1.begin()+v_end1, depth + 1, node, non_efective_splits); node->right_node = build_kdtree( O2, O2.begin()+v_end2, depth + 1, node, non_efective_splits); return node; From b5e76c420320bb05794887c95a88ec95951650d3 Mon Sep 17 00:00:00 2001 From: Andreas Fabri Date: Mon, 12 Apr 2021 09:13:48 +0100 Subject: [PATCH 052/171] Use nullptr --- Nef_3/include/CGAL/Nef_3/K3_tree.h | 46 +++++++++++++++--------------- 1 file changed, 23 insertions(+), 23 deletions(-) diff --git a/Nef_3/include/CGAL/Nef_3/K3_tree.h b/Nef_3/include/CGAL/Nef_3/K3_tree.h index 3aedabef03a..1ec9d024564 100644 --- a/Nef_3/include/CGAL/Nef_3/K3_tree.h +++ b/Nef_3/include/CGAL/Nef_3/K3_tree.h @@ -297,15 +297,15 @@ public: Node( Node_handle p, Node_handle l, Node_handle r, Plane_3 pl, const Object_list& O) : parent_node(p), left_node(l), right_node(r), splitting_plane(pl), object_list(O) { - if(l == 0) + if(l == nullptr) point_on_plane = Point_3(); else point_on_plane = pl.point(); } bool is_leaf() const { - CGAL_assertion( (left_node != 0 && right_node != 0) || - (left_node == 0 && right_node == 0)); - return (left_node == 0 && right_node == 0); + CGAL_assertion( (left_node != nullptr && right_node != nullptr) || + (left_node == nullptr && right_node == nullptr)); + return (left_node == nullptr && right_node == nullptr); } const Node_handle parent() const { return parent_node; } const Node_handle left() const { return left_node; } @@ -314,8 +314,8 @@ public: const Object_list& objects() const { return object_list; } void transform(const Aff_transformation_3& t) { - if(left_node != 0) { - CGAL_assertion(right_node != 0); + if(left_node != nullptr) { + CGAL_assertion(right_node != nullptr); left_node->transform(t); right_node->transform(t); splitting_plane = splitting_plane.transform(t); @@ -335,9 +335,9 @@ public: std::size_t bytes() { // bytes used for the Kd-tree std::size_t s = sizeof(Node); - if(left_node != 0) + if(left_node != nullptr) s += left_node->bytes(); - if(right_node != 0) + if(right_node != nullptr) s += right_node->bytes(); typename Object_list::iterator o; for(o = object_list.begin(); o != object_list.end(); ++o) @@ -374,16 +374,16 @@ public: } } - if(left_node != 0) + if(left_node != nullptr) s += left_node->leafs(mask, lower_limit); - if(right_node != 0) + if(right_node != nullptr) s += right_node->leafs(mask, lower_limit); return s; } template void add_facet(Halffacet_handle f, Depth depth) { - if(left_node == 0) { + if(left_node == nullptr) { object_list.push_back(make_object(f)); return; } @@ -398,7 +398,7 @@ public: template void add_edge(Halfedge_handle e, Depth depth) { - if(left_node == 0) { + if(left_node == nullptr) { object_list.push_back(make_object(e)); return; } @@ -413,7 +413,7 @@ public: template void add_vertex(Vertex_handle v, Depth depth) { - if(left_node == 0) { + if(left_node == nullptr) { object_list.push_back(make_object(v)); return; } @@ -429,7 +429,7 @@ public: friend std::ostream& operator<< (std::ostream& os, const Node_handle node) { - CGAL_assertion( node != 0); + CGAL_assertion( node != nullptr); if( node->is_leaf()) os << node->objects().size(); else { @@ -522,7 +522,7 @@ public: } Iterator( const Self& i) : S(i.S), node(i.node) {} const Object_list& operator*() const { - CGAL_assertion( node != 0); + CGAL_assertion( node != nullptr); return node->objects(); } Self& operator++() { @@ -584,7 +584,7 @@ else { } private: const Node_handle get_node() const { - CGAL_assertion( node != 0); + CGAL_assertion( node != nullptr); return node; } @@ -705,7 +705,7 @@ class Objects_around_box { Iterator( const Self& i) : S(i.S), node(i.node) {} const Object_list& operator*() const { - CGAL_assertion( node != 0); + CGAL_assertion( node != nullptr); return node->objects(); } @@ -751,7 +751,7 @@ class Objects_around_box { private: const Node_handle get_node() const { - CGAL_assertion( node != 0); + CGAL_assertion( node != nullptr); return node; } @@ -983,7 +983,7 @@ typename Object_list::difference_type n_vertices = std::distance(objects.begin() template void visit_k3tree(const Node_handle current, Visitor& V) const { V.pre_visit(current); - if(current->left() != 0) { + if(current->left() != nullptr) { visit_k3tree(current->left(), V); visit_k3tree(current->right(), V); } @@ -1076,7 +1076,7 @@ bool update( Node_handle node, Unique_hash_map& V, Unique_hash_map& E, Unique_hash_map& F) { - CGAL_assertion( node != 0); + CGAL_assertion( node != nullptr); if( node->is_leaf()) { bool updated = false; Object_list* O = &node->object_list; @@ -1276,7 +1276,7 @@ Plane_3 construct_splitting_plane(Object_iterator start, Object_iterator end, } const Node_handle locate_cell_containing( const Point_3& p, const Node_handle node) const { - CGAL_precondition( node != 0); + CGAL_precondition( node != nullptr); if( node->is_leaf()) return node; else { @@ -1291,12 +1291,12 @@ const Node_handle locate_cell_containing( const Point_3& p, const Node_handle no } const Object_list& locate( const Point_3& p, const Node_handle node) const { - CGAL_precondition( node != 0); + CGAL_precondition( node != nullptr); return locate_cell_containing( p, node)->objects(); } bool is_point_on_cell( const Point_3& p, const Node_handle target, const Node_handle current) const { - CGAL_precondition( target != 0 && current != 0); + CGAL_precondition( target != nullptr && current != nullptr); if( current->is_leaf()) return (current == target); Oriented_side side = current->plane().oriented_side(p); From 46a905ad7517fdf92b417beb6981f2d9ebe5abc5 Mon Sep 17 00:00:00 2001 From: Andreas Fabri Date: Mon, 12 Apr 2021 09:21:58 +0100 Subject: [PATCH 053/171] Use nullptr --- Nef_3/include/CGAL/Nef_3/K3_tree.h | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/Nef_3/include/CGAL/Nef_3/K3_tree.h b/Nef_3/include/CGAL/Nef_3/K3_tree.h index 1ec9d024564..ee3fdce44c4 100644 --- a/Nef_3/include/CGAL/Nef_3/K3_tree.h +++ b/Nef_3/include/CGAL/Nef_3/K3_tree.h @@ -695,7 +695,7 @@ class Objects_around_box { const Node_handle node; public: - Iterator() : node(0) {} + Iterator() : node(nullptr) {} Iterator( const Node_handle root, const Bounding_box_3& s) { S.push_front( Candidate( root, s)); @@ -712,7 +712,7 @@ class Objects_around_box { Self& operator++() { if(S.empty()) - node = 0; // end of the iterator + node = nullptr; // end of the iterator else { while( !S.empty()) { const Node_handle n = S.front().first; @@ -1131,7 +1131,7 @@ private: template Node_handle build_kdtree(Object_list& O, Object_iterator v_end, - Depth depth, Node_handle parent=0, int non_efective_splits=0) { + Depth depth, Node_handle parent=nullptr, int non_efective_splits=0) { CGAL_precondition( depth >= 0); CGAL_NEF_TRACEN( "build_kdtree: "< Date: Tue, 13 Apr 2021 19:38:28 +0100 Subject: [PATCH 054/171] Add Aff_transformation_3::is_translation() which checks the rep --- .../include/CGAL/Cartesian/Aff_transformation_3.h | 3 +++ .../CGAL/Cartesian/Aff_transformation_rep_3.h | 7 +++++++ .../include/CGAL/Cartesian/Scaling_rep_3.h | 6 ++++++ .../include/CGAL/Cartesian/Translation_rep_3.h | 5 +++++ .../CGAL/Homogeneous/Aff_transformationH3.h | 15 +++++++++++++++ Nef_3/include/CGAL/Nef_polyhedron_3.h | 8 ++++++-- 6 files changed, 42 insertions(+), 2 deletions(-) diff --git a/Cartesian_kernel/include/CGAL/Cartesian/Aff_transformation_3.h b/Cartesian_kernel/include/CGAL/Cartesian/Aff_transformation_3.h index 7a04f837092..dce2d467b1e 100644 --- a/Cartesian_kernel/include/CGAL/Cartesian/Aff_transformation_3.h +++ b/Cartesian_kernel/include/CGAL/Cartesian/Aff_transformation_3.h @@ -161,6 +161,9 @@ public: bool is_even() const { return this->Ptr()->is_even(); } bool is_odd() const { return ! (this->Ptr()->is_even()); } + bool is_translation() const { return this->Ptr()->is_translation(); } + + FT cartesian(int i, int j) const { return this->Ptr()->cartesian(i,j); } FT homogeneous(int i, int j) const { return cartesian(i,j); } FT m(int i, int j) const { return cartesian(i,j); } diff --git a/Cartesian_kernel/include/CGAL/Cartesian/Aff_transformation_rep_3.h b/Cartesian_kernel/include/CGAL/Cartesian/Aff_transformation_rep_3.h index 406cb7accca..2af5a97cedd 100644 --- a/Cartesian_kernel/include/CGAL/Cartesian/Aff_transformation_rep_3.h +++ b/Cartesian_kernel/include/CGAL/Cartesian/Aff_transformation_rep_3.h @@ -54,6 +54,7 @@ public: virtual Aff_transformation_3 inverse() const = 0; virtual Aff_transformation_3 transpose() const = 0; virtual bool is_even() const = 0; + virtual bool is_translation() const = 0; virtual FT cartesian(int i, int j) const = 0; virtual std::ostream &print(std::ostream &os) const = 0; }; @@ -144,6 +145,12 @@ public: t31, t32, t33) == POSITIVE; } + + virtual bool is_translation() const + { + return false; + } + virtual FT cartesian(int i, int j) const { switch (i) diff --git a/Cartesian_kernel/include/CGAL/Cartesian/Scaling_rep_3.h b/Cartesian_kernel/include/CGAL/Cartesian/Scaling_rep_3.h index 061f1806a9e..d90928efddb 100644 --- a/Cartesian_kernel/include/CGAL/Cartesian/Scaling_rep_3.h +++ b/Cartesian_kernel/include/CGAL/Cartesian/Scaling_rep_3.h @@ -121,6 +121,12 @@ public: return true; } + virtual bool is_translation() const + { + return false; + } + + virtual FT cartesian(int i, int j) const { if (i!=j) return FT(0); diff --git a/Cartesian_kernel/include/CGAL/Cartesian/Translation_rep_3.h b/Cartesian_kernel/include/CGAL/Cartesian/Translation_rep_3.h index 6377c1a3d8a..9f0d718a64e 100644 --- a/Cartesian_kernel/include/CGAL/Cartesian/Translation_rep_3.h +++ b/Cartesian_kernel/include/CGAL/Cartesian/Translation_rep_3.h @@ -125,6 +125,11 @@ public: return true; } + virtual bool is_translation() const + { + return true; + } + virtual FT cartesian(int i, int j) const { if (j==i) return FT(1); diff --git a/Homogeneous_kernel/include/CGAL/Homogeneous/Aff_transformationH3.h b/Homogeneous_kernel/include/CGAL/Homogeneous/Aff_transformationH3.h index b67c4f024a3..1ee88421490 100644 --- a/Homogeneous_kernel/include/CGAL/Homogeneous/Aff_transformationH3.h +++ b/Homogeneous_kernel/include/CGAL/Homogeneous/Aff_transformationH3.h @@ -87,6 +87,9 @@ public: virtual FT cartesian(int i, int j) const = 0; + + virtual bool + is_translation() const = 0; }; template < class R_ > @@ -212,6 +215,12 @@ public: is_even() const { return true; } + virtual bool + is_translation() const + { + return false; + } + virtual RT homogeneous(int i, int j) const { return (i==j) ? RT(1) : RT(0); } @@ -693,6 +702,12 @@ bool Translation_repH3::is_even() const { return true; } +template < class R > +inline +bool +Translation_repH3::is_translation() const +{ return true; } + template < class R > CGAL_KERNEL_LARGE_INLINE typename Translation_repH3::RT diff --git a/Nef_3/include/CGAL/Nef_polyhedron_3.h b/Nef_3/include/CGAL/Nef_polyhedron_3.h index 8a2e1e16520..c1a0791152f 100644 --- a/Nef_3/include/CGAL/Nef_polyhedron_3.h +++ b/Nef_3/include/CGAL/Nef_polyhedron_3.h @@ -1710,6 +1710,8 @@ protected: bool ninety = is_90degree_rotation(aff); bool scale = is_scaling(aff); + bool translate = aff.is_translation(); + Vertex_iterator vi; CGAL_forall_vertices( vi, snc()) { @@ -1726,8 +1728,10 @@ protected: vertex_list.push_back(vi); } else { vi->point() = vi->point().transform( aff); - SM_decorator sdeco(&*vi); - sdeco.transform( linear); + if(! translate){ + SM_decorator sdeco(&*vi); + sdeco.transform( linear); + } } } From 56a3a35a7d45c07efacc63111305007ea302ce58 Mon Sep 17 00:00:00 2001 From: Andreas Fabri Date: Tue, 13 Apr 2021 20:05:13 +0100 Subject: [PATCH 055/171] Fix Homogeneous --- .../CGAL/Homogeneous/Aff_transformationH3.h | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/Homogeneous_kernel/include/CGAL/Homogeneous/Aff_transformationH3.h b/Homogeneous_kernel/include/CGAL/Homogeneous/Aff_transformationH3.h index 1ee88421490..fb06bfd0d1c 100644 --- a/Homogeneous_kernel/include/CGAL/Homogeneous/Aff_transformationH3.h +++ b/Homogeneous_kernel/include/CGAL/Homogeneous/Aff_transformationH3.h @@ -139,6 +139,9 @@ public: virtual bool is_even() const; + virtual bool + is_translation() const; + virtual RT homogeneous(int i, int j) const ; @@ -273,6 +276,9 @@ public: virtual bool is_even() const; + virtual bool + is_translation() const; + virtual RT homogeneous(int i, int j) const ; @@ -548,6 +554,14 @@ Aff_transformation_repH3::is_even() const t20, t21, t22 ) ) == POSITIVE ); } +template < class R > +CGAL_KERNEL_INLINE +bool +Aff_transformation_repH3::is_translation() const + return false; +} + + template < class R > CGAL_KERNEL_LARGE_INLINE typename Aff_transformation_repH3::RT From a841ee4d1aa7b09fcfc23a0b6f072b2e9d9ebce1 Mon Sep 17 00:00:00 2001 From: Andreas Fabri Date: Tue, 13 Apr 2021 20:10:22 +0100 Subject: [PATCH 056/171] Fix Homogeneous --- .../include/CGAL/Homogeneous/Aff_transformationH3.h | 1 + 1 file changed, 1 insertion(+) diff --git a/Homogeneous_kernel/include/CGAL/Homogeneous/Aff_transformationH3.h b/Homogeneous_kernel/include/CGAL/Homogeneous/Aff_transformationH3.h index fb06bfd0d1c..42b76bbed7b 100644 --- a/Homogeneous_kernel/include/CGAL/Homogeneous/Aff_transformationH3.h +++ b/Homogeneous_kernel/include/CGAL/Homogeneous/Aff_transformationH3.h @@ -558,6 +558,7 @@ template < class R > CGAL_KERNEL_INLINE bool Aff_transformation_repH3::is_translation() const +{ return false; } From 01cc9ec65351480472cb5e8fe6ba59fafc19451c Mon Sep 17 00:00:00 2001 From: Andreas Fabri Date: Thu, 15 Apr 2021 13:14:42 +0100 Subject: [PATCH 057/171] Scaling a plane means scaling Plane_3::d() --- .../include/CGAL/Cartesian/Aff_transformation_3.h | 4 ++++ .../CGAL/Cartesian/Aff_transformation_rep_3.h | 14 ++++++++++++++ .../include/CGAL/Cartesian/Scaling_rep_3.h | 11 +++++++++++ .../include/CGAL/Cartesian/Translation_rep_3.h | 9 +++++++++ 4 files changed, 38 insertions(+) diff --git a/Cartesian_kernel/include/CGAL/Cartesian/Aff_transformation_3.h b/Cartesian_kernel/include/CGAL/Cartesian/Aff_transformation_3.h index dce2d467b1e..db82d2b78fa 100644 --- a/Cartesian_kernel/include/CGAL/Cartesian/Aff_transformation_3.h +++ b/Cartesian_kernel/include/CGAL/Cartesian/Aff_transformation_3.h @@ -144,6 +144,9 @@ public: Plane_3 transform(const Plane_3& p) const { + if(is_scaling()){ + return this->Ptr()->transform(p); + } if (is_even()) return Plane_3(transform(p.point()), transpose().inverse().transform(p.orthogonal_direction())); @@ -162,6 +165,7 @@ public: bool is_odd() const { return ! (this->Ptr()->is_even()); } bool is_translation() const { return this->Ptr()->is_translation(); } + bool is_scaling() const { return this->Ptr()->is_scaling(); } FT cartesian(int i, int j) const { return this->Ptr()->cartesian(i,j); } diff --git a/Cartesian_kernel/include/CGAL/Cartesian/Aff_transformation_rep_3.h b/Cartesian_kernel/include/CGAL/Cartesian/Aff_transformation_rep_3.h index 2af5a97cedd..1d326dfa092 100644 --- a/Cartesian_kernel/include/CGAL/Cartesian/Aff_transformation_rep_3.h +++ b/Cartesian_kernel/include/CGAL/Cartesian/Aff_transformation_rep_3.h @@ -31,6 +31,7 @@ public: typedef typename R::Point_3 Point_3; typedef typename R::Vector_3 Vector_3; typedef typename R::Direction_3 Direction_3; + typedef typename R::Plane_3 Plane_3; typedef typename R::Aff_transformation_3 Aff_transformation_3; virtual ~Aff_transformation_rep_baseC3(){} @@ -38,6 +39,7 @@ public: virtual Point_3 transform(const Point_3 &p) const = 0; virtual Vector_3 transform(const Vector_3 &v) const = 0; virtual Direction_3 transform(const Direction_3 &d) const = 0; + virtual Plane_3 transform(const Plane_3& p) const = 0; virtual Aff_transformation_3 operator*( const Aff_transformation_rep_baseC3 &t) const = 0; @@ -55,6 +57,7 @@ public: virtual Aff_transformation_3 transpose() const = 0; virtual bool is_even() const = 0; virtual bool is_translation() const = 0; + virtual bool is_scaling() const = 0; virtual FT cartesian(int i, int j) const = 0; virtual std::ostream &print(std::ostream &os) const = 0; }; @@ -128,6 +131,12 @@ public: t31 * v.x() + t32 * v.y() + t33 * v.z()); } + virtual Plane_3 transform(const Plane_3& p) const + { + return p; // fix or never call + } + + // Note that Aff_transformation is not defined yet, // so the following 6 functions have to be implemented // outside class body @@ -151,6 +160,11 @@ public: return false; } + virtual bool is_scaling() const + { + return false; + } + virtual FT cartesian(int i, int j) const { switch (i) diff --git a/Cartesian_kernel/include/CGAL/Cartesian/Scaling_rep_3.h b/Cartesian_kernel/include/CGAL/Cartesian/Scaling_rep_3.h index d90928efddb..402f1fedb25 100644 --- a/Cartesian_kernel/include/CGAL/Cartesian/Scaling_rep_3.h +++ b/Cartesian_kernel/include/CGAL/Cartesian/Scaling_rep_3.h @@ -34,6 +34,7 @@ public: typedef typename Transformation_base_3::Point_3 Point_3; typedef typename Transformation_base_3::Vector_3 Vector_3; typedef typename Transformation_base_3::Direction_3 Direction_3; + typedef typename Transformation_base_3::Plane_3 Plane_3; typedef typename Transformation_base_3::Aff_transformation_3 Aff_transformation_3; @@ -59,6 +60,12 @@ public: return d; } + virtual Plane_3 transform(const Plane_3 &p) const + { + // direction ( which is (p.a(), p.b(), p.c())) does not change + return Plane_3(p.a(),p.b(),p.c(), p.d()*scalefactor_); + } + virtual Aff_transformation_3 operator*(const Transformation_base_3 &t) const { return t.compose(*this); @@ -126,6 +133,10 @@ public: return false; } + virtual bool is_scaling() const + { + return true; + } virtual FT cartesian(int i, int j) const { diff --git a/Cartesian_kernel/include/CGAL/Cartesian/Translation_rep_3.h b/Cartesian_kernel/include/CGAL/Cartesian/Translation_rep_3.h index 9f0d718a64e..99c1838356a 100644 --- a/Cartesian_kernel/include/CGAL/Cartesian/Translation_rep_3.h +++ b/Cartesian_kernel/include/CGAL/Cartesian/Translation_rep_3.h @@ -56,6 +56,11 @@ public: return d; } + virtual Plane_3 transform(const Plane_3 &d) const + { + return d; // fix or never call it + } + virtual Aff_transformation_3 operator*(const Transformation_base_3 &t) const { return t.compose(*this); @@ -130,6 +135,10 @@ public: return true; } + virtual bool is_scaling() const + { + return false; + } virtual FT cartesian(int i, int j) const { if (j==i) return FT(1); From 91ea4909c2908b249392f8cf9745b95ed31a1a74 Mon Sep 17 00:00:00 2001 From: Andreas Fabri Date: Thu, 15 Apr 2021 13:36:58 +0100 Subject: [PATCH 058/171] Fixes --- .../CGAL/Cartesian/Aff_transformation_rep_3.h | 1 + .../include/CGAL/Cartesian/Translation_rep_3.h | 1 + .../CGAL/Homogeneous/Aff_transformationH3.h | 15 +++++++++++++++ 3 files changed, 17 insertions(+) diff --git a/Cartesian_kernel/include/CGAL/Cartesian/Aff_transformation_rep_3.h b/Cartesian_kernel/include/CGAL/Cartesian/Aff_transformation_rep_3.h index 1d326dfa092..98a69b3a568 100644 --- a/Cartesian_kernel/include/CGAL/Cartesian/Aff_transformation_rep_3.h +++ b/Cartesian_kernel/include/CGAL/Cartesian/Aff_transformation_rep_3.h @@ -79,6 +79,7 @@ public: typedef typename Transformation_base_3::Point_3 Point_3; typedef typename Transformation_base_3::Vector_3 Vector_3; typedef typename Transformation_base_3::Direction_3 Direction_3; + typedef typename Transformation_base_3::Plane_3 Plane_3; typedef typename Transformation_base_3:: Aff_transformation_3 Aff_transformation_3; diff --git a/Cartesian_kernel/include/CGAL/Cartesian/Translation_rep_3.h b/Cartesian_kernel/include/CGAL/Cartesian/Translation_rep_3.h index 99c1838356a..eb897160252 100644 --- a/Cartesian_kernel/include/CGAL/Cartesian/Translation_rep_3.h +++ b/Cartesian_kernel/include/CGAL/Cartesian/Translation_rep_3.h @@ -34,6 +34,7 @@ public: typedef typename Transformation_base_3::Point_3 Point_3; typedef typename Transformation_base_3::Vector_3 Vector_3; typedef typename Transformation_base_3::Direction_3 Direction_3; + typedef typename Transformation_base_3::Plane_3 Plane_3; typedef typename Transformation_base_3::Aff_transformation_3 Aff_transformation_3; diff --git a/Homogeneous_kernel/include/CGAL/Homogeneous/Aff_transformationH3.h b/Homogeneous_kernel/include/CGAL/Homogeneous/Aff_transformationH3.h index 42b76bbed7b..3e6f57ec140 100644 --- a/Homogeneous_kernel/include/CGAL/Homogeneous/Aff_transformationH3.h +++ b/Homogeneous_kernel/include/CGAL/Homogeneous/Aff_transformationH3.h @@ -90,6 +90,9 @@ public: virtual bool is_translation() const = 0; + + virtual bool + is_scaling() const = 0; }; template < class R_ > @@ -142,6 +145,9 @@ public: virtual bool is_translation() const; + virtual bool + is_scaling() const; + virtual RT homogeneous(int i, int j) const ; @@ -224,6 +230,12 @@ public: return false; } + virtual bool + is_scaling() const + { + return false; + } + virtual RT homogeneous(int i, int j) const { return (i==j) ? RT(1) : RT(0); } @@ -279,6 +291,9 @@ public: virtual bool is_translation() const; + virtual bool + is_scaling() const; + virtual RT homogeneous(int i, int j) const ; From 153413e8d59907ee9dde79bb13cc0fd23338e103 Mon Sep 17 00:00:00 2001 From: Andreas Fabri Date: Thu, 15 Apr 2021 13:58:33 +0100 Subject: [PATCH 059/171] Add code for translation of Plane_3 and move generic code down to the rep --- .../include/CGAL/Cartesian/Aff_transformation_3.h | 12 +----------- .../CGAL/Cartesian/Aff_transformation_rep_3.h | 7 ++++++- .../include/CGAL/Cartesian/Translation_rep_3.h | 8 ++++++-- 3 files changed, 13 insertions(+), 14 deletions(-) diff --git a/Cartesian_kernel/include/CGAL/Cartesian/Aff_transformation_3.h b/Cartesian_kernel/include/CGAL/Cartesian/Aff_transformation_3.h index db82d2b78fa..d696e1917a3 100644 --- a/Cartesian_kernel/include/CGAL/Cartesian/Aff_transformation_3.h +++ b/Cartesian_kernel/include/CGAL/Cartesian/Aff_transformation_3.h @@ -143,17 +143,7 @@ public: Plane_3 transform(const Plane_3& p) const - { - if(is_scaling()){ - return this->Ptr()->transform(p); - } - if (is_even()) - return Plane_3(transform(p.point()), - transpose().inverse().transform(p.orthogonal_direction())); - else - return Plane_3(transform(p.point()), - - transpose().inverse().transform(p.orthogonal_direction())); - } + { return this->Ptr()->transform(p); } Plane_3 operator()(const Plane_3& p) const diff --git a/Cartesian_kernel/include/CGAL/Cartesian/Aff_transformation_rep_3.h b/Cartesian_kernel/include/CGAL/Cartesian/Aff_transformation_rep_3.h index 98a69b3a568..813a452f026 100644 --- a/Cartesian_kernel/include/CGAL/Cartesian/Aff_transformation_rep_3.h +++ b/Cartesian_kernel/include/CGAL/Cartesian/Aff_transformation_rep_3.h @@ -134,7 +134,12 @@ public: virtual Plane_3 transform(const Plane_3& p) const { - return p; // fix or never call + if (is_even()) + return Plane_3(transform(p.point()), + transpose().inverse().transform(p.orthogonal_direction())); + else + return Plane_3(transform(p.point()), + - transpose().inverse().transform(p.orthogonal_direction())); } diff --git a/Cartesian_kernel/include/CGAL/Cartesian/Translation_rep_3.h b/Cartesian_kernel/include/CGAL/Cartesian/Translation_rep_3.h index eb897160252..488dc17f4e4 100644 --- a/Cartesian_kernel/include/CGAL/Cartesian/Translation_rep_3.h +++ b/Cartesian_kernel/include/CGAL/Cartesian/Translation_rep_3.h @@ -57,9 +57,13 @@ public: return d; } - virtual Plane_3 transform(const Plane_3 &d) const + virtual Plane_3 transform(const Plane_3 &p) const { - return d; // fix or never call it + // direction ( which is (p.a(), p.b(), p.c())) does not change + return Plane_3(p.a(), + p.b(), + p.c(), + p.d() - ( p.a()*translationvector_.x() + p.b()*translationvector_.y() + p.c()*translationvector_.z())); } virtual Aff_transformation_3 operator*(const Transformation_base_3 &t) const From f7f781c2d27850c93582721b2c27c3cfc2bf133d Mon Sep 17 00:00:00 2001 From: Simon Giraudot Date: Mon, 19 Apr 2021 12:44:25 +0200 Subject: [PATCH 060/171] Fix warning by explicitly casting to/from property map value type --- .../include/CGAL/cluster_point_set.h | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/Point_set_processing_3/include/CGAL/cluster_point_set.h b/Point_set_processing_3/include/CGAL/cluster_point_set.h index 3266398c3ef..1b44dcf97d5 100644 --- a/Point_set_processing_3/include/CGAL/cluster_point_set.h +++ b/Point_set_processing_3/include/CGAL/cluster_point_set.h @@ -139,6 +139,7 @@ std::size_t cluster_point_set (PointRange& points, // basic geometric types typedef typename PointRange::iterator iterator; typedef typename iterator::value_type value_type; + typedef typename boost::property_traits::value_type Cluster_index_t; typedef typename CGAL::GetPointMap::type PointMap; typedef typename Point_set_processing_3::GetK::Kernel Kernel; typedef typename Point_set_processing_3::GetAdjacencies::type Adjacencies; @@ -175,7 +176,7 @@ std::size_t cluster_point_set (PointRange& points, // Init cluster map with -1 for (const value_type& p : points) - put (cluster_map, p, -1); + put (cluster_map, p, Cluster_index_t(-1)); Neighbor_query neighbor_query (points, point_map); @@ -190,7 +191,7 @@ std::size_t cluster_point_set (PointRange& points, { const value_type& p = *it; - if (int(get (cluster_map, p)) != -1) + if (get (cluster_map, p) != Cluster_index_t(-1)) continue; todo.push (it); @@ -200,10 +201,10 @@ std::size_t cluster_point_set (PointRange& points, iterator current = todo.front(); todo.pop(); - if (int(get (cluster_map, *current)) != -1) + if (get (cluster_map, *current) != Cluster_index_t(-1)) continue; - put (cluster_map, *current, nb_clusters); + put (cluster_map, *current, Cluster_index_t(nb_clusters)); ++ done; if (callback && !callback (callback_factor * (done + 1) / double(size))) @@ -230,7 +231,7 @@ std::size_t cluster_point_set (PointRange& points, done = 0; for (const value_type& p : points) { - std::size_t c0 = get (cluster_map, p); + std::size_t c0 = std::size_t(get (cluster_map, p)); neighbors.clear(); neighbor_query.get_iterators (get (point_map, p), 0, neighbor_radius, @@ -238,7 +239,7 @@ std::size_t cluster_point_set (PointRange& points, for (const iterator& it : neighbors) { - std::size_t c1 = get (cluster_map, *it); + std::size_t c1 = std::size_t(get (cluster_map, *it)); if (c0 < c1) adj.push_back (std::make_pair (c0, c1)); else if (c0 > c1) From 35fc3c7d2dc5927a40302a7c76e4bdda681b376d Mon Sep 17 00:00:00 2001 From: Andreas Fabri Date: Tue, 20 Apr 2021 09:04:23 +0100 Subject: [PATCH 061/171] Add missing implementations for Homogeneous. Fix the test for Filtered_cartesian as it has become more exact now --- .../CGAL/Homogeneous/Aff_transformationH3.h | 35 ++++++++++++++++++- .../CGAL/_test_cls_aff_transformation_3.h | 2 +- 2 files changed, 35 insertions(+), 2 deletions(-) diff --git a/Homogeneous_kernel/include/CGAL/Homogeneous/Aff_transformationH3.h b/Homogeneous_kernel/include/CGAL/Homogeneous/Aff_transformationH3.h index 3e6f57ec140..8db74b21d65 100644 --- a/Homogeneous_kernel/include/CGAL/Homogeneous/Aff_transformationH3.h +++ b/Homogeneous_kernel/include/CGAL/Homogeneous/Aff_transformationH3.h @@ -233,7 +233,7 @@ public: virtual bool is_scaling() const { - return false; + return true; } virtual RT @@ -370,6 +370,12 @@ public: bool is_odd() const; + bool + is_scaling() const; + + bool + is_translation() const; + FT cartesian(int i, int j) const { return this->Ptr()->cartesian(i,j); } @@ -577,6 +583,14 @@ Aff_transformation_repH3::is_translation() const return false; } +template < class R > +CGAL_KERNEL_INLINE +bool +Aff_transformation_repH3::is_scaling() const +{ + return false; +} + template < class R > CGAL_KERNEL_LARGE_INLINE @@ -738,6 +752,12 @@ bool Translation_repH3::is_translation() const { return true; } +template < class R > +inline +bool +Translation_repH3::is_scaling() const +{ return false; } + template < class R > CGAL_KERNEL_LARGE_INLINE typename Translation_repH3::RT @@ -935,6 +955,19 @@ bool Aff_transformationH3::is_odd() const { return ( ! (this->Ptr()->is_even() )); } + +template < class R > +inline +bool +Aff_transformationH3::is_scaling() const +{ return this->Ptr()->is_scaling(); } + +template < class R > +inline +bool +Aff_transformationH3::is_translation() const +{ return this->Ptr()->is_translation(); } + template < class R > CGAL_KERNEL_INLINE Aff_transformationH3 diff --git a/Kernel_23/test/Kernel_23/include/CGAL/_test_cls_aff_transformation_3.h b/Kernel_23/test/Kernel_23/include/CGAL/_test_cls_aff_transformation_3.h index c10c07d1b1c..e4d53323454 100644 --- a/Kernel_23/test/Kernel_23/include/CGAL/_test_cls_aff_transformation_3.h +++ b/Kernel_23/test/Kernel_23/include/CGAL/_test_cls_aff_transformation_3.h @@ -261,7 +261,7 @@ _test_cls_aff_transformation_3(const R& ) assert( vec.transform(translate) == vec.transform(gtrans) ); assert( dir.transform(translate) == dir.transform(gtrans) ); assert( pnt.transform(translate) == pnt.transform(gtrans) ); - assert( pla.transform(translate) == pla.transform(gtrans) ); + assert( pla.transform(translate) == pla.transform(gtrans) || nonexact ); // xrefl tdir = d0.transform(xrefl); From c489b7ffa5c6a9b09740ec13fb7fc935f55f0d27 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mael=20Rouxel-Labb=C3=A9?= Date: Tue, 20 Apr 2021 15:59:29 +0200 Subject: [PATCH 062/171] Add missing Coercion_traits specialization for custom FT in PMP test --- .../Polygon_mesh_processing/test_pmp_distance.cpp | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) diff --git a/Polygon_mesh_processing/test/Polygon_mesh_processing/test_pmp_distance.cpp b/Polygon_mesh_processing/test/Polygon_mesh_processing/test_pmp_distance.cpp index dbcbce4db8a..70251cd00ed 100644 --- a/Polygon_mesh_processing/test/Polygon_mesh_processing/test_pmp_distance.cpp +++ b/Polygon_mesh_processing/test/Polygon_mesh_processing/test_pmp_distance.cpp @@ -1,11 +1,11 @@ #include #include + #include #include - - #include - +#include +#include #include #include @@ -194,6 +194,14 @@ struct Custom_traits_Hausdorff }; namespace CGAL{ + +CGAL_DEFINE_COERCION_TRAITS_FOR_SELF(Custom_traits_Hausdorff::FT) +CGAL_DEFINE_COERCION_TRAITS_FROM_TO(short, Custom_traits_Hausdorff::FT) +CGAL_DEFINE_COERCION_TRAITS_FROM_TO(int, Custom_traits_Hausdorff::FT) +CGAL_DEFINE_COERCION_TRAITS_FROM_TO(long, Custom_traits_Hausdorff::FT) +CGAL_DEFINE_COERCION_TRAITS_FROM_TO(float, Custom_traits_Hausdorff::FT) +CGAL_DEFINE_COERCION_TRAITS_FROM_TO(double, Custom_traits_Hausdorff::FT) + template<>struct Kernel_traits { typedef Custom_traits_Hausdorff Kernel; From 2c1832bc25c31865b997d58da6a70301b3cbb75c Mon Sep 17 00:00:00 2001 From: Andreas Fabri Date: Wed, 21 Apr 2021 09:27:10 +0100 Subject: [PATCH 063/171] Surface Mesh Topology: Try to fix warning --- .../include/CGAL/Linear_cell_complex_constructors.h | 3 +++ 1 file changed, 3 insertions(+) diff --git a/Linear_cell_complex/include/CGAL/Linear_cell_complex_constructors.h b/Linear_cell_complex/include/CGAL/Linear_cell_complex_constructors.h index 40aab7abdd3..211c76a78ae 100644 --- a/Linear_cell_complex/include/CGAL/Linear_cell_complex_constructors.h +++ b/Linear_cell_complex/include/CGAL/Linear_cell_complex_constructors.h @@ -249,6 +249,9 @@ namespace CGAL { { std::size_t index; scanner.scan_facet_vertex_index(index, j+1, i); + if(! in){ + return false; + } B.add_vertex_to_facet(index); } B.end_facet(); From f0fea275afc675aa58930f4ae16b893d6b5541a6 Mon Sep 17 00:00:00 2001 From: Andreas Fabri Date: Wed, 21 Apr 2021 15:03:39 +0100 Subject: [PATCH 064/171] default in the base class --- .../CGAL/Homogeneous/Aff_transformationH3.h | 41 +------------------ 1 file changed, 2 insertions(+), 39 deletions(-) diff --git a/Homogeneous_kernel/include/CGAL/Homogeneous/Aff_transformationH3.h b/Homogeneous_kernel/include/CGAL/Homogeneous/Aff_transformationH3.h index 8db74b21d65..d28b56e0e5e 100644 --- a/Homogeneous_kernel/include/CGAL/Homogeneous/Aff_transformationH3.h +++ b/Homogeneous_kernel/include/CGAL/Homogeneous/Aff_transformationH3.h @@ -89,10 +89,10 @@ public: cartesian(int i, int j) const = 0; virtual bool - is_translation() const = 0; + is_translation() const { return false; } virtual bool - is_scaling() const = 0; + is_scaling() const { return false; } }; template < class R_ > @@ -142,12 +142,6 @@ public: virtual bool is_even() const; - virtual bool - is_translation() const; - - virtual bool - is_scaling() const; - virtual RT homogeneous(int i, int j) const ; @@ -224,12 +218,6 @@ public: is_even() const { return true; } - virtual bool - is_translation() const - { - return false; - } - virtual bool is_scaling() const { @@ -291,9 +279,6 @@ public: virtual bool is_translation() const; - virtual bool - is_scaling() const; - virtual RT homogeneous(int i, int j) const ; @@ -575,22 +560,6 @@ Aff_transformation_repH3::is_even() const t20, t21, t22 ) ) == POSITIVE ); } -template < class R > -CGAL_KERNEL_INLINE -bool -Aff_transformation_repH3::is_translation() const -{ - return false; -} - -template < class R > -CGAL_KERNEL_INLINE -bool -Aff_transformation_repH3::is_scaling() const -{ - return false; -} - template < class R > CGAL_KERNEL_LARGE_INLINE @@ -752,12 +721,6 @@ bool Translation_repH3::is_translation() const { return true; } -template < class R > -inline -bool -Translation_repH3::is_scaling() const -{ return false; } - template < class R > CGAL_KERNEL_LARGE_INLINE typename Translation_repH3::RT From 8a3d9ad124907a6142feee2e06b10e5a95cdc683 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?S=C3=A9bastien=20Loriot?= Date: Wed, 21 Apr 2021 16:57:28 +0200 Subject: [PATCH 065/171] restrict the usage of the macro everything is local now --- .../repair_self_intersections.h | 79 ++++++------------- 1 file changed, 23 insertions(+), 56 deletions(-) diff --git a/Polygon_mesh_processing/include/CGAL/Polygon_mesh_processing/repair_self_intersections.h b/Polygon_mesh_processing/include/CGAL/Polygon_mesh_processing/repair_self_intersections.h index 18153362c22..fec1ae97801 100644 --- a/Polygon_mesh_processing/include/CGAL/Polygon_mesh_processing/repair_self_intersections.h +++ b/Polygon_mesh_processing/include/CGAL/Polygon_mesh_processing/repair_self_intersections.h @@ -437,15 +437,13 @@ void constrain_sharp_and_border_edges(const FaceRange& faces, // -*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*- -template +template bool remove_self_intersections_with_smoothing(std::set::face_descriptor>& face_range, TriangleMesh& tmesh, const bool constrain_sharp_edges, const double dihedral_angle, const double weak_DA, -#ifndef CGAL_PMP_REMOVE_SELF_INTERSECTION_NO_POLYHEDRAL_ENVELOPE_CHECK - const Polyhedral_envelope& cc_envelope, -#endif + const PolyhedralEnvelope& cc_envelope, VertexPointMap vpm, const GeomTraits& gt) { @@ -498,7 +496,6 @@ bool remove_self_intersections_with_smoothing(std::set > patch; for(const face_descriptor f : faces(local_mesh)) @@ -1042,14 +1038,12 @@ bool check_patch_sanity(const std::vector >& patch) } // This function is only called when the hole is NOT subdivided into smaller holes -template +template bool fill_hole(std::vector::halfedge_descriptor>& cc_border_hedges, std::set::face_descriptor>& cc_faces, std::set::face_descriptor>& working_face_range, TriangleMesh& tmesh, -#ifndef CGAL_PMP_REMOVE_SELF_INTERSECTION_NO_POLYHEDRAL_ENVELOPE_CHECK - const CGAL::Polyhedral_envelope& cc_envelope, -#endif + const PolyhedralEnvelope& cc_envelope, VertexPointMap vpm, const GeomTraits& gt) { @@ -1087,7 +1081,6 @@ bool fill_hole(std::vector::halfedge_ return false; } -#ifndef CGAL_PMP_REMOVE_SELF_INTERSECTION_NO_POLYHEDRAL_ENVELOPE_CHECK if (!cc_envelope.is_empty() && !cc_envelope(patch)) { #ifdef CGAL_PMP_REMOVE_SELF_INTERSECTION_DEBUG @@ -1095,7 +1088,6 @@ bool fill_hole(std::vector::halfedge_ #endif return false; } -#endif // Could renew the range directly within the patch replacement function // to avoid erasing and re-adding the same face @@ -1121,13 +1113,11 @@ bool fill_hole(std::vector::halfedge_ } // Same function as above but border of the hole is not known -template +template bool fill_hole(std::set::face_descriptor>& cc_faces, std::set::face_descriptor>& working_face_range, TriangleMesh& tmesh, -#ifndef CGAL_PMP_REMOVE_SELF_INTERSECTION_NO_POLYHEDRAL_ENVELOPE_CHECK - const CGAL::Polyhedral_envelope& cc_envelope, -#endif + const PolyhedralEnvelope& cc_envelope, VertexPointMap vpm, const GeomTraits& gt) { @@ -1149,24 +1139,19 @@ bool fill_hole(std::set::face_descrip if(order_border_halfedge_range(cc_border_hedges, tmesh)) return fill_hole(cc_border_hedges, cc_faces, working_face_range, tmesh, -#ifndef CGAL_PMP_REMOVE_SELF_INTERSECTION_NO_POLYHEDRAL_ENVELOPE_CHECK - cc_envelope, -#endif - vpm, gt); + cc_envelope,vpm, gt); else return false; } -template +template bool fill_hole_with_constraints(std::vector::halfedge_descriptor>& cc_border_hedges, std::set::face_descriptor>& cc_faces, std::set::face_descriptor>& working_face_range, TriangleMesh& tmesh, const double dihedral_angle, const double weak_DA, -#ifndef CGAL_PMP_REMOVE_SELF_INTERSECTION_NO_POLYHEDRAL_ENVELOPE_CHECK - const CGAL::Polyhedral_envelope& cc_envelope, -#endif + const PolyhedralEnvelope& cc_envelope, VertexPointMap vpm, const GeomTraits& gt) { @@ -1215,10 +1200,7 @@ bool fill_hole_with_constraints(std::vector use basic hole-filling return fill_hole(cc_border_hedges, cc_faces, working_face_range, tmesh, -#ifndef CGAL_PMP_REMOVE_SELF_INTERSECTION_NO_POLYHEDRAL_ENVELOPE_CHECK - cc_envelope, -#endif - vpm, gt); + cc_envelope,vpm, gt); } } #ifdef CGAL_PMP_REMOVE_SELF_INTERSECTION_DEBUG @@ -1253,13 +1235,9 @@ bool fill_hole_with_constraints(std::vector new_faces; @@ -1378,7 +1352,7 @@ bool is_simple_3(const std::vector::h return true; } -template +template bool remove_self_intersections_with_hole_filling(std::vector::halfedge_descriptor>& cc_border_hedges, std::set::face_descriptor>& cc_faces, std::set::face_descriptor>& working_face_range, @@ -1386,9 +1360,7 @@ bool remove_self_intersections_with_hole_filling(std::vector& cc_envelope, -#endif + const PolyhedralEnvelope& cc_envelope, VertexPointMap vpm, const GeomTraits& gt) { @@ -1418,18 +1390,12 @@ bool remove_self_intersections_with_hole_filling(std::vector(cc_faces, tmesh, containment_epsilon); #else + struct Return_true { + bool is_empty() const { return true; } + bool operator()(const std::vector >&) const { return true; } + bool operator()(const TriangleMesh&) const { return true; } + }; + + Return_true cc_envelope; CGAL_USE(containment_epsilon); #endif @@ -1753,9 +1726,7 @@ remove_self_intersections_one_step(std::set Date: Wed, 21 Apr 2021 15:13:06 +0200 Subject: [PATCH 066/171] fix default --- .../CGAL/Polygon_mesh_processing/repair_self_intersections.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Polygon_mesh_processing/include/CGAL/Polygon_mesh_processing/repair_self_intersections.h b/Polygon_mesh_processing/include/CGAL/Polygon_mesh_processing/repair_self_intersections.h index fec1ae97801..1f0d457ddda 100644 --- a/Polygon_mesh_processing/include/CGAL/Polygon_mesh_processing/repair_self_intersections.h +++ b/Polygon_mesh_processing/include/CGAL/Polygon_mesh_processing/repair_self_intersections.h @@ -1957,7 +1957,7 @@ bool remove_self_intersections(const FaceRange& face_range, Return_false//default > ::type Output_iterator_predicate; Output_iterator_predicate out_it_predicates - = choose_parameter(get_parameter(np, internal_np::filter)); + = choose_parameter(get_parameter(np, internal_np::filter)); // use containment check const double containment_epsilon = choose_parameter(get_parameter(np, internal_np::polyhedral_envelope_epsilon), 0.); From 8a446d1778f8e40a3e0dc9a53a18d3d401631c58 Mon Sep 17 00:00:00 2001 From: Andreas Fabri Date: Thu, 22 Apr 2021 08:49:52 +0100 Subject: [PATCH 067/171] Document is_scaling() and is_translation() --- Kernel_23/doc/Kernel_23/CGAL/Aff_transformation_3.h | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/Kernel_23/doc/Kernel_23/CGAL/Aff_transformation_3.h b/Kernel_23/doc/Kernel_23/CGAL/Aff_transformation_3.h index 7d3889def8c..6181b0bc6d5 100644 --- a/Kernel_23/doc/Kernel_23/CGAL/Aff_transformation_3.h +++ b/Kernel_23/doc/Kernel_23/CGAL/Aff_transformation_3.h @@ -199,6 +199,17 @@ returns `true`, if the transformation is reflecting. */ bool is_odd() const; +/*! +returns `true`, if the transformation type is the specialized scaling. +*/ +bool is_scaling() const; + +/*! +returns `true`, if the transformation type is the specialized translation. +*/ +bool is_translation() const; + + /// @} /// \name Matrix Entry Access From 10e7b1a320e36d62208dd466a1e8afa95eced717 Mon Sep 17 00:00:00 2001 From: Andreas Fabri Date: Thu, 22 Apr 2021 08:58:33 +0100 Subject: [PATCH 068/171] Address warning: type qualifiers ignored on function return type [-Wignored-qualifiers] --- Nef_3/include/CGAL/Nef_3/K3_tree.h | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/Nef_3/include/CGAL/Nef_3/K3_tree.h b/Nef_3/include/CGAL/Nef_3/K3_tree.h index ee3fdce44c4..e0e0dff5afe 100644 --- a/Nef_3/include/CGAL/Nef_3/K3_tree.h +++ b/Nef_3/include/CGAL/Nef_3/K3_tree.h @@ -307,9 +307,9 @@ public: (left_node == nullptr && right_node == nullptr)); return (left_node == nullptr && right_node == nullptr); } - const Node_handle parent() const { return parent_node; } - const Node_handle left() const { return left_node; } - const Node_handle right() const { return right_node; } + Node_handle parent() const { return parent_node; } + Node_handle left() const { return left_node; } + Node_handle right() const { return right_node; } const Plane_3& plane() const { return splitting_plane; } const Object_list& objects() const { return object_list; } @@ -583,13 +583,13 @@ else { return !(*this == i); } private: - const Node_handle get_node() const { + Node_handle get_node() const { CGAL_assertion( node != nullptr); return node; } inline -const Node_handle get_child_by_side( const Node_handle node, Oriented_side side) { +Node_handle get_child_by_side( const Node_handle node, Oriented_side side) { CGAL_assertion( node != nullptr); CGAL_assertion( side != ON_ORIENTED_BOUNDARY); if( side == ON_NEGATIVE_SIDE) { @@ -1275,7 +1275,7 @@ Plane_3 construct_splitting_plane(Object_iterator start, Object_iterator end, return Plane_3(); } -const Node_handle locate_cell_containing( const Point_3& p, const Node_handle node) const { +Node_handle locate_cell_containing( const Point_3& p, const Node_handle node) const { CGAL_precondition( node != nullptr); if( node->is_leaf()) return node; From 9473da27f8b8d8be7fb10cca627c9847d7eb38da Mon Sep 17 00:00:00 2001 From: Andreas Fabri Date: Thu, 22 Apr 2021 09:23:48 +0100 Subject: [PATCH 069/171] Address warning: unused parameter 'k' [-Wunused-parameter] --- .../CGAL/Intersections_3/internal/intersection_3_1_impl.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Intersections_3/include/CGAL/Intersections_3/internal/intersection_3_1_impl.h b/Intersections_3/include/CGAL/Intersections_3/internal/intersection_3_1_impl.h index 7371b641b37..59be9bf3d31 100644 --- a/Intersections_3/include/CGAL/Intersections_3/internal/intersection_3_1_impl.h +++ b/Intersections_3/include/CGAL/Intersections_3/internal/intersection_3_1_impl.h @@ -968,7 +968,7 @@ template bool do_intersect(const typename K::Plane_3 &plane, const typename K::Ray_3 &ray, - const K& k) + const K& ) { typename K::Oriented_side_3 oriented_side_3; From 7a6634bd9ee5dd150001458555223758402c1c1a Mon Sep 17 00:00:00 2001 From: Andreas Fabri Date: Thu, 22 Apr 2021 13:04:37 +0100 Subject: [PATCH 070/171] explicitely create an int --- Surface_mesh_topology/include/CGAL/Path_on_surface.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Surface_mesh_topology/include/CGAL/Path_on_surface.h b/Surface_mesh_topology/include/CGAL/Path_on_surface.h index 7a56a82156a..71b4156eaec 100644 --- a/Surface_mesh_topology/include/CGAL/Path_on_surface.h +++ b/Surface_mesh_topology/include/CGAL/Path_on_surface.h @@ -1129,7 +1129,7 @@ public: CGAL_assertion(pp1.length() % primitiveSize == 0); pp1.cut(primitiveSize); CGAL_assertion(pp1.is_closed()); - return std::make_pair(pp1, originalLength / primitiveSize); + return std::make_pair(pp1, int(originalLength / primitiveSize)); } /// @return the turn between dart number i and dart number i+1. From 7485e3887b51df76108171373d0515b82dcfa586 Mon Sep 17 00:00:00 2001 From: Andreas Fabri Date: Thu, 22 Apr 2021 13:43:07 +0100 Subject: [PATCH 071/171] Improve documentation and the example that performs affine transformations --- Kernel_23/doc/Kernel_23/CGAL/Aff_transformation_3.h | 4 ++-- Nef_3/doc/Nef_3/Nef_3.txt | 1 - Nef_3/examples/Nef_3/transformation.cpp | 11 ++--------- 3 files changed, 4 insertions(+), 12 deletions(-) diff --git a/Kernel_23/doc/Kernel_23/CGAL/Aff_transformation_3.h b/Kernel_23/doc/Kernel_23/CGAL/Aff_transformation_3.h index 6181b0bc6d5..1b5781e7f89 100644 --- a/Kernel_23/doc/Kernel_23/CGAL/Aff_transformation_3.h +++ b/Kernel_23/doc/Kernel_23/CGAL/Aff_transformation_3.h @@ -200,12 +200,12 @@ returns `true`, if the transformation is reflecting. bool is_odd() const; /*! -returns `true`, if the transformation type is the specialized scaling. +returns `true`, if the object was constructed using the tag `CGAL::Scaling`, or as a composition of such objects. */ bool is_scaling() const; /*! -returns `true`, if the transformation type is the specialized translation. +returns `true`, if the object was constructed using the tag `CGAL::Translation`, or as a composition of such objects. */ bool is_translation() const; diff --git a/Nef_3/doc/Nef_3/Nef_3.txt b/Nef_3/doc/Nef_3/Nef_3.txt index b4fee9d321a..636630cd569 100644 --- a/Nef_3/doc/Nef_3/Nef_3.txt +++ b/Nef_3/doc/Nef_3/Nef_3.txt @@ -579,4 +579,3 @@ the `Object_handle` can represent a `Vertex_const_handle`, a */ } /* namespace CGAL */ - diff --git a/Nef_3/examples/Nef_3/transformation.cpp b/Nef_3/examples/Nef_3/transformation.cpp index 74d1108888f..0e79e62e832 100644 --- a/Nef_3/examples/Nef_3/transformation.cpp +++ b/Nef_3/examples/Nef_3/transformation.cpp @@ -4,11 +4,7 @@ #include -//instead of -//typedef CGAL::Extended_homogeneous Kernel; -// workaround for VC++ -struct Kernel : public CGAL::Extended_homogeneous {}; - +typedef CGAL::Extended_homogeneous Kernel; typedef CGAL::Nef_polyhedron_3 Nef_polyhedron; typedef Nef_polyhedron::Plane_3 Plane_3; typedef Nef_polyhedron::Vector_3 Vector_3; @@ -22,10 +18,7 @@ int main() { 0,0,-1, 0,1,0, 1); - Aff_transformation_3 scale(3,0,0, - 0,3,0, - 0,0,3, - 2); + Aff_transformation_3 scale(CGAL::SCALING, 3, 2); N.transform(transl); CGAL_assertion(N == Nef_polyhedron(Plane_3(0,1,0,-7))); From a8d15183ce64acdf67825af17729dac291a7dee6 Mon Sep 17 00:00:00 2001 From: Andreas Fabri Date: Thu, 22 Apr 2021 13:57:26 +0100 Subject: [PATCH 072/171] So glad to have a native speaker on board --- Kernel_23/doc/Kernel_23/CGAL/Aff_transformation_3.h | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Kernel_23/doc/Kernel_23/CGAL/Aff_transformation_3.h b/Kernel_23/doc/Kernel_23/CGAL/Aff_transformation_3.h index 1b5781e7f89..d7cd385eaa0 100644 --- a/Kernel_23/doc/Kernel_23/CGAL/Aff_transformation_3.h +++ b/Kernel_23/doc/Kernel_23/CGAL/Aff_transformation_3.h @@ -200,12 +200,12 @@ returns `true`, if the transformation is reflecting. bool is_odd() const; /*! -returns `true`, if the object was constructed using the tag `CGAL::Scaling`, or as a composition of such objects. +returns `true`, if the object was constructed using the tag `CGAL::Scaling`, or is the result of the composition of only scaling transformations. */ bool is_scaling() const; /*! -returns `true`, if the object was constructed using the tag `CGAL::Translation`, or as a composition of such objects. +returns `true`, if the object was constructed using the tag `CGAL::Translation`, or is the result of the composition of only translation transformations. */ bool is_translation() const; From e73b8de89fd469c811ba156cbbd106624537f445 Mon Sep 17 00:00:00 2001 From: Andreas Fabri Date: Thu, 22 Apr 2021 21:17:24 +0100 Subject: [PATCH 073/171] Add the 2D stuff. In homogeneous add Scaling_repH3 --- .../CGAL/Cartesian/Aff_transformation_2.h | 5 + .../CGAL/Cartesian/Aff_transformation_rep_2.h | 5 + .../CGAL/Cartesian/Aff_transformation_rep_3.h | 15 +- .../include/CGAL/Cartesian/Reflection_rep_2.h | 5 + .../include/CGAL/Cartesian/Rotation_rep_2.h | 6 + .../include/CGAL/Cartesian/Scaling_rep_2.h | 5 + .../include/CGAL/Cartesian/Scaling_rep_3.h | 5 - .../CGAL/Cartesian/Translation_rep_2.h | 7 +- .../CGAL/Cartesian/Translation_rep_3.h | 4 - .../CGAL/Homogeneous/Aff_transformationH2.h | 51 +++++++ .../CGAL/Homogeneous/Aff_transformationH3.h | 130 ++++++++++++++++-- .../doc/Kernel_23/CGAL/Aff_transformation_2.h | 20 +++ .../doc/Kernel_23/CGAL/Aff_transformation_3.h | 4 +- .../CGAL/_test_cls_aff_transformation_2.h | 32 ++++- .../CGAL/_test_cls_aff_transformation_3.h | 10 ++ 15 files changed, 268 insertions(+), 36 deletions(-) diff --git a/Cartesian_kernel/include/CGAL/Cartesian/Aff_transformation_2.h b/Cartesian_kernel/include/CGAL/Cartesian/Aff_transformation_2.h index bb646e29e66..16395549ab3 100644 --- a/Cartesian_kernel/include/CGAL/Cartesian/Aff_transformation_2.h +++ b/Cartesian_kernel/include/CGAL/Cartesian/Aff_transformation_2.h @@ -165,6 +165,11 @@ public: bool is_even() const { return this->Ptr()->is_even(); } bool is_odd() const { return ! (this->Ptr()->is_even()); } + bool is_translation() const { return this->Ptr()->is_translation(); } + bool is_scaling() const { return this->Ptr()->is_scaling(); } + bool is_reflection() const { return this->Ptr()->is_reflection(); } + bool is_rotation() const { return this->Ptr()->is_rotation(); } + FT cartesian(int i, int j) const { return this->Ptr()->cartesian(i,j); } FT homogeneous(int i, int j) const { return cartesian(i,j); } FT m(int i, int j) const { return cartesian(i,j); } diff --git a/Cartesian_kernel/include/CGAL/Cartesian/Aff_transformation_rep_2.h b/Cartesian_kernel/include/CGAL/Cartesian/Aff_transformation_rep_2.h index 4737742e568..afce7dc25ed 100644 --- a/Cartesian_kernel/include/CGAL/Cartesian/Aff_transformation_rep_2.h +++ b/Cartesian_kernel/include/CGAL/Cartesian/Aff_transformation_rep_2.h @@ -60,6 +60,11 @@ public: virtual Aff_transformation_2 inverse() const = 0; virtual bool is_even() const = 0; + virtual bool is_translation() const { return false; } + virtual bool is_scaling() const { return false; } + virtual bool is_rotation() const { return false; } + virtual bool is_reflection() const { return false; } + virtual FT cartesian(int i, int j) const = 0; virtual std::ostream &print(std::ostream &os) const = 0; }; diff --git a/Cartesian_kernel/include/CGAL/Cartesian/Aff_transformation_rep_3.h b/Cartesian_kernel/include/CGAL/Cartesian/Aff_transformation_rep_3.h index 813a452f026..2e441e194d3 100644 --- a/Cartesian_kernel/include/CGAL/Cartesian/Aff_transformation_rep_3.h +++ b/Cartesian_kernel/include/CGAL/Cartesian/Aff_transformation_rep_3.h @@ -56,8 +56,9 @@ public: virtual Aff_transformation_3 inverse() const = 0; virtual Aff_transformation_3 transpose() const = 0; virtual bool is_even() const = 0; - virtual bool is_translation() const = 0; - virtual bool is_scaling() const = 0; + + virtual bool is_translation() const { return false; } + virtual bool is_scaling() const { return false; } virtual FT cartesian(int i, int j) const = 0; virtual std::ostream &print(std::ostream &os) const = 0; }; @@ -161,16 +162,6 @@ public: } - virtual bool is_translation() const - { - return false; - } - - virtual bool is_scaling() const - { - return false; - } - virtual FT cartesian(int i, int j) const { switch (i) diff --git a/Cartesian_kernel/include/CGAL/Cartesian/Reflection_rep_2.h b/Cartesian_kernel/include/CGAL/Cartesian/Reflection_rep_2.h index b534706373e..7a89746ffba 100644 --- a/Cartesian_kernel/include/CGAL/Cartesian/Reflection_rep_2.h +++ b/Cartesian_kernel/include/CGAL/Cartesian/Reflection_rep_2.h @@ -147,6 +147,11 @@ typedef typename CGAL::Line_2 Line_2; return true; } + virtual bool is_reflection() const + { + return true; + } + FT cartesian(int i, int j) const { switch (i) diff --git a/Cartesian_kernel/include/CGAL/Cartesian/Rotation_rep_2.h b/Cartesian_kernel/include/CGAL/Cartesian/Rotation_rep_2.h index 092ff614195..2ea097c733b 100644 --- a/Cartesian_kernel/include/CGAL/Cartesian/Rotation_rep_2.h +++ b/Cartesian_kernel/include/CGAL/Cartesian/Rotation_rep_2.h @@ -139,11 +139,17 @@ public: -sinus_*t.t21 + cosinus_*t.t22, t.t23); } + bool is_even() const { return true; } + bool is_rotation() const + { + return true; + } + FT cartesian(int i, int j) const { switch (i) diff --git a/Cartesian_kernel/include/CGAL/Cartesian/Scaling_rep_2.h b/Cartesian_kernel/include/CGAL/Cartesian/Scaling_rep_2.h index dc0b74f5905..166fa4e1a53 100644 --- a/Cartesian_kernel/include/CGAL/Cartesian/Scaling_rep_2.h +++ b/Cartesian_kernel/include/CGAL/Cartesian/Scaling_rep_2.h @@ -120,6 +120,11 @@ public: return true; } + bool is_scaling() const + { + return true; + } + FT cartesian(int i, int j) const { if (i!=j) return FT(0); diff --git a/Cartesian_kernel/include/CGAL/Cartesian/Scaling_rep_3.h b/Cartesian_kernel/include/CGAL/Cartesian/Scaling_rep_3.h index 402f1fedb25..a6b26320a8e 100644 --- a/Cartesian_kernel/include/CGAL/Cartesian/Scaling_rep_3.h +++ b/Cartesian_kernel/include/CGAL/Cartesian/Scaling_rep_3.h @@ -128,11 +128,6 @@ public: return true; } - virtual bool is_translation() const - { - return false; - } - virtual bool is_scaling() const { return true; diff --git a/Cartesian_kernel/include/CGAL/Cartesian/Translation_rep_2.h b/Cartesian_kernel/include/CGAL/Cartesian/Translation_rep_2.h index 55e3b14fbc1..84b88ba46c5 100644 --- a/Cartesian_kernel/include/CGAL/Cartesian/Translation_rep_2.h +++ b/Cartesian_kernel/include/CGAL/Cartesian/Translation_rep_2.h @@ -121,7 +121,12 @@ public: return Aff_transformation_2(TRANSLATION, - translationvector_); } - bool is_even() const + bool is_even() const + { + return true; + } + + virtual bool is_translation() const { return true; } diff --git a/Cartesian_kernel/include/CGAL/Cartesian/Translation_rep_3.h b/Cartesian_kernel/include/CGAL/Cartesian/Translation_rep_3.h index 488dc17f4e4..28a1d4ef811 100644 --- a/Cartesian_kernel/include/CGAL/Cartesian/Translation_rep_3.h +++ b/Cartesian_kernel/include/CGAL/Cartesian/Translation_rep_3.h @@ -140,10 +140,6 @@ public: return true; } - virtual bool is_scaling() const - { - return false; - } virtual FT cartesian(int i, int j) const { if (j==i) return FT(1); diff --git a/Homogeneous_kernel/include/CGAL/Homogeneous/Aff_transformationH2.h b/Homogeneous_kernel/include/CGAL/Homogeneous/Aff_transformationH2.h index 3a42574fa9d..a97ca83abf5 100644 --- a/Homogeneous_kernel/include/CGAL/Homogeneous/Aff_transformationH2.h +++ b/Homogeneous_kernel/include/CGAL/Homogeneous/Aff_transformationH2.h @@ -58,6 +58,11 @@ class Aff_transformation_rep_baseH2 : public Ref_counted_virtual general_form() const = 0; virtual bool is_even() const = 0; + virtual bool is_translation() const { return false; } + virtual bool is_scaling() const { return false; } + virtual bool is_reflection() const { return false; } + virtual bool is_rotation() const { return false; } + virtual RT homogeneous(int i, int j) const = 0; virtual FT cartesian(int i, int j) const = 0; }; @@ -247,6 +252,10 @@ class Translation_repH2 : public Aff_transformation_rep_baseH2 is_even() const { return true; } + virtual bool + is_translation() const + { return true; } + virtual Aff_transformation_repH2 general_form() const { @@ -321,6 +330,11 @@ class Rotation_repH2 : public Aff_transformation_rep_baseH2 { return true; } + + virtual bool + is_rotation() const + { return true; } + virtual Aff_transformation_repH2 general_form() const { @@ -392,6 +406,10 @@ class Scaling_repH2 : public Aff_transformation_rep_baseH2 is_even() const { return true; } + virtual bool + is_scaling() const + { return true; } + virtual Aff_transformation_repH2 general_form() const { @@ -456,6 +474,10 @@ class Reflection_repH2 : public Aff_transformation_rep_baseH2 is_even() const { return false; } + virtual bool + is_reflection() const + { return true; } + virtual Aff_transformation_repH2 general_form() const { @@ -576,6 +598,11 @@ public: bool is_even() const; bool is_odd() const; + bool is_translation() const; + bool is_scaling() const; + bool is_rotation() const; + bool is_reflection() const; + // Access functions for matrix form FT cartesian(int i, int j) const; RT homogeneous(int i, int j) const; @@ -739,6 +766,30 @@ Aff_transformationH2:: is_odd() const { return ! is_even(); } +template < class R > +bool +Aff_transformationH2:: +is_translation() const +{ return this->Ptr()->is_translation(); } + +template < class R > +bool +Aff_transformationH2:: +is_scaling() const +{ return this->Ptr()->is_scaling(); } + +template < class R > +bool +Aff_transformationH2:: +is_rotation() const +{ return this->Ptr()->is_rotation(); } + +template < class R > +bool +Aff_transformationH2:: +is_reflection() const +{ return this->Ptr()->is_reflection(); } + template < class R > inline typename Aff_transformationH2::FT diff --git a/Homogeneous_kernel/include/CGAL/Homogeneous/Aff_transformationH3.h b/Homogeneous_kernel/include/CGAL/Homogeneous/Aff_transformationH3.h index d28b56e0e5e..71209b65230 100644 --- a/Homogeneous_kernel/include/CGAL/Homogeneous/Aff_transformationH3.h +++ b/Homogeneous_kernel/include/CGAL/Homogeneous/Aff_transformationH3.h @@ -82,17 +82,17 @@ public: virtual bool is_even() const = 0; - virtual RT - homogeneous(int i, int j) const = 0; - - virtual FT - cartesian(int i, int j) const = 0; - virtual bool is_translation() const { return false; } virtual bool is_scaling() const { return false; } + + virtual RT + homogeneous(int i, int j) const = 0; + + virtual FT + cartesian(int i, int j) const = 0; }; template < class R_ > @@ -233,6 +233,118 @@ public: { return (i==j) ? FT(1) : FT(0); } }; +template < class R > +class Scaling_repH3 : public Aff_transformation_rep_baseH3 +{ + public: + typedef typename R::RT RT; + typedef typename R::FT FT; + typedef typename R::Point_3 Point_3; + typedef typename R::Vector_3 Vector_3; + typedef typename R::Direction_3 Direction_3; + + Scaling_repH3() + {} + + Scaling_repH3(const RT& scaling_numerator, + const RT& scaling_denominator) : + _sf_num(scaling_numerator), _sf_den(scaling_denominator) + { + if ( scaling_denominator < RT(0) ) + { + _sf_num = - _sf_num; + _sf_den = - _sf_den; + }; + } + + virtual ~Scaling_repH3() + {} + + virtual Point_3 + transform(const Point_3 & p) const + { + return Point_3( p.hx() * _sf_num, + p.hy() * _sf_num, + p.hz() * _sf_num, + p.hw() * _sf_den ); + } + virtual Vector_3 + transform(const Vector_3 & v) const + { + return Vector_3( v.hx() * _sf_num, + v.hy() * _sf_num, + v.hz() * _sf_num, + v.hw() * _sf_den ); + } + + virtual Direction_3 + transform(const Direction_3 & d) const + { return d; } + + virtual Plane_3 + transform(const Plane_3 & p) const + { + return Plane_3(p.a()*_sf_den, p.b()*_sf_den, p.c()*_sf_den, p.d()*_sf_num); + } + + virtual Aff_transformation_3 + inverse() const + { return Aff_transformation_3(SCALING, _sf_den, _sf_num); } + + virtual Aff_transformation_3 + transpose() const + { return Aff_transformation_3(SCALING, _sf_num, _sf_den); } + + virtual bool + is_even() const + { return true; } + + virtual bool + is_scaling() const + { return true; } + + virtual Aff_transformation_repH3 + general_form() const + { + return + Aff_transformation_repH3(_sf_num, RT(0) , RT(0) ,RT(0) , + RT(0) , _sf_num, RT(0) ,RT(0) , + RT(0) , RT(0) , _sf_num,RT(0) , + _sf_den ); + } + + virtual RT homogeneous(int i, int j) const; + virtual FT cartesian(int i, int j) const; + + + private: + RT _sf_num; + RT _sf_den; +}; + + +template < class R > +typename Scaling_repH3::RT +Scaling_repH3:: +homogeneous(int i, int j) const +{ + if(i!=j) return RT(0); + if (i==3) return _sf_den; + return _sf_num; +} + +template +typename Scaling_repH3::FT +Scaling_repH3:: +cartesian(int i, int j) const +{ + if(i!=j) return FT(0); + if (i==3) return FT(1); + return FT(_sf_num) / FT(_sf_den); +} + + + template < class R_ > class Translation_repH3 : public Aff_transformation_rep_baseH3 { @@ -828,11 +940,7 @@ CGAL_KERNEL_INLINE Aff_transformationH3:: Aff_transformationH3(const Scaling&, const RT& num, const RT& den) { - const RT RT0(0); - initialize_with(Aff_transformation_repH3(num, RT0, RT0, RT0, - RT0, num, RT0, RT0, - RT0, RT0, num, RT0, - den )); + initialize_with(Scaling_repH3(num, den )); } template < class R > diff --git a/Kernel_23/doc/Kernel_23/CGAL/Aff_transformation_2.h b/Kernel_23/doc/Kernel_23/CGAL/Aff_transformation_2.h index fef888b81d2..c63f673aa32 100644 --- a/Kernel_23/doc/Kernel_23/CGAL/Aff_transformation_2.h +++ b/Kernel_23/doc/Kernel_23/CGAL/Aff_transformation_2.h @@ -273,6 +273,26 @@ returns `true`, if the transformation is reflecting. */ bool is_odd() const; +/*! +returns `true`, if the object was constructed using the tag `CGAL::Scaling`, or is the result of the composition of only such scaling transformations objects. +*/ +bool is_scaling() const; + +/*! +returns `true`, if the object was constructed using the tag `CGAL::Translation`, or is the result of the composition of only such translation transformations objects. +*/ +bool is_translation() const; + +/*! +returns `true`, if the object was constructed using the tag `CGAL::Rotation`, or is the result of the composition of only such rotation transformations objects. +*/ +bool is_rotation() const; + +/*! +returns `true`, if the object was constructed using the tag `CGAL::Reflection`, or is the result of the composition of only such reflection transformations objects. +*/ +bool is_reflection() const; + /// @} /// \name Matrix Entry Access diff --git a/Kernel_23/doc/Kernel_23/CGAL/Aff_transformation_3.h b/Kernel_23/doc/Kernel_23/CGAL/Aff_transformation_3.h index d7cd385eaa0..57416f82201 100644 --- a/Kernel_23/doc/Kernel_23/CGAL/Aff_transformation_3.h +++ b/Kernel_23/doc/Kernel_23/CGAL/Aff_transformation_3.h @@ -200,12 +200,12 @@ returns `true`, if the transformation is reflecting. bool is_odd() const; /*! -returns `true`, if the object was constructed using the tag `CGAL::Scaling`, or is the result of the composition of only scaling transformations. +returns `true`, if the object was constructed using the tag `CGAL::Scaling`, or is the result of the composition of only such scaling transformations objects. */ bool is_scaling() const; /*! -returns `true`, if the object was constructed using the tag `CGAL::Translation`, or is the result of the composition of only translation transformations. +returns `true`, if the object was constructed using the tag `CGAL::Translation`, or is the result of the composition of only such translation transformations objects. */ bool is_translation() const; diff --git a/Kernel_23/test/Kernel_23/include/CGAL/_test_cls_aff_transformation_2.h b/Kernel_23/test/Kernel_23/include/CGAL/_test_cls_aff_transformation_2.h index 31f104419fb..ccdde6d298c 100644 --- a/Kernel_23/test/Kernel_23/include/CGAL/_test_cls_aff_transformation_2.h +++ b/Kernel_23/test/Kernel_23/include/CGAL/_test_cls_aff_transformation_2.h @@ -135,7 +135,9 @@ _test_cls_aff_transformation_2(const R& ) CGAL::Aff_transformation_2 rot3( CGAL::ROTATION, RT(3),RT(4),RT(5)); - + CGAL::Aff_transformation_2 refle(CGAL::REFLECTION, CGAL::Line_2( + CGAL::Point_2(1,3), + CGAL::Point_2(2,1))); CGAL::Aff_transformation_2 a[14]; @@ -295,6 +297,34 @@ _test_cls_aff_transformation_2(const R& ) assert( rot3.is_even() ); assert( xrefl.is_odd() ); + // translation + assert( translate.is_translation() ); + assert( ! scale11.is_translation() ); + assert( ! gtrans.is_translation() ); + assert( ! rot90.is_translation() ); + assert( ! refle.is_translation() ); + + // scaling + assert( scale11.is_scaling() ); + assert( ! translate.is_scaling() ); + assert( ! gscale.is_scaling() ); + assert( ! rot90.is_scaling() ); + assert( ! refle.is_scaling() ); + + // reflection + assert( ! scale11.is_reflection() ); + assert( ! translate.is_reflection() ); + assert( ! gscale.is_reflection() ); + assert( ! rot90.is_reflection() ); + assert( refle.is_reflection() ); + + // rotation + assert( ! scale11.is_rotation() ); + assert( ! translate.is_rotation() ); + assert( ! gscale.is_rotation() ); + assert( rot90.is_rotation() ); + assert( !refle.is_rotation() ); + // rotation assert( d0.transform( rot90 ) == d1 ); assert( d1.transform( rot90.inverse() ) == d0 ); diff --git a/Kernel_23/test/Kernel_23/include/CGAL/_test_cls_aff_transformation_3.h b/Kernel_23/test/Kernel_23/include/CGAL/_test_cls_aff_transformation_3.h index e4d53323454..3c0db87e36f 100644 --- a/Kernel_23/test/Kernel_23/include/CGAL/_test_cls_aff_transformation_3.h +++ b/Kernel_23/test/Kernel_23/include/CGAL/_test_cls_aff_transformation_3.h @@ -151,6 +151,16 @@ _test_cls_aff_transformation_3(const R& ) assert( ident.is_even() ); assert( xrefl.is_odd() ); + // translation + assert( translate.is_translation() ); + assert( ! scale11.is_translation() ); + assert( ! gtrans.is_translation() ); + + // scaling + assert( scale11.is_scaling() ); + assert( ! translate.is_scaling() ); + assert( ! gscale.is_scaling() ); + CGAL::Aff_transformation_3 a[11]; std::cout << '.'; From 4dbf38aad3b29e0909d2fdd10afa98d76bbf317d Mon Sep 17 00:00:00 2001 From: Andreas Fabri Date: Thu, 22 Apr 2021 21:31:28 +0100 Subject: [PATCH 074/171] Add typedefs --- .../include/CGAL/Homogeneous/Aff_transformationH3.h | 2 ++ 1 file changed, 2 insertions(+) diff --git a/Homogeneous_kernel/include/CGAL/Homogeneous/Aff_transformationH3.h b/Homogeneous_kernel/include/CGAL/Homogeneous/Aff_transformationH3.h index 71209b65230..52353a37ec3 100644 --- a/Homogeneous_kernel/include/CGAL/Homogeneous/Aff_transformationH3.h +++ b/Homogeneous_kernel/include/CGAL/Homogeneous/Aff_transformationH3.h @@ -242,6 +242,8 @@ class Scaling_repH3 : public Aff_transformation_rep_baseH3 typedef typename R::Point_3 Point_3; typedef typename R::Vector_3 Vector_3; typedef typename R::Direction_3 Direction_3; + typedef typename R::Plane_3 Plane_3; + typedef typename R::Aff_transformation_3 Aff_transformation_3; Scaling_repH3() {} From 0eea836f1e004789d6e0f11f1b3b0ac3a4b01764 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?S=C3=A9bastien=20Loriot?= Date: Fri, 23 Apr 2021 08:46:28 +0200 Subject: [PATCH 075/171] handle empty point range --- .../internal/Hole_filling/Triangulate_hole_polyline.h | 2 ++ .../include/CGAL/Polygon_mesh_processing/triangulate_hole.h | 2 ++ 2 files changed, 4 insertions(+) diff --git a/Polygon_mesh_processing/include/CGAL/Polygon_mesh_processing/internal/Hole_filling/Triangulate_hole_polyline.h b/Polygon_mesh_processing/include/CGAL/Polygon_mesh_processing/internal/Hole_filling/Triangulate_hole_polyline.h index 10eae8a9956..69dfe9ee40b 100644 --- a/Polygon_mesh_processing/include/CGAL/Polygon_mesh_processing/internal/Hole_filling/Triangulate_hole_polyline.h +++ b/Polygon_mesh_processing/include/CGAL/Polygon_mesh_processing/internal/Hole_filling/Triangulate_hole_polyline.h @@ -1226,6 +1226,8 @@ triangulate_hole_polyline(const PointRange1& points, bool use_delaunay_triangulation, const Kernel&) { + CGAL_assertion(!points.empty()); + typedef Kernel K; typedef typename K::Point_3 Point_3; #ifndef CGAL_HOLE_FILLING_DO_NOT_USE_DT3 diff --git a/Polygon_mesh_processing/include/CGAL/Polygon_mesh_processing/triangulate_hole.h b/Polygon_mesh_processing/include/CGAL/Polygon_mesh_processing/triangulate_hole.h index 4e57a2f9626..76bbabd88c6 100644 --- a/Polygon_mesh_processing/include/CGAL/Polygon_mesh_processing/triangulate_hole.h +++ b/Polygon_mesh_processing/include/CGAL/Polygon_mesh_processing/triangulate_hole.h @@ -423,6 +423,8 @@ namespace Polygon_mesh_processing { OutputIterator out, const NamedParameters& np) { + if (points.empty()) return out; + using parameters::choose_parameter; using parameters::get_parameter; From b62fffc9311ebca6e41a2ac0b4941cad56965b3d Mon Sep 17 00:00:00 2001 From: Andreas Fabri Date: Fri, 23 Apr 2021 08:08:06 +0100 Subject: [PATCH 076/171] Add compose operations for scaling and translation --- .../CGAL/Homogeneous/Aff_transformationH3.h | 27 ++++++++++++++++--- 1 file changed, 24 insertions(+), 3 deletions(-) diff --git a/Homogeneous_kernel/include/CGAL/Homogeneous/Aff_transformationH3.h b/Homogeneous_kernel/include/CGAL/Homogeneous/Aff_transformationH3.h index 52353a37ec3..ebed7d51499 100644 --- a/Homogeneous_kernel/include/CGAL/Homogeneous/Aff_transformationH3.h +++ b/Homogeneous_kernel/include/CGAL/Homogeneous/Aff_transformationH3.h @@ -93,6 +93,8 @@ public: virtual FT cartesian(int i, int j) const = 0; + + virtual Aff_transformation_3 compose(const Aff_transformation_rep_baseH3* aff) const { return Aff_transformation_3(); } }; template < class R_ > @@ -315,6 +317,12 @@ class Scaling_repH3 : public Aff_transformation_rep_baseH3 _sf_den ); } + Aff_transformation_3 compose(const Aff_transformation_rep_baseH3* aff) const + { + const Scaling_repH3* sr = dynamic_cast(aff); + return Aff_transformation_3(SCALING, _sf_num * sr->_sf_num, _sf_den * sr->_sf_den); + } + virtual RT homogeneous(int i, int j) const; virtual FT cartesian(int i, int j) const; @@ -399,6 +407,12 @@ public: virtual FT cartesian(int i, int j) const ; + Aff_transformation_3 compose(const Aff_transformation_rep_baseH3* aff) const + { + const Translation_repH3* sr = dynamic_cast(aff); + return Aff_transformation_3(TRANSLATION, tv + sr->tv); + } + friend class Aff_transformationH3; private: @@ -1047,9 +1061,16 @@ Aff_transformationH3 operator*(const Aff_transformationH3& left_argument, const Aff_transformationH3& right_argument ) { - return _general_transformation_composition( - left_argument.Ptr() ->general_form(), - right_argument.Ptr()->general_form() ); + if(left_argument.is_scaling() && right_argument.is_scaling()){ + return left_argument.Ptr()->compose(right_argument.Ptr()); + } + + if(left_argument.is_translation() && right_argument.is_translation()){ + return left_argument.Ptr()->compose(right_argument.Ptr()); + } + + return _general_transformation_composition(left_argument.Ptr() ->general_form(), + right_argument.Ptr()->general_form() ); } template < class R > From 607c3172b4e6f4c1decd2ae4bb230452b5e62d91 Mon Sep 17 00:00:00 2001 From: Andreas Fabri Date: Fri, 23 Apr 2021 08:19:03 +0100 Subject: [PATCH 077/171] Add typedefs (not needed for VC) --- .../include/CGAL/Homogeneous/Aff_transformationH3.h | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/Homogeneous_kernel/include/CGAL/Homogeneous/Aff_transformationH3.h b/Homogeneous_kernel/include/CGAL/Homogeneous/Aff_transformationH3.h index ebed7d51499..331d51df109 100644 --- a/Homogeneous_kernel/include/CGAL/Homogeneous/Aff_transformationH3.h +++ b/Homogeneous_kernel/include/CGAL/Homogeneous/Aff_transformationH3.h @@ -246,6 +246,8 @@ class Scaling_repH3 : public Aff_transformation_rep_baseH3 typedef typename R::Direction_3 Direction_3; typedef typename R::Plane_3 Plane_3; typedef typename R::Aff_transformation_3 Aff_transformation_3; + typedef Aff_transformation_rep_baseH3 Base; + typedef Scaling_repH3 Self; Scaling_repH3() {} @@ -317,9 +319,9 @@ class Scaling_repH3 : public Aff_transformation_rep_baseH3 _sf_den ); } - Aff_transformation_3 compose(const Aff_transformation_rep_baseH3* aff) const + Aff_transformation_3 compose(const Base* aff) const { - const Scaling_repH3* sr = dynamic_cast(aff); + const Self* sr = dynamic_cast(aff); return Aff_transformation_3(SCALING, _sf_num * sr->_sf_num, _sf_den * sr->_sf_den); } @@ -365,6 +367,8 @@ class Translation_repH3 : public Aff_transformation_rep_baseH3 typedef typename R_::Direction_3 Direction_3; typedef typename R_::Plane_3 Plane_3; typedef typename R_::Aff_transformation_3 Aff_transformation_3; + typedef Aff_transformation_rep_baseH3 Base; + typedef Translation_repH3 Self; public: typedef R_ R; @@ -407,9 +411,9 @@ public: virtual FT cartesian(int i, int j) const ; - Aff_transformation_3 compose(const Aff_transformation_rep_baseH3* aff) const + Aff_transformation_3 compose(const Base* aff) const { - const Translation_repH3* sr = dynamic_cast(aff); + const Self* sr = dynamic_cast(aff); return Aff_transformation_3(TRANSLATION, tv + sr->tv); } From b79b43c793a49ca74a054b7606ec030f7bd70257 Mon Sep 17 00:00:00 2001 From: Andreas Fabri Date: Fri, 23 Apr 2021 08:38:09 +0100 Subject: [PATCH 078/171] Two more const --- Nef_3/include/CGAL/Nef_3/K3_tree.h | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Nef_3/include/CGAL/Nef_3/K3_tree.h b/Nef_3/include/CGAL/Nef_3/K3_tree.h index e0e0dff5afe..ae1634bfd5e 100644 --- a/Nef_3/include/CGAL/Nef_3/K3_tree.h +++ b/Nef_3/include/CGAL/Nef_3/K3_tree.h @@ -750,13 +750,13 @@ class Objects_around_box { } private: - const Node_handle get_node() const { + Node_handle get_node() const { CGAL_assertion( node != nullptr); return node; } inline - const Node_handle get_child_by_side( const Node_handle node, Oriented_side side) { + Node_handle get_child_by_side( const Node_handle node, Oriented_side side) { CGAL_assertion( node != nullptr); CGAL_assertion( side != ON_ORIENTED_BOUNDARY); if( side == ON_NEGATIVE_SIDE) { From 2849b3b785710504ee1dc4865fa45b1e3b55b126 Mon Sep 17 00:00:00 2001 From: Andreas Fabri Date: Fri, 23 Apr 2021 11:47:24 +0100 Subject: [PATCH 079/171] compare() -> CGAL::compare() so that it also works with Leda --- Algebraic_foundations/include/CGAL/number_utils.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Algebraic_foundations/include/CGAL/number_utils.h b/Algebraic_foundations/include/CGAL/number_utils.h index 3bf8e906fc0..03e2e757477 100644 --- a/Algebraic_foundations/include/CGAL/number_utils.h +++ b/Algebraic_foundations/include/CGAL/number_utils.h @@ -346,7 +346,7 @@ compare_quotients(const NT& xnum, const NT& xden, int msign = sign(xden) * sign(yden); NT leftop = NT(xnum * yden * msign); NT rightop = NT(ynum * xden * msign); - return compare(leftop, rightop); + return CGAL::compare(leftop, rightop); } else { From c7e4eaca7e8ad880afa5051092449cbaa66db711 Mon Sep 17 00:00:00 2001 From: Andreas Fabri Date: Fri, 23 Apr 2021 11:50:26 +0100 Subject: [PATCH 080/171] fix doc --- Kernel_23/doc/Kernel_23/CGAL/Aff_transformation_2.h | 8 ++++---- Kernel_23/doc/Kernel_23/CGAL/Aff_transformation_3.h | 4 ++-- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/Kernel_23/doc/Kernel_23/CGAL/Aff_transformation_2.h b/Kernel_23/doc/Kernel_23/CGAL/Aff_transformation_2.h index c63f673aa32..0300279b5ee 100644 --- a/Kernel_23/doc/Kernel_23/CGAL/Aff_transformation_2.h +++ b/Kernel_23/doc/Kernel_23/CGAL/Aff_transformation_2.h @@ -274,22 +274,22 @@ returns `true`, if the transformation is reflecting. bool is_odd() const; /*! -returns `true`, if the object was constructed using the tag `CGAL::Scaling`, or is the result of the composition of only such scaling transformations objects. +returns `true`, if the object was constructed using the tag `CGAL::Scaling`, or is the result of the composition of only such scaling transformation objects. */ bool is_scaling() const; /*! -returns `true`, if the object was constructed using the tag `CGAL::Translation`, or is the result of the composition of only such translation transformations objects. +returns `true`, if the object was constructed using the tag `CGAL::Translation`, or is the result of the composition of only such translation transformation objects. */ bool is_translation() const; /*! -returns `true`, if the object was constructed using the tag `CGAL::Rotation`, or is the result of the composition of only such rotation transformations objects. +returns `true`, if the object was constructed using the tag `CGAL::Rotation`, or is the result of the composition of only such rotation transformation objects. */ bool is_rotation() const; /*! -returns `true`, if the object was constructed using the tag `CGAL::Reflection`, or is the result of the composition of only such reflection transformations objects. +returns `true`, if the object was constructed using the tag `CGAL::Reflection`, or is the result of the composition of only such reflection transformation objects. */ bool is_reflection() const; diff --git a/Kernel_23/doc/Kernel_23/CGAL/Aff_transformation_3.h b/Kernel_23/doc/Kernel_23/CGAL/Aff_transformation_3.h index 57416f82201..cfb2c924cb8 100644 --- a/Kernel_23/doc/Kernel_23/CGAL/Aff_transformation_3.h +++ b/Kernel_23/doc/Kernel_23/CGAL/Aff_transformation_3.h @@ -200,12 +200,12 @@ returns `true`, if the transformation is reflecting. bool is_odd() const; /*! -returns `true`, if the object was constructed using the tag `CGAL::Scaling`, or is the result of the composition of only such scaling transformations objects. +returns `true`, if the object was constructed using the tag `CGAL::Scaling`, or is the result of the composition of only such scaling transformation objects. */ bool is_scaling() const; /*! -returns `true`, if the object was constructed using the tag `CGAL::Translation`, or is the result of the composition of only such translation transformations objects. +returns `true`, if the object was constructed using the tag `CGAL::Translation`, or is the result of the composition of only such translation transformation objects. */ bool is_translation() const; From e6a55d8462a533bfb4b237adf20996976e66b064 Mon Sep 17 00:00:00 2001 From: Andreas Fabri Date: Fri, 23 Apr 2021 11:55:16 +0100 Subject: [PATCH 081/171] Fix #5613 as discussed in PR #5635 --- Nef_3/include/CGAL/Nef_3/K3_tree.h | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/Nef_3/include/CGAL/Nef_3/K3_tree.h b/Nef_3/include/CGAL/Nef_3/K3_tree.h index ae1634bfd5e..9b7b32ced17 100644 --- a/Nef_3/include/CGAL/Nef_3/K3_tree.h +++ b/Nef_3/include/CGAL/Nef_3/K3_tree.h @@ -994,9 +994,10 @@ typename Object_list::difference_type n_vertices = std::distance(objects.begin() size_t leafs(int mask = 255, int lower_limit=0) { return root->leafs(mask, lower_limit);} void transform(const Aff_transformation_3& t) { - // TODO: Bounding box must be updated/transformed, too - if(root != nullptr) - root->transform(t); + if(root == nullptr){ + return; + } + root->transform(t); BBox_updater bbup; visit_k3tree(root, bbup); From 2d377746847a114f49f621b32e32b930a90874a3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?S=C3=A9bastien=20Loriot?= Date: Mon, 26 Apr 2021 11:30:25 +0200 Subject: [PATCH 082/171] add missing return statement --- Skin_surface_3/include/CGAL/make_skin_surface_mesh_3.h | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/Skin_surface_3/include/CGAL/make_skin_surface_mesh_3.h b/Skin_surface_3/include/CGAL/make_skin_surface_mesh_3.h index fe80be03d19..61fc786655e 100644 --- a/Skin_surface_3/include/CGAL/make_skin_surface_mesh_3.h +++ b/Skin_surface_3/include/CGAL/make_skin_surface_mesh_3.h @@ -33,8 +33,9 @@ void make_skin_surface_mesh_3(Polyhedron_3 &p, int nSubdivisions=0, bool grow_balls=true) { - if (shrink_factor == 1) { + if (shrink_factor >= 1) { make_union_of_balls_mesh_3(p,begin,end,nSubdivisions); + return; } typedef typename WP_iterator::value_type Weighted_point; From f13d9f3af1a6699eb3e5f0dabc06b85dfb4901ea Mon Sep 17 00:00:00 2001 From: Maxime Gimeno Date: Mon, 26 Apr 2021 15:42:27 +0200 Subject: [PATCH 083/171] WIP : error n list of logs --- Documentation/doc/scripts/process_doc.sh | 74 +++++++++++++------ .../doc/scripts/test_doxygen_versions.sh | 28 +++---- Documentation/doc/scripts/testsuite.py | 52 ++++++++----- 3 files changed, 98 insertions(+), 56 deletions(-) diff --git a/Documentation/doc/scripts/process_doc.sh b/Documentation/doc/scripts/process_doc.sh index 0b9d2e2be89..4b7bc9bd0c6 100644 --- a/Documentation/doc/scripts/process_doc.sh +++ b/Documentation/doc/scripts/process_doc.sh @@ -18,39 +18,69 @@ PUBLISH_DIR="$3" DOXYGEN_1=$($PATH_TO_1_8_4 --version) DOXYGEN_2=$($PATH_TO_1_8_13 --version) +DO_COMPARE=TRUE +PATH_TO_SCRIPTS=${PWD} ####################################### ## download and build doxygen_master ## -####################################### -echo "downloading and building master" -git clone https://github.com/doxygen/doxygen.git doxygen_master 1> /dev/null -cd doxygen_master -git pull https://github.com/lrineau/doxygen.git 1> /dev/null -MASTER_DESCRIBE=$(git describe --tags) -mkdir -p build -cd build -cmake .. 1> /dev/null -make -j$NB_CORES 1> /dev/null -cd ../.. #scripts + ####################################### +#echo "downloading and building master" +#git clone https://github.com/doxygen/doxygen.git doxygen_master 1> /dev/null +#if [ $? -ne 0 ]; then +# DO_COMPARE=FALSE +#else +# cd doxygen_master +# git pull https://github.com/lrineau/doxygen.git 1> /dev/null +#fi +#if [ "$DO_COMPARE" = "FALSE" ] || [ $? -ne 0 ]; then +# DO_COMPARE=FALSE +#else +# MASTER_DESCRIBE=$(git describe --tags) +# mkdir -p build +# cd build +# cmake .. 1> /dev/null +#fi +#if [ "$DO_COMPARE" = "FALSE" ] || [ $? -ne 0 ]; then +# DO_COMPARE=FALSE +#else +# make -j$NB_CORES 1> /dev/null +#fi +cd $PATH_TO_SCRIPTS #scripts PATH_TO_MASTER="$PWD/doxygen_master/build/bin/doxygen" echo "done." - + echo "comparing versions 1.8.4 and 1.8.13" bash -$- test_doxygen_versions.sh $PATH_TO_1_8_4 $PATH_TO_1_8_13 $PWD/doc_1_8_4 $PWD/doc_1_8_13 $PUBLISH_DIR mv diff.txt diff1.txt echo "comparing versions 1.8.4 and master" -bash -$- test_doxygen_versions.sh $PATH_TO_1_8_4 $PATH_TO_MASTER $PWD/doc_1_8_4 $PWD/doc_master $PUBLISH_DIR -mv diff.txt diff2.txt - +if [ "$DO_COMPARE" = "TRUE" ]; then + bash -$- test_doxygen_versions.sh $PATH_TO_1_8_4 $PATH_TO_MASTER $PWD/doc_1_8_4 $PWD/doc_master $PUBLISH_DIR +fi +if [ $? -ne 0 ]; then + DO_COMPARE=FALSE + mv build_doc build_master +else + mv diff.txt diff2.txt +fi #update overview CGAL_NAME=$(cat cgal_version) -python ${PWD}/testsuite.py --output-dir1 $PWD/doc_1_8_4/doc_output/ --output-dir2 $PWD/doc_1_8_13/doc_output/ --doc-log-dir1 $PWD/doc_1_8_4/doc_log/ \ - --doc-log-dir2 $PWD/doc_1_8_13/doc_log/ --doc-log-dir-master $PWD/doc_master/doc_log/ \ - --publish $PUBLISH_DIR --diff1 $PWD/diff1.txt --diff2 $PWD/diff2.txt --master-dir $PWD/doc_master/doc_output/ \ - --cgal-version "$CGAL_NAME" --do-copy-results --version-to-keep 10 --doxygen-version1 "$DOXYGEN_1" --doxygen-version2 "$DOXYGEN_2" --master-describe "$MASTER_DESCRIBE" - +if [ "$DO_COMPARE" = "TRUE" ]; then + python ${PWD}/testsuite.py --output-dir1 $PWD/doc_1_8_4/doc_output/ --output-dir2 $PWD/doc_1_8_13/doc_output/ --doc-log-dir1 $PWD/doc_1_8_4/doc_log/ \ + --doc-log-dir2 $PWD/doc_1_8_13/doc_log/ --doc-log-dir-master $PWD/doc_master/doc_log/ \ + --publish $PUBLISH_DIR --diff1 $PWD/diff1.txt --diff2 $PWD/diff2.txt --master-dir $PWD/doc_master/doc_output/ \ + --cgal-version "$CGAL_NAME" --do-copy-results --version-to-keep 10 --doxygen-version1 "$DOXYGEN_1" --doxygen-version2 "$DOXYGEN_2" --master-describe "$MASTER_DESCRIBE" +else + echo "NO MASTER" + python ${PWD}/testsuite.py --output-dir1 $PWD/doc_1_8_4/doc_output/ --output-dir2 $PWD/doc_1_8_13/doc_output/ --doc-log-dir1 $PWD/doc_1_8_4/doc_log/ \ + --doc-log-dir2 $PWD/doc_1_8_13/doc_log/ --doc-log-dir-master $PWD/doc_master/ \ + --publish $PUBLISH_DIR --diff1 $PWD/diff1.txt \ + --cgal-version "$CGAL_NAME" --do-copy-results --version-to-keep 10 --doxygen-version1 "$DOXYGEN_1" --doxygen-version2 "$DOXYGEN_2" +fi #clean-up -rm -rf ./doc_1_8_4 ./doc_1_8_13 ./doc_master ./doxygen_master -rm ./diff1.txt ./diff2.txt ./cgal_version +#rm -rf ./doc_1_8_4 ./doc_1_8_13 ./doc_master #./doxygen_master +#rm ./diff1.txt ./cgal_version +#if [ -f ./diff2.txt ]; then +# rm ./diff2.txt +#fi diff --git a/Documentation/doc/scripts/test_doxygen_versions.sh b/Documentation/doc/scripts/test_doxygen_versions.sh index e65e0546140..f8c3ec31ab9 100644 --- a/Documentation/doc/scripts/test_doxygen_versions.sh +++ b/Documentation/doc/scripts/test_doxygen_versions.sh @@ -58,8 +58,8 @@ if [ "$HAS_REF" -ne "1" ]; then echo "Building reference documentation..." mkdir -p ./build_doc cd ./build_doc - cmake -DCGAL_DOC_MATHJAX_LOCATION:STRING=../../MathJax -DCGAL_DOC_RELEASE=ON -DCGAL_GENERATE_XML=ON -DDOXYGEN_EXECUTABLE="$PATH_TO_1" ../.. 1> /dev/null - make -j$NB_CORES doc &> /dev/null + cmake -DCGAL_DOC_MATHJAX_LOCATION:STRING=../../MathJax -DCGAL_DOC_RELEASE=ON -DCGAL_GENERATE_XML=ON -DDOXYGEN_EXECUTABLE="$PATH_TO_1" ../.. 1>> ./build_logs + make -j$NB_CORES doc &>> ./build_logs echo "done." cd ../ #scripts echo "Creating text files for diff...." @@ -78,8 +78,8 @@ fi echo "Building second documentation..." mkdir -p build_doc cd ./build_doc -cmake -DCGAL_DOC_MATHJAX_LOCATION:STRING=../../MathJax -DCGAL_DOC_RELEASE=ON -DCGAL_GENERATE_XML=ON -DDOXYGEN_EXECUTABLE="$PATH_TO_2" ../.. 1> /dev/null -make -j$NB_CORES doc &> /dev/null +cmake -DCGAL_DOC_MATHJAX_LOCATION:STRING=../../MathJax -DCGAL_DOC_RELEASE=ON -DCGAL_GENERATE_XML=ON -DDOXYGEN_EXECUTABLE="$PATH_TO_2" ../.. 1>> ./build_logs +make -j$NB_CORES doc &>> ./build_logs echo "done." cd ../ #scripts DOXYGEN_1=$($PATH_TO_1 --version) @@ -94,7 +94,7 @@ echo "done." #add post-processing cd ./build_doc echo "Adding postprocessing..." -make -j$NB_CORES doc_with_postprocessing &> /dev/null +make -j$NB_CORES doc_with_postprocessing &>> ./build_logs echo "done." cd .. #scripts mv ./build_doc/* $BUILD_DIR_2 @@ -108,16 +108,16 @@ if [ "$HAS_REF" -ne "1" ]; then ####################################################################################################################### rm -rf ./doc_dir cd $BUILD_DIR_1 - cmake -DCGAL_DOC_MATHJAX_LOCATION:STRING=../../MathJax -DCGAL_DOC_RELEASE=ON -DCGAL_DOC_CREATE_LOGS="true" -DDOXYGEN_EXECUTABLE="$PATH_TO_1" ../.. 1> /dev/null + cmake -DCGAL_DOC_MATHJAX_LOCATION:STRING=../../MathJax -DCGAL_DOC_RELEASE=ON -DCGAL_DOC_CREATE_LOGS="true" -DDOXYGEN_EXECUTABLE="$PATH_TO_1" ../.. 1>> ./build_logs echo "Building reference documentation with postprocessing..." - make -j$NB_CORES doc &> /dev/null - make -j$NB_CORES doc &> /dev/null - make -j$NB_CORES doc_with_postprocessing &> /dev/null + make -j$NB_CORES doc &>> ./build_logs + make -j$NB_CORES doc &>> ./build_logs + make -j$NB_CORES doc_with_postprocessing &>> ./build_logs echo "done." if [ $IS_RELEASE = 0 ]; then cd $ROOT mkdir -p ./build && cd ./build - cmake -DWITH_CGAL_Core=false -DWITH_CGAL_ImageIO=false -DWITH_CGAL_Qt5=false .. 1> /dev/null + cmake -DWITH_CGAL_Core=false -DWITH_CGAL_ImageIO=false -DWITH_CGAL_Qt5=false .. 1>> ./build_logs CGAL_NAME="$(cat $PWD/VERSION)" cd $ROOT rm -rf ./build @@ -132,11 +132,11 @@ else rm -rf ./first_doc_ref fi cd $BUILD_DIR_2 - cmake -DCGAL_DOC_MATHJAX_LOCATION:STRING=../../MathJax -DCGAL_DOC_RELEASE=ON -DCGAL_DOC_CREATE_LOGS="true" -DDOXYGEN_EXECUTABLE="$PATH_TO_2" ../.. 1> /dev/null + cmake -DCGAL_DOC_MATHJAX_LOCATION:STRING=../../MathJax -DCGAL_DOC_RELEASE=ON -DCGAL_DOC_CREATE_LOGS="true" -DDOXYGEN_EXECUTABLE="$PATH_TO_2" ../.. 1>> ./build_logs echo "Building reference documentation with postprocessing..." - make -j$NB_CORES doc &> /dev/null - make -j$NB_CORES doc &> /dev/null - make -j$NB_CORES doc_with_postprocessing &> /dev/null + make -j$NB_CORES doc &>> ./build_logs + make -j$NB_CORES doc &>> ./build_logs + make -j$NB_CORES doc_with_postprocessing &>> ./build_logs echo "done." cd .. #scripts #get VERSION's content diff --git a/Documentation/doc/scripts/testsuite.py b/Documentation/doc/scripts/testsuite.py index 1fda305b1e0..a112cb948ae 100755 --- a/Documentation/doc/scripts/testsuite.py +++ b/Documentation/doc/scripts/testsuite.py @@ -98,7 +98,9 @@ body {color: black; background-color: #C0C0D0; font-family: sans-serif;} suffix = '' if args.master_describe: suffix=args.master_describe - link_master="\n
Documentation built with the master version of Doxygen {_suffix} (buggy), so that we see progress/regression of doxygen development as far as CGAL is concerned.\n".format(_suffix=suffix) + link_master="\n
Documentation built with the master version of Doxygen {_suffix} (buggy), so that we see progress/regression of doxygen development as far as CGAL is concerned.\n".format(_suffix=suffix) + else: + link_master="\n


/!\\ Documentation with the master version of Doxygen FAILED /!\\

\n" d = pq(page_header+link1+" "+link2+" "+link_master+page_footer) else: d = pq(page_header+page_footer) @@ -129,17 +131,22 @@ body {color: black; background-color: #C0C0D0; font-family: sans-serif;} basename=os.path.basename(log) result = [(basename, pretty_name, res)] results2.extend(result) + if args.doc_log_dir_master: + os.chdir(args.doc_log_dir_master) + if(args.diff2): + logs=sorted(glob.glob('./*.log')) - os.chdir(args.doc_log_dir_master) - logs=sorted(glob.glob('./*.log')) - - for log in logs: - res=count_errors_and_warnings(log) - err_war_sum_master=tuple(map(operator.add, err_war_sum_master, res)) - basename=os.path.basename(log) - pretty_name=basename[0:-4] - result = [(basename, pretty_name, res)] - results_master.extend(result) + for log in logs: + res=count_errors_and_warnings(log) + err_war_sum_master=tuple(map(operator.add, err_war_sum_master, res)) + basename=os.path.basename(log) + pretty_name=basename[0:-4] + result = [(basename, pretty_name, res)] + results_master.extend(result) + else: + results_master=[] + for index in range(0, len(results1)-1): + results_master.append('./build_logs') for index in range(0, len(results1)-1): status='class="package-good"' @@ -276,14 +283,17 @@ body {color: black; background-color: #C0C0D0; font-family: sans-serif;} diff1='Diff between {test_version} and {master_version}.'.format( log_path=version_string, test_version=args.doxygen_version1, master_version=args.doxygen_version2) - with open(diff_file2, 'r') as myfile: - diff2=myfile.read() - if not diff2: - diff2='none' + if args.diff2: + with open(diff_file2, 'r') as myfile: + diff2=myfile.read() + if not diff2: + diff2='none' + else: + diff2='Diff between {test_version} and {master_version}.'.format( + log_path=version_string, test_version=args.doxygen_version1, master_version=args.master_describe) else: - diff2='Diff between {test_version} and {master_version}.'.format( - log_path=version_string, test_version=args.doxygen_version1, master_version=args.master_describe) - + diff2='

Documentation with the master version of Doxygen FAILED

' + d=pq(filename=publish_dir + 'index.html',parser="html") revs=d('#revisions tr') new_row='''{revision}{date} @@ -319,10 +329,12 @@ body {color: black; background-color: #C0C0D0; font-family: sans-serif;} shutil.copytree(args.doc_log_dir1, log_target+'/logs1/') shutil.copyfile(args.doc_log_dir1+'/index.html', log_target+'/index.html') shutil.copytree(args.doc_log_dir2, log_target+'/logs2/') - shutil.copytree(args.doc_log_dir_master, log_target+'/logs_master/') + if args.doc_log_dir_master: + shutil.copytree(args.doc_log_dir_master, log_target+'/logs_master/') #copy diff shutil.copyfile(diff_file1, log_target+'/diff1.txt') - shutil.copyfile(diff_file2, log_target+'/diff2.txt') + if args.diff2: + shutil.copyfile(diff_file2, log_target+'/diff2.txt') try: #copy documentation if args.do_copy_results: From 2a4f8311d805f5b6d04b55b4ba68b29aef86ed78 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mael=20Rouxel-Labb=C3=A9?= Date: Tue, 27 Apr 2021 14:16:13 +0200 Subject: [PATCH 084/171] Fix paths of ToS2 benchmarks --- .../benchmark/{ => Triangulation_on_sphere_2}/CMakeLists.txt | 0 .../benchmark/{ => Triangulation_on_sphere_2}/bench_dtos2.cpp | 0 .../benchmark/{ => Triangulation_on_sphere_2}/generate_points.cpp | 0 3 files changed, 0 insertions(+), 0 deletions(-) rename Triangulation_on_sphere_2/benchmark/{ => Triangulation_on_sphere_2}/CMakeLists.txt (100%) rename Triangulation_on_sphere_2/benchmark/{ => Triangulation_on_sphere_2}/bench_dtos2.cpp (100%) rename Triangulation_on_sphere_2/benchmark/{ => Triangulation_on_sphere_2}/generate_points.cpp (100%) diff --git a/Triangulation_on_sphere_2/benchmark/CMakeLists.txt b/Triangulation_on_sphere_2/benchmark/Triangulation_on_sphere_2/CMakeLists.txt similarity index 100% rename from Triangulation_on_sphere_2/benchmark/CMakeLists.txt rename to Triangulation_on_sphere_2/benchmark/Triangulation_on_sphere_2/CMakeLists.txt diff --git a/Triangulation_on_sphere_2/benchmark/bench_dtos2.cpp b/Triangulation_on_sphere_2/benchmark/Triangulation_on_sphere_2/bench_dtos2.cpp similarity index 100% rename from Triangulation_on_sphere_2/benchmark/bench_dtos2.cpp rename to Triangulation_on_sphere_2/benchmark/Triangulation_on_sphere_2/bench_dtos2.cpp diff --git a/Triangulation_on_sphere_2/benchmark/generate_points.cpp b/Triangulation_on_sphere_2/benchmark/Triangulation_on_sphere_2/generate_points.cpp similarity index 100% rename from Triangulation_on_sphere_2/benchmark/generate_points.cpp rename to Triangulation_on_sphere_2/benchmark/Triangulation_on_sphere_2/generate_points.cpp From 3b666385c4973ca78fbbd6e1e6df76b82403e6f8 Mon Sep 17 00:00:00 2001 From: Maxime Gimeno Date: Tue, 27 Apr 2021 14:34:56 +0200 Subject: [PATCH 085/171] If errors prevent the doc form doxygen master to be generated, it will still upload the results and provide logs to the cmake or make errors. --- Documentation/doc/scripts/process_doc.sh | 64 +++++++++++++----------- Documentation/doc/scripts/testsuite.py | 20 ++++---- 2 files changed, 45 insertions(+), 39 deletions(-) diff --git a/Documentation/doc/scripts/process_doc.sh b/Documentation/doc/scripts/process_doc.sh index 4b7bc9bd0c6..a447df9cae9 100644 --- a/Documentation/doc/scripts/process_doc.sh +++ b/Documentation/doc/scripts/process_doc.sh @@ -24,31 +24,34 @@ PATH_TO_SCRIPTS=${PWD} ####################################### ## download and build doxygen_master ## ####################################### -#echo "downloading and building master" -#git clone https://github.com/doxygen/doxygen.git doxygen_master 1> /dev/null -#if [ $? -ne 0 ]; then -# DO_COMPARE=FALSE -#else -# cd doxygen_master -# git pull https://github.com/lrineau/doxygen.git 1> /dev/null -#fi -#if [ "$DO_COMPARE" = "FALSE" ] || [ $? -ne 0 ]; then -# DO_COMPARE=FALSE -#else -# MASTER_DESCRIBE=$(git describe --tags) -# mkdir -p build -# cd build -# cmake .. 1> /dev/null -#fi -#if [ "$DO_COMPARE" = "FALSE" ] || [ $? -ne 0 ]; then -# DO_COMPARE=FALSE -#else -# make -j$NB_CORES 1> /dev/null -#fi +echo "downloading and building master" +git clone https://github.com/doxygen/doxygen.git doxygen_master 1> /dev/null +if [ $? -ne 0 ]; then + echo " clone of doxygen failed" + DO_COMPARE=FALSE +else + cd doxygen_master + git pull https://github.com/lrineau/doxygen.git 1> /dev/null +fi +if [ $? -ne 0 ] || [ "$DO_COMPARE" = "FALSE" ]; then + echo " pull of doxygen failed" + DO_COMPARE=FALSE +else + MASTER_DESCRIBE=$(git describe --tags) + mkdir -p build + cd build + cmake .. 1> /dev/null +fi +if [ $? -ne 0 ] || [ "$DO_COMPARE" = "FALSE" ]; then + echo " cmake of doxygen failed" + DO_COMPARE=FALSE +else + make -j$NB_CORES 1> /dev/null +fi cd $PATH_TO_SCRIPTS #scripts PATH_TO_MASTER="$PWD/doxygen_master/build/bin/doxygen" echo "done." - + echo "comparing versions 1.8.4 and 1.8.13" bash -$- test_doxygen_versions.sh $PATH_TO_1_8_4 $PATH_TO_1_8_13 $PWD/doc_1_8_4 $PWD/doc_1_8_13 $PUBLISH_DIR mv diff.txt diff1.txt @@ -57,9 +60,10 @@ echo "comparing versions 1.8.4 and master" if [ "$DO_COMPARE" = "TRUE" ]; then bash -$- test_doxygen_versions.sh $PATH_TO_1_8_4 $PATH_TO_MASTER $PWD/doc_1_8_4 $PWD/doc_master $PUBLISH_DIR fi -if [ $? -ne 0 ]; then +if [ $? -ne 0 ] || [ "$DO_COMPARE" = "FALSE" ]; then DO_COMPARE=FALSE - mv build_doc build_master + echo " test_doxygen_versions with master failed" + mv build_doc/build_logs doc_master/ else mv diff.txt diff2.txt fi @@ -69,7 +73,7 @@ if [ "$DO_COMPARE" = "TRUE" ]; then python ${PWD}/testsuite.py --output-dir1 $PWD/doc_1_8_4/doc_output/ --output-dir2 $PWD/doc_1_8_13/doc_output/ --doc-log-dir1 $PWD/doc_1_8_4/doc_log/ \ --doc-log-dir2 $PWD/doc_1_8_13/doc_log/ --doc-log-dir-master $PWD/doc_master/doc_log/ \ --publish $PUBLISH_DIR --diff1 $PWD/diff1.txt --diff2 $PWD/diff2.txt --master-dir $PWD/doc_master/doc_output/ \ - --cgal-version "$CGAL_NAME" --do-copy-results --version-to-keep 10 --doxygen-version1 "$DOXYGEN_1" --doxygen-version2 "$DOXYGEN_2" --master-describe "$MASTER_DESCRIBE" + --cgal-version "$CGAL_NAME" --do-copy-results --version-to-keep 10 --doxygen-version1 "$DOXYGEN_1" --doxygen-version2 "$DOXYGEN_2" --master-describe "$MASTER_DESCRIBE" else echo "NO MASTER" python ${PWD}/testsuite.py --output-dir1 $PWD/doc_1_8_4/doc_output/ --output-dir2 $PWD/doc_1_8_13/doc_output/ --doc-log-dir1 $PWD/doc_1_8_4/doc_log/ \ @@ -78,9 +82,9 @@ else --cgal-version "$CGAL_NAME" --do-copy-results --version-to-keep 10 --doxygen-version1 "$DOXYGEN_1" --doxygen-version2 "$DOXYGEN_2" fi #clean-up -#rm -rf ./doc_1_8_4 ./doc_1_8_13 ./doc_master #./doxygen_master -#rm ./diff1.txt ./cgal_version -#if [ -f ./diff2.txt ]; then -# rm ./diff2.txt -#fi +rm -rf ./doc_1_8_4 ./doc_1_8_13 ./doc_master #./doxygen_master +rm ./diff1.txt ./cgal_version +if [ -f ./diff2.txt ]; then + rm ./diff2.txt +fi diff --git a/Documentation/doc/scripts/testsuite.py b/Documentation/doc/scripts/testsuite.py index a112cb948ae..4e9e7393552 100755 --- a/Documentation/doc/scripts/testsuite.py +++ b/Documentation/doc/scripts/testsuite.py @@ -7,11 +7,14 @@ # $URL$ # $Id$ # SPDX-License-Identifier: GPL-3.0-or-later -# -# +# +# # Author(s) : Philipp Moeller -import argparse +#NOTE : if args.diff2 is not given, then it is considered that something went +# wrong during the build of doxygen_master or the generation of the doc. + +import argparse import shutil import sys import subprocess @@ -143,11 +146,10 @@ body {color: black; background-color: #C0C0D0; font-family: sans-serif;} pretty_name=basename[0:-4] result = [(basename, pretty_name, res)] results_master.extend(result) - else: - results_master=[] - for index in range(0, len(results1)-1): - results_master.append('./build_logs') - + else: + for index in range(0, len(results1)): + result = [('./build_logs', './build_logs', (0,1))] + results_master.extend(result) for index in range(0, len(results1)-1): status='class="package-good"' no_errors = True @@ -293,7 +295,7 @@ body {color: black; background-color: #C0C0D0; font-family: sans-serif;} log_path=version_string, test_version=args.doxygen_version1, master_version=args.master_describe) else: diff2='

Documentation with the master version of Doxygen FAILED

' - + d=pq(filename=publish_dir + 'index.html',parser="html") revs=d('#revisions tr') new_row='''{revision}{date} From b55cef90434889c6fee7fdc6a20f34d19a33e3a7 Mon Sep 17 00:00:00 2001 From: Andreas Fabri Date: Tue, 27 Apr 2021 14:13:54 +0100 Subject: [PATCH 086/171] Identity is not a scaling --- .../include/CGAL/Homogeneous/Aff_transformationH3.h | 6 ------ 1 file changed, 6 deletions(-) diff --git a/Homogeneous_kernel/include/CGAL/Homogeneous/Aff_transformationH3.h b/Homogeneous_kernel/include/CGAL/Homogeneous/Aff_transformationH3.h index 331d51df109..efb21c829e2 100644 --- a/Homogeneous_kernel/include/CGAL/Homogeneous/Aff_transformationH3.h +++ b/Homogeneous_kernel/include/CGAL/Homogeneous/Aff_transformationH3.h @@ -220,12 +220,6 @@ public: is_even() const { return true; } - virtual bool - is_scaling() const - { - return true; - } - virtual RT homogeneous(int i, int j) const { return (i==j) ? RT(1) : RT(0); } From 8ede8fc7aea7a9afa2707143020453674a8e0ba5 Mon Sep 17 00:00:00 2001 From: Andreas Fabri Date: Tue, 27 Apr 2021 14:16:55 +0100 Subject: [PATCH 087/171] Remove unused parameter --- .../CGAL/Intersections_3/internal/intersection_3_1_impl.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Intersections_3/include/CGAL/Intersections_3/internal/intersection_3_1_impl.h b/Intersections_3/include/CGAL/Intersections_3/internal/intersection_3_1_impl.h index 59be9bf3d31..cfc17829443 100644 --- a/Intersections_3/include/CGAL/Intersections_3/internal/intersection_3_1_impl.h +++ b/Intersections_3/include/CGAL/Intersections_3/internal/intersection_3_1_impl.h @@ -1677,7 +1677,7 @@ do_intersect(const Plane_3& plane1, const Plane_3& plane2, const R&) template inline bool do_intersect(const Plane_3 &plane1, const Plane_3 &plane2, - const Plane_3 &plane3, const R& r) + const Plane_3 &plane3, const R&) { typedef typename R::RT RT; From 24dd2aeca78741f65d81ee0c138f85fe690bdbeb Mon Sep 17 00:00:00 2001 From: Andreas Fabri Date: Tue, 27 Apr 2021 15:27:16 +0100 Subject: [PATCH 088/171] Add to CHANGES.md --- Installation/CHANGES.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/Installation/CHANGES.md b/Installation/CHANGES.md index 38102e7205f..5d9042fe1a7 100644 --- a/Installation/CHANGES.md +++ b/Installation/CHANGES.md @@ -25,6 +25,10 @@ Release date: June 2021 A comprehensive list of the supported file formats is available in the Stream_support package [here](https://doc.cgal.org/5.3/Stream_support/index.html#IOstreamSupportedFormats); inversely, the following [page](https://doc.cgal.org/5.3/Stream_support/IOStreamSupportedFileFormats.html) can be used to find out which CGAL data structures can be used given a specific file format. +### [2D and 3D Linear Geometry Kernel](https://doc.cgal.org/5.3/Manual/packages.html#PkgKernel23) + +- Added functions to the classes `Aff_transformation_2` and `Aff_transformation_3`, which enable to determine if they internally have a specialized representation. + ### [Quadtrees, Octrees, and Orthtrees](https://doc.cgal.org/5.3/Manual/packages.html#PkgOrthree) (new package) - This package implements a tree data structure in which each node From 6672cd001485045f7db5c087c58c0ae6295d56a5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?S=C3=A9bastien=20Loriot?= Date: Wed, 28 Apr 2021 10:45:36 +0200 Subject: [PATCH 089/171] use std::shared_ptr for CGAL::Object --- STL_Extension/include/CGAL/Object.h | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/STL_Extension/include/CGAL/Object.h b/STL_Extension/include/CGAL/Object.h index 59112fe2959..6046e22552a 100644 --- a/STL_Extension/include/CGAL/Object.h +++ b/STL_Extension/include/CGAL/Object.h @@ -30,13 +30,13 @@ #include #include #include -#include +#include namespace CGAL { class Object { - boost::shared_ptr obj; + std::shared_ptr obj; // returns an any pointer from a variant struct Any_from_variant : public boost::static_visitor { From 1faa0e29925ff9159e65ae34bb330427b132a0ad Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?S=C3=A9bastien=20Loriot?= Date: Wed, 28 Apr 2021 10:55:26 +0200 Subject: [PATCH 090/171] replace internal use of boost::shared_ptr by std::shared_ptr --- .../Algebraic_curve_kernel_2.h | 12 ++++---- .../include/CGAL/internal/Lazy_alpha_nt_3.h | 2 +- .../CGAL/Arr_point_location/Td_X_trapezoid.h | 28 +++++++++---------- .../CGAL/Arr_point_location/Td_active_edge.h | 2 +- .../Td_active_fictitious_vertex.h | 2 +- .../Arr_point_location/Td_active_vertex.h | 2 +- .../Arr_point_location/Td_inactive_edge.h | 10 +++---- .../Trapezoidal_decomposition_2.h | 4 +-- .../Trapezoidal_decomposition_2_impl.h | 4 +-- .../boolean_operations_2.cpp | 6 ++-- CGAL_ImageIO/include/CGAL/Image_3.h | 4 +-- Mesh_3/archive/applications/mesher_tester.h | 18 ++++++------ Mesh_3/benchmark/Mesh_3/StdAfx.h | 2 +- Mesh_3/include/CGAL/Labeled_mesh_domain_3.h | 4 +-- .../Lipschitz_sizing_experimental.h | 6 ++-- .../Lipschitz_sizing_polyhedron.h | 4 +-- .../Mesh_domain_with_polyline_features_3.h | 7 ++--- .../CGAL/Poisson_reconstruction_function.h | 4 +-- .../Corefinement/intersection_callbacks.h | 2 +- .../Isotropic_remeshing/remesh_impl.h | 4 +-- .../test_autorefinement.cpp | 2 +- .../Polygon_mesh_processing/test_corefine.cpp | 2 +- .../Surface_mesh/Offset_meshing_plugin.cpp | 4 +-- .../boost/graph/properties_Polyhedron_3.h | 6 ++-- .../include/CGAL/Dynamic_property_map.h | 8 +++--- .../include/CGAL/Index_property_map.h | 4 +-- .../QP_solver/master_mps_to_derivatives.cpp | 10 +++---- Ridges_3/include/CGAL/Umbilics.h | 6 ++-- .../include/CGAL/Skin_surface_base_3.h | 4 +-- .../Triangulated_mixed_complex_observer_3.h | 10 +++---- .../include/CGAL/Eigen_solver_traits.h | 6 ++-- .../include/CGAL/Search_traits_adapter.h | 8 +++--- Stream_lines_2/include/CGAL/Regular_grid_2.h | 6 ++-- Stream_lines_2/include/CGAL/Stream_lines_2.h | 10 +++---- .../test_edge_collapse_Polyhedron_3.cpp | 4 +-- .../include/CGAL/Polyhedral_surface_3.h | 14 +++++----- .../include/CGAL/AABB_polyhedral_oracle.h | 4 +-- .../include/CGAL/Gray_level_image_3.h | 2 +- .../CGAL/Triangular_expansion_visibility_2.h | 6 ++-- 39 files changed, 121 insertions(+), 122 deletions(-) diff --git a/Algebraic_kernel_d/include/CGAL/Algebraic_kernel_d/Algebraic_curve_kernel_2.h b/Algebraic_kernel_d/include/CGAL/Algebraic_kernel_d/Algebraic_curve_kernel_2.h index cb3f4e68239..b02303fa6af 100644 --- a/Algebraic_kernel_d/include/CGAL/Algebraic_kernel_d/Algebraic_curve_kernel_2.h +++ b/Algebraic_kernel_d/include/CGAL/Algebraic_kernel_d/Algebraic_curve_kernel_2.h @@ -49,7 +49,7 @@ #include -#include +#include namespace CGAL { @@ -393,8 +393,8 @@ public: Algebraic_curve_kernel_2() : _m_gcd_cache_2(new Gcd_cache_2()) { - _m_curve_cache_2 = boost::shared_ptr(new Curve_cache_2(this)); - _m_curve_pair_cache_2 = boost::shared_ptr (new Curve_pair_cache_2(this)); + _m_curve_cache_2 = std::shared_ptr(new Curve_cache_2(this)); + _m_curve_pair_cache_2 = std::shared_ptr (new Curve_pair_cache_2(this)); // std::cout << "CONSTRUCTION Algebraic_curve_kernel_2 " << std::endl; } @@ -2766,9 +2766,9 @@ public: protected: -mutable boost::shared_ptr _m_curve_cache_2; -mutable boost::shared_ptr _m_curve_pair_cache_2; -mutable boost::shared_ptr _m_gcd_cache_2; +mutable std::shared_ptr _m_curve_cache_2; +mutable std::shared_ptr _m_curve_pair_cache_2; +mutable std::shared_ptr _m_gcd_cache_2; }; // class Algebraic_curve_kernel_2 diff --git a/Alpha_shapes_3/include/CGAL/internal/Lazy_alpha_nt_3.h b/Alpha_shapes_3/include/CGAL/internal/Lazy_alpha_nt_3.h index c4384e9ccff..536939db210 100644 --- a/Alpha_shapes_3/include/CGAL/internal/Lazy_alpha_nt_3.h +++ b/Alpha_shapes_3/include/CGAL/internal/Lazy_alpha_nt_3.h @@ -20,7 +20,7 @@ #include #include -#include +#include #include #include diff --git a/Arrangement_on_surface_2/include/CGAL/Arr_point_location/Td_X_trapezoid.h b/Arrangement_on_surface_2/include/CGAL/Arr_point_location/Td_X_trapezoid.h index e7202ffe935..eb64e3ce7e0 100644 --- a/Arrangement_on_surface_2/include/CGAL/Arr_point_location/Td_X_trapezoid.h +++ b/Arrangement_on_surface_2/include/CGAL/Arr_point_location/Td_X_trapezoid.h @@ -23,7 +23,7 @@ #include #include -#include +#include #ifdef CGAL_TD_DEBUG @@ -95,7 +95,7 @@ public: typedef Td_ninetuple, boost::variant, boost::variant >, + std::shared_ptr >, Halfedge_const_handle, unsigned char, Self*, Self*, @@ -230,7 +230,7 @@ public: if (type() == TD_EDGE) { - //ptr()->e2 = (boost::shared_ptr)(new X_monotone_curve_2(top()->curve())); + //ptr()->e2 = (std::shared_ptr)(new X_monotone_curve_2(top()->curve())); set_curve_for_rem_he(top()->curve()); return; } @@ -238,8 +238,8 @@ public: //else if (type() == TD_VERTEX) Curve_end v_ce(left()->curve_end()); - ptr()->e2 = (boost::shared_ptr)(new X_monotone_curve_2(v_ce.cv())); - //CGAL_assertion(boost::get>( &(ptr()->e2)) != nullptr); + ptr()->e2 = (std::shared_ptr)(new X_monotone_curve_2(v_ce.cv())); + //CGAL_assertion(boost::get>( &(ptr()->e2)) != nullptr); ptr()->e1 = (v_ce.ce() == ARR_MIN_END ) ? CGAL_TD_CV_MIN_END : CGAL_TD_CV_MAX_END; @@ -255,7 +255,7 @@ public: { CGAL_precondition (type() == TD_EDGE); - ptr()->e2 = (boost::shared_ptr)(new X_monotone_curve_2(cv)); + ptr()->e2 = (std::shared_ptr)(new X_monotone_curve_2(cv)); } /*! Set the trapezoid's type flag (Trapezoid/Edge/Vertex). */ @@ -537,8 +537,8 @@ public: CGAL_precondition(is_on_boundaries()); CGAL_assertion(boost::get( &(ptr()->e1)) != nullptr); - CGAL_assertion(boost::get >(&(ptr()->e2)) != nullptr); - X_monotone_curve_2* cv_ptr = (boost::get >(ptr()->e2)).get(); + CGAL_assertion(boost::get >(&(ptr()->e2)) != nullptr); + X_monotone_curve_2* cv_ptr = (boost::get >(ptr()->e2)).get(); CGAL_assertion(cv_ptr != nullptr); Arr_curve_end ce = @@ -555,8 +555,8 @@ public: CGAL_precondition(is_on_boundaries()); CGAL_assertion(boost::get( &(ptr()->e1)) != nullptr); - CGAL_assertion(boost::get >(&(ptr()->e2)) != nullptr); - X_monotone_curve_2* cv_ptr = (boost::get >(ptr()->e2)).get(); + CGAL_assertion(boost::get >(&(ptr()->e2)) != nullptr); + X_monotone_curve_2* cv_ptr = (boost::get >(ptr()->e2)).get(); CGAL_assertion(cv_ptr != nullptr); Arr_curve_end ce = @@ -572,8 +572,8 @@ public: CGAL_precondition(type() == TD_VERTEX); CGAL_assertion(boost::get( &(ptr()->e1)) != nullptr); - CGAL_assertion(boost::get >(&(ptr()->e2)) != nullptr); - X_monotone_curve_2* cv_ptr = (boost::get >(ptr()->e2)).get(); + CGAL_assertion(boost::get >(&(ptr()->e2)) != nullptr); + X_monotone_curve_2* cv_ptr = (boost::get >(ptr()->e2)).get(); CGAL_assertion(cv_ptr != nullptr); Arr_curve_end ce = @@ -587,8 +587,8 @@ public: { CGAL_precondition(!is_active() && type() == TD_EDGE); - CGAL_assertion(boost::get >(&(ptr()->e2)) != nullptr); - X_monotone_curve_2* cv_ptr = (boost::get >(ptr()->e2)).get(); + CGAL_assertion(boost::get >(&(ptr()->e2)) != nullptr); + X_monotone_curve_2* cv_ptr = (boost::get >(ptr()->e2)).get(); CGAL_assertion(cv_ptr != nullptr); return *cv_ptr; } diff --git a/Arrangement_on_surface_2/include/CGAL/Arr_point_location/Td_active_edge.h b/Arrangement_on_surface_2/include/CGAL/Arr_point_location/Td_active_edge.h index 61259f33547..6954193a227 100644 --- a/Arrangement_on_surface_2/include/CGAL/Arr_point_location/Td_active_edge.h +++ b/Arrangement_on_surface_2/include/CGAL/Arr_point_location/Td_active_edge.h @@ -22,7 +22,7 @@ #include #include -#include +#include #ifdef CGAL_TD_DEBUG diff --git a/Arrangement_on_surface_2/include/CGAL/Arr_point_location/Td_active_fictitious_vertex.h b/Arrangement_on_surface_2/include/CGAL/Arr_point_location/Td_active_fictitious_vertex.h index b75de1b9d97..8f038c6b5e4 100644 --- a/Arrangement_on_surface_2/include/CGAL/Arr_point_location/Td_active_fictitious_vertex.h +++ b/Arrangement_on_surface_2/include/CGAL/Arr_point_location/Td_active_fictitious_vertex.h @@ -22,7 +22,7 @@ #include #include -#include +#include #ifdef CGAL_TD_DEBUG #define CGAL_TD_INLINE diff --git a/Arrangement_on_surface_2/include/CGAL/Arr_point_location/Td_active_vertex.h b/Arrangement_on_surface_2/include/CGAL/Arr_point_location/Td_active_vertex.h index 3b3e86aa0c6..9439d3825c4 100644 --- a/Arrangement_on_surface_2/include/CGAL/Arr_point_location/Td_active_vertex.h +++ b/Arrangement_on_surface_2/include/CGAL/Arr_point_location/Td_active_vertex.h @@ -22,7 +22,7 @@ #include #include -#include +#include #ifdef CGAL_TD_DEBUG diff --git a/Arrangement_on_surface_2/include/CGAL/Arr_point_location/Td_inactive_edge.h b/Arrangement_on_surface_2/include/CGAL/Arr_point_location/Td_inactive_edge.h index bb57f7c6d1c..ed5759d6bc0 100644 --- a/Arrangement_on_surface_2/include/CGAL/Arr_point_location/Td_inactive_edge.h +++ b/Arrangement_on_surface_2/include/CGAL/Arr_point_location/Td_inactive_edge.h @@ -22,7 +22,7 @@ #include #include -#include +#include #ifdef CGAL_TD_DEBUG @@ -115,14 +115,14 @@ public: public: //c'tors - Data (boost::shared_ptr& _cv, Dag_node* _p_node) + Data (std::shared_ptr& _cv, Dag_node* _p_node) : cv(_cv), p_node(_p_node) //, lb(_lb),lt(_lt),rb(_rb),rt(_rt) { } ~Data() { } protected: - boost::shared_ptr cv; + std::shared_ptr cv; Dag_node* p_node; }; @@ -148,7 +148,7 @@ public: } /*! Set the x_monotone_curve_2 for removed edge degenerate trapezoid. */ - CGAL_TD_INLINE void set_curve(boost::shared_ptr& cv) + CGAL_TD_INLINE void set_curve(std::shared_ptr& cv) { ptr()->cv = cv; } @@ -159,7 +159,7 @@ public: //@{ /*! Constructor given Vertex & Halfedge handles. */ - Td_inactive_edge (boost::shared_ptr& cv, Dag_node* node = nullptr) + Td_inactive_edge (std::shared_ptr& cv, Dag_node* node = nullptr) { PTR = new Data(cv,node); } diff --git a/Arrangement_on_surface_2/include/CGAL/Arr_point_location/Trapezoidal_decomposition_2.h b/Arrangement_on_surface_2/include/CGAL/Arr_point_location/Trapezoidal_decomposition_2.h index e48f1aa5c55..d9ff595e41d 100644 --- a/Arrangement_on_surface_2/include/CGAL/Arr_point_location/Trapezoidal_decomposition_2.h +++ b/Arrangement_on_surface_2/include/CGAL/Arr_point_location/Trapezoidal_decomposition_2.h @@ -27,7 +27,7 @@ #include #include -#include +#include #include #include @@ -1206,7 +1206,7 @@ protected: void deactivate_vertex (Dag_node& vtx_node) const; - void deactivate_edge (boost::shared_ptr& cv, Dag_node& edge_node) const; + void deactivate_edge (std::shared_ptr& cv, Dag_node& edge_node) const; //----------------------------------------------------------------------------- // Description: diff --git a/Arrangement_on_surface_2/include/CGAL/Arr_point_location/Trapezoidal_decomposition_2_impl.h b/Arrangement_on_surface_2/include/CGAL/Arr_point_location/Trapezoidal_decomposition_2_impl.h index d86c0c869f9..087920e3aec 100644 --- a/Arrangement_on_surface_2/include/CGAL/Arr_point_location/Trapezoidal_decomposition_2_impl.h +++ b/Arrangement_on_surface_2/include/CGAL/Arr_point_location/Trapezoidal_decomposition_2_impl.h @@ -244,7 +244,7 @@ deactivate_vertex(Dag_node& vtx_node) const template void Trapezoidal_decomposition_2:: -deactivate_edge(boost::shared_ptr& cv, +deactivate_edge(std::shared_ptr& cv, Dag_node& edge_node) const { CGAL_precondition(traits->is_active(edge_node.get_data())); @@ -1870,7 +1870,7 @@ void Trapezoidal_decomposition_2::remove(Halfedge_const_handle he) //----------------------------------- //3. remove the trapezoids that represent the removed halfedge - boost::shared_ptr + std::shared_ptr removed_cv_ptr(new X_monotone_curve_2(he->curve())); Base_map_item_iterator last_edge_fragment_it = mid_it; //Base_trapezoid_iterator last_mid = mid_it; diff --git a/Boolean_set_operations_2/archive/demo/Boolean_set_operations_2_GraphicsView/boolean_operations_2.cpp b/Boolean_set_operations_2/archive/demo/Boolean_set_operations_2_GraphicsView/boolean_operations_2.cpp index a8dd97b66c9..424dfdbe710 100644 --- a/Boolean_set_operations_2/archive/demo/Boolean_set_operations_2_GraphicsView/boolean_operations_2.cpp +++ b/Boolean_set_operations_2/archive/demo/Boolean_set_operations_2_GraphicsView/boolean_operations_2.cpp @@ -31,7 +31,7 @@ void trace( std::string s ) out << s ; } -#include +#include #include #include @@ -306,7 +306,7 @@ public: class Curve_set { - typedef boost::shared_ptr Rep_ptr ; + typedef std::shared_ptr Rep_ptr ; public: @@ -417,7 +417,7 @@ private: QPen mPen ; QBrush mBrush ; - boost::shared_ptr mRep ; + std::shared_ptr mRep ; } ; diff --git a/CGAL_ImageIO/include/CGAL/Image_3.h b/CGAL_ImageIO/include/CGAL/Image_3.h index 4197574199e..8ede8eefec5 100644 --- a/CGAL_ImageIO/include/CGAL/Image_3.h +++ b/CGAL_ImageIO/include/CGAL/Image_3.h @@ -19,7 +19,7 @@ #include #include -#include +#include #include #include #include @@ -81,7 +81,7 @@ class CGAL_IMAGEIO_EXPORT Image_3 public: enum Own { OWN_THE_DATA, DO_NOT_OWN_THE_DATA }; - typedef boost::shared_ptr<_image> Image_shared_ptr; + typedef std::shared_ptr<_image> Image_shared_ptr; typedef Image_shared_ptr Pointer; protected: diff --git a/Mesh_3/archive/applications/mesher_tester.h b/Mesh_3/archive/applications/mesher_tester.h index c27cd811dbd..cc8107179fe 100644 --- a/Mesh_3/archive/applications/mesher_tester.h +++ b/Mesh_3/archive/applications/mesher_tester.h @@ -15,7 +15,7 @@ #include #include #include -#include +#include #include "thread_queue.h" @@ -51,7 +51,7 @@ template struct Optimizer; template struct Mesher { - Mesher(const boost::shared_ptr >& pdomain_builder, + Mesher(const std::shared_ptr >& pdomain_builder, const int mesh_nb, const std::string& filename, const std::string& output, @@ -95,7 +95,7 @@ struct Mesher timer.start(); // we keep c3t3 between lines - boost::shared_ptr pc3t3_save (new C3T3()); + std::shared_ptr pc3t3_save (new C3T3()); // Generate Mesh file_out << "Generate mesh..."; @@ -183,7 +183,7 @@ private: } private: - boost::shared_ptr > pdomain_builder_; + std::shared_ptr > pdomain_builder_; int mesh_nb_; std::string filename_; std::string output_prefix_; @@ -196,8 +196,8 @@ private: template struct Optimizer { - Optimizer(const boost::shared_ptr& pc3t3, - const boost::shared_ptr >& pdomain_builder, + Optimizer(const std::shared_ptr& pc3t3, + const std::shared_ptr >& pdomain_builder, const int mesh_nb, const std::string& output, const std::string& command_line) @@ -339,8 +339,8 @@ private: private: - boost::shared_ptr pc3t3_; - boost::shared_ptr > pdomain_builder_; + std::shared_ptr pc3t3_; + std::shared_ptr > pdomain_builder_; std::string mesh_nb_; std::string output_prefix_; std::string command_line_; @@ -571,7 +571,7 @@ void mesh(const std::string& data, const std::string& output_dir, const int nb_t //Load the domain std::stringstream cout_loc; cout_loc << "+ [" << filename << "] Create domain..."; - boost::shared_ptr > pdomain_builder(new Domain_builder(it->path().string())); + std::shared_ptr > pdomain_builder(new Domain_builder(it->path().string())); cout_loc << "done (" << timer.time() << "s)\n"; std::cout << cout_loc.str(); diff --git a/Mesh_3/benchmark/Mesh_3/StdAfx.h b/Mesh_3/benchmark/Mesh_3/StdAfx.h index ac0f9e1b5b2..7f3c5f93ca7 100644 --- a/Mesh_3/benchmark/Mesh_3/StdAfx.h +++ b/Mesh_3/benchmark/Mesh_3/StdAfx.h @@ -131,7 +131,7 @@ #include #include #include -#include +#include #include #include #include diff --git a/Mesh_3/include/CGAL/Labeled_mesh_domain_3.h b/Mesh_3/include/CGAL/Labeled_mesh_domain_3.h index 0dceef7f282..6a755990d5e 100644 --- a/Mesh_3/include/CGAL/Labeled_mesh_domain_3.h +++ b/Mesh_3/include/CGAL/Labeled_mesh_domain_3.h @@ -27,7 +27,7 @@ #include #include #include -#include +#include #include #include @@ -148,7 +148,7 @@ protected: typedef typename Geom_traits::Sphere_3 Sphere_3; typedef typename Geom_traits::Iso_cuboid_3 Iso_cuboid_3; typedef typename Geom_traits::FT FT; - typedef boost::shared_ptr CGAL_Random_share_ptr_t; + typedef std::shared_ptr CGAL_Random_share_ptr_t; /// Returns squared error bound from \c bbox and \c error FT squared_error_bound(const Iso_cuboid_3& bbox, const FT& error) const { diff --git a/Mesh_3/include/CGAL/Mesh_3/experimental/Lipschitz_sizing_experimental.h b/Mesh_3/include/CGAL/Mesh_3/experimental/Lipschitz_sizing_experimental.h index a0e2524dbb6..a2553333dc1 100644 --- a/Mesh_3/include/CGAL/Mesh_3/experimental/Lipschitz_sizing_experimental.h +++ b/Mesh_3/include/CGAL/Mesh_3/experimental/Lipschitz_sizing_experimental.h @@ -29,7 +29,7 @@ #include #include -#include +#include #include #include @@ -93,7 +93,7 @@ private: private: //only one of these aabb_trees is needed const Tree* m_ptree; - boost::shared_ptr m_own_ptree; + std::shared_ptr m_own_ptree; const MeshDomain& m_domain; Parameters m_params; @@ -104,7 +104,7 @@ private: #ifdef CGAL_MESH_3_EXPERIMENTAL_USE_PATCHES_IDS //help to accelerate aabb_tree queries in m_ptree - boost::shared_ptr m_kd_tree; + std::shared_ptr m_kd_tree; Facet_patch_id_map m_facet_patch_id_map; const Patches_ids_map& patches_ids_map; diff --git a/Mesh_3/include/CGAL/Mesh_3/experimental/Lipschitz_sizing_polyhedron.h b/Mesh_3/include/CGAL/Mesh_3/experimental/Lipschitz_sizing_polyhedron.h index c60ce33db5c..df2c3e0bd46 100644 --- a/Mesh_3/include/CGAL/Mesh_3/experimental/Lipschitz_sizing_polyhedron.h +++ b/Mesh_3/include/CGAL/Mesh_3/experimental/Lipschitz_sizing_polyhedron.h @@ -26,7 +26,7 @@ #include #include -#include +#include #include #include @@ -66,7 +66,7 @@ public: private: const Tree* m_ptree; - boost::shared_ptr m_own_ptree; + std::shared_ptr m_own_ptree; const MeshDomain& m_domain; Parameters m_params; diff --git a/Mesh_3/include/CGAL/Mesh_domain_with_polyline_features_3.h b/Mesh_3/include/CGAL/Mesh_domain_with_polyline_features_3.h index 165df38676d..e72a0b7ec36 100644 --- a/Mesh_3/include/CGAL/Mesh_domain_with_polyline_features_3.h +++ b/Mesh_3/include/CGAL/Mesh_domain_with_polyline_features_3.h @@ -40,8 +40,7 @@ #include #include #include -#include -#include +#include namespace CGAL { @@ -859,7 +858,7 @@ public: typedef CGAL::AABB_tree Curves_AABB_tree; private: - mutable boost::shared_ptr curves_aabb_tree_ptr_; + mutable std::shared_ptr curves_aabb_tree_ptr_; mutable bool curves_aabb_tree_is_built; public: @@ -884,7 +883,7 @@ public: if(curves_aabb_tree_ptr_) { curves_aabb_tree_ptr_->clear(); } else { - curves_aabb_tree_ptr_ = boost::make_shared(); + curves_aabb_tree_ptr_ = std::make_shared(); } for(typename Edges::const_iterator edges_it = edges_.begin(), diff --git a/Poisson_surface_reconstruction_3/include/CGAL/Poisson_reconstruction_function.h b/Poisson_surface_reconstruction_3/include/CGAL/Poisson_reconstruction_function.h index 7fb5c3e68f3..e526d4ac91f 100644 --- a/Poisson_surface_reconstruction_3/include/CGAL/Poisson_reconstruction_function.h +++ b/Poisson_surface_reconstruction_3/include/CGAL/Poisson_reconstruction_function.h @@ -43,7 +43,7 @@ #include #include -#include +#include #include #include #include @@ -274,7 +274,7 @@ private: // operator() is pre-computed on vertices of *m_tr by solving // the Poisson equation Laplacian(f) = divergent(normals field). - boost::shared_ptr m_tr; + std::shared_ptr m_tr; mutable std::shared_ptr > m_bary; mutable std::vector Dual; mutable std::vector Normal; diff --git a/Polygon_mesh_processing/include/CGAL/Polygon_mesh_processing/internal/Corefinement/intersection_callbacks.h b/Polygon_mesh_processing/include/CGAL/Polygon_mesh_processing/internal/Corefinement/intersection_callbacks.h index d764b106181..3c33b980cbc 100644 --- a/Polygon_mesh_processing/include/CGAL/Polygon_mesh_processing/internal/Corefinement/intersection_callbacks.h +++ b/Polygon_mesh_processing/include/CGAL/Polygon_mesh_processing/internal/Corefinement/intersection_callbacks.h @@ -21,7 +21,7 @@ #include #include -#include +#include #include namespace CGAL { diff --git a/Polygon_mesh_processing/include/CGAL/Polygon_mesh_processing/internal/Isotropic_remeshing/remesh_impl.h b/Polygon_mesh_processing/include/CGAL/Polygon_mesh_processing/internal/Isotropic_remeshing/remesh_impl.h index 9bbe717ca5b..c229f344811 100644 --- a/Polygon_mesh_processing/include/CGAL/Polygon_mesh_processing/internal/Isotropic_remeshing/remesh_impl.h +++ b/Polygon_mesh_processing/include/CGAL/Polygon_mesh_processing/internal/Isotropic_remeshing/remesh_impl.h @@ -42,7 +42,7 @@ #include #include #include -#include +#include #include #include @@ -92,7 +92,7 @@ namespace internal { typedef typename boost::graph_traits::edge_descriptor edge_descriptor; typedef FaceIndexMap FIMap; - boost::shared_ptr< std::set > border_edges_ptr; + std::shared_ptr< std::set > border_edges_ptr; const PM* pmesh_ptr_; public: diff --git a/Polygon_mesh_processing/test/Polygon_mesh_processing/test_autorefinement.cpp b/Polygon_mesh_processing/test/Polygon_mesh_processing/test_autorefinement.cpp index eb8cf3a4654..06bbfa2a147 100644 --- a/Polygon_mesh_processing/test/Polygon_mesh_processing/test_autorefinement.cpp +++ b/Polygon_mesh_processing/test/Polygon_mesh_processing/test_autorefinement.cpp @@ -22,7 +22,7 @@ struct My_visitor : : i (new int(0) ) {} - boost::shared_ptr i; + std::shared_ptr i; }; void test(const char* fname, std::size_t nb_polylines, std::size_t total_nb_points, diff --git a/Polygon_mesh_processing/test/Polygon_mesh_processing/test_corefine.cpp b/Polygon_mesh_processing/test/Polygon_mesh_processing/test_corefine.cpp index 10dd9ff76d7..ec1cefd793c 100644 --- a/Polygon_mesh_processing/test/Polygon_mesh_processing/test_corefine.cpp +++ b/Polygon_mesh_processing/test/Polygon_mesh_processing/test_corefine.cpp @@ -20,7 +20,7 @@ struct My_visitor : : i (new int(0) ) {} - boost::shared_ptr i; + std::shared_ptr i; }; void test(const char* f1, const char* f2) diff --git a/Polyhedron/demo/Polyhedron/Plugins/Surface_mesh/Offset_meshing_plugin.cpp b/Polyhedron/demo/Polyhedron/Plugins/Surface_mesh/Offset_meshing_plugin.cpp index a379cf36095..c1519625d70 100644 --- a/Polyhedron/demo/Polyhedron/Plugins/Surface_mesh/Offset_meshing_plugin.cpp +++ b/Polyhedron/demo/Polyhedron/Plugins/Surface_mesh/Offset_meshing_plugin.cpp @@ -76,8 +76,8 @@ public: } private: - boost::shared_ptr m_tree_ptr; - boost::shared_ptr m_side_of_ptr; + std::shared_ptr m_tree_ptr; + std::shared_ptr m_side_of_ptr; double m_offset_distance; bool m_is_closed; diff --git a/Polyhedron/include/CGAL/boost/graph/properties_Polyhedron_3.h b/Polyhedron/include/CGAL/boost/graph/properties_Polyhedron_3.h index a53bde8e724..939093a7db5 100644 --- a/Polyhedron/include/CGAL/boost/graph/properties_Polyhedron_3.h +++ b/Polyhedron/include/CGAL/boost/graph/properties_Polyhedron_3.h @@ -17,7 +17,7 @@ #include #include #include -#include +#include #include #define CGAL_HDS_PARAM_ template < class Traits, class Items, class Alloc> class HDS @@ -46,7 +46,7 @@ public: reference operator[](const key_type& k) const { return (*map_)[k]; } private: - boost::shared_ptr map_; + std::shared_ptr map_; }; // Special case for edges. @@ -75,7 +75,7 @@ public: reference operator[](const key_type& k) const { return (*map_)[k]; } private: - boost::shared_ptr map_; + std::shared_ptr map_; }; template diff --git a/Property_map/include/CGAL/Dynamic_property_map.h b/Property_map/include/CGAL/Dynamic_property_map.h index fb37d46e214..6337a639068 100644 --- a/Property_map/include/CGAL/Dynamic_property_map.h +++ b/Property_map/include/CGAL/Dynamic_property_map.h @@ -18,7 +18,7 @@ #include #include -#include +#include #include #include #include @@ -70,7 +70,7 @@ struct Dynamic_property_map { typedef boost::unordered_map Map; - boost::shared_ptr map_; + std::shared_ptr map_; V default_value_; }; @@ -119,7 +119,7 @@ struct Dynamic { put(*(m.map_), k, v); } - boost::shared_ptr map_; + std::shared_ptr map_; }; template @@ -152,7 +152,7 @@ struct Dynamic_with_index (*m.m_values)[k.idx()]=v; } - boost::shared_ptr > m_values; + std::shared_ptr > m_values; }; } // namespace internal diff --git a/Property_map/include/CGAL/Index_property_map.h b/Property_map/include/CGAL/Index_property_map.h index 4d170e39e25..314dacda060 100644 --- a/Property_map/include/CGAL/Index_property_map.h +++ b/Property_map/include/CGAL/Index_property_map.h @@ -13,7 +13,7 @@ #define CGAL_INDEX_PROPERTY_MAP_H #include -#include +#include #include #include @@ -97,7 +97,7 @@ public: private: // Property maps must be lightweight classes => share std::map - boost::shared_ptr m_index_map; + std::shared_ptr m_index_map; }; /// @cond SKIP_IN_MANUAL diff --git a/QP_solver/test/QP_solver/master_mps_to_derivatives.cpp b/QP_solver/test/QP_solver/master_mps_to_derivatives.cpp index 22a72be23f9..b0af787b72e 100644 --- a/QP_solver/test/QP_solver/master_mps_to_derivatives.cpp +++ b/QP_solver/test/QP_solver/master_mps_to_derivatives.cpp @@ -18,7 +18,7 @@ #include #include -#include +#include #include #include @@ -200,7 +200,7 @@ void write_MPS(std::ostream& out, CGAL::print_quadratic_program(out, qp, problem_name); } -boost::shared_ptr +std::shared_ptr create_output_file(const char *filename, // Note: "Bernd3" and not // "Bernd3.mps". const char *directory, @@ -210,7 +210,7 @@ create_output_file(const char *filename, // Note: "Bernd3" and not std::string new_name = std::string(directory) + std::string("/") + std::string(filename) + std::string("_") + std::string(suffix) + std::string(".mps"); - return boost::shared_ptr(new std::ofstream(new_name.c_str(), + return std::shared_ptr(new std::ofstream(new_name.c_str(), std::ios_base::trunc | std::ios_base::out)); } @@ -275,7 +275,7 @@ void create_shifted_instance(const CGAL::Quadratic_program_from_mps & qp, // output: using boost::make_transform_iterator; using boost::make_zip_iterator; - boost::shared_ptr out = create_output_file(file, dir, "shifted"); + std::shared_ptr out = create_output_file(file, dir, "shifted"); write_MPS(*out, "", // deduce number-type @@ -359,7 +359,7 @@ void create_free_instance(CGAL::Quadratic_program_from_mps& qp, qp.set_u(i, false); // variable becomes free } // output: - boost::shared_ptr out = create_output_file(file, dir, "free"); + std::shared_ptr out = create_output_file(file, dir, "free"); write_MPS(*out, "", // deduce number-type "Freed instance of original file", diff --git a/Ridges_3/include/CGAL/Umbilics.h b/Ridges_3/include/CGAL/Umbilics.h index d10ecd1a1e5..278688706d4 100644 --- a/Ridges_3/include/CGAL/Umbilics.h +++ b/Ridges_3/include/CGAL/Umbilics.h @@ -19,7 +19,7 @@ #include #include -#include +#include #include #include @@ -133,7 +133,7 @@ class Umbilic_approximation const TriangleMesh& P; typedef T_PolyhedralSurf_neighbors Poly_neighbors; - boost::shared_ptr poly_neighbors; + std::shared_ptr poly_neighbors; CGAL::Abs cgal_abs; CGAL::To_double To_double; @@ -165,7 +165,7 @@ Umbilic_approximation(const TriangleMesh& p, { CGAL_precondition(is_triangle_mesh(P)); - poly_neighbors = boost::shared_ptr(new Poly_neighbors(P)); + poly_neighbors = std::shared_ptr(new Poly_neighbors(P)); } diff --git a/Skin_surface_3/include/CGAL/Skin_surface_base_3.h b/Skin_surface_3/include/CGAL/Skin_surface_base_3.h index 108b8ff2b25..836671a496b 100644 --- a/Skin_surface_3/include/CGAL/Skin_surface_base_3.h +++ b/Skin_surface_3/include/CGAL/Skin_surface_base_3.h @@ -24,7 +24,7 @@ #include #include #include -#include +#include // Used for the triangulated mixed complex / Voronoi diagram #include @@ -93,7 +93,7 @@ private: public: typedef Anchor_point Vertex_info; - typedef std::pair > Cell_info; + typedef std::pair > Cell_info; private: // Triangulated_mixed_complex: diff --git a/Skin_surface_3/include/CGAL/Triangulated_mixed_complex_observer_3.h b/Skin_surface_3/include/CGAL/Triangulated_mixed_complex_observer_3.h index baf74b7e19c..c519448c672 100644 --- a/Skin_surface_3/include/CGAL/Triangulated_mixed_complex_observer_3.h +++ b/Skin_surface_3/include/CGAL/Triangulated_mixed_complex_observer_3.h @@ -18,7 +18,7 @@ #include #include -#include +#include namespace CGAL { @@ -163,7 +163,7 @@ public: FT shrink; Rt_Simplex prev_s; - boost::shared_ptr surf; + std::shared_ptr surf; // c is the center of the orthogonal sphere // w is the weight of the orthogonal sphere @@ -179,14 +179,14 @@ public: Q[1] = Q[3] = Q[4] = 0; Q[0] = Q[2] = Q[5] = orient; - surf = boost::shared_ptr(new Quadratic_surface(Q, c, s*w, (orient==1? 0 : 3))); + surf = std::shared_ptr(new Quadratic_surface(Q, c, s*w, (orient==1? 0 : 3))); } else { // Multiply with 1-s to make the function defining the // skin surface implicitly continuous Q[1] = Q[3] = Q[4] = 0; Q[0] = Q[2] = Q[5] = orient*(1-s); - surf = boost::shared_ptr(new Quadratic_surface(Q, c, s*(1-s)*w, (orient==1? 0 : 3))); + surf = std::shared_ptr(new Quadratic_surface(Q, c, s*(1-s)*w, (orient==1? 0 : 3))); } } @@ -207,7 +207,7 @@ public: Q[4] = orient*(-2*t.z()*t.y()/den); Q[5] = orient*(- t.z()*t.z()/den + (1-s)); - surf = boost::shared_ptr(new Quadratic_surface(Q, c, s*(1-s)*w, (orient==1? 1 : 2))); + surf = std::shared_ptr(new Quadratic_surface(Q, c, s*(1-s)*w, (orient==1? 1 : 2))); } Surface_RT Q[6]; diff --git a/Solver_interface/include/CGAL/Eigen_solver_traits.h b/Solver_interface/include/CGAL/Eigen_solver_traits.h index ecedf0ed89b..c7efdfda81d 100644 --- a/Solver_interface/include/CGAL/Eigen_solver_traits.h +++ b/Solver_interface/include/CGAL/Eigen_solver_traits.h @@ -29,7 +29,7 @@ #include #include -#include +#include namespace CGAL { namespace internal { @@ -226,7 +226,7 @@ public: protected: const typename Matrix::EigenType* m_mat; - boost::shared_ptr m_solver_sptr; + std::shared_ptr m_solver_sptr; }; // Specialization of the solver for BiCGSTAB as for surface parameterization, @@ -275,7 +275,7 @@ public: } protected: - boost::shared_ptr m_solver_sptr; + std::shared_ptr m_solver_sptr; }; } // namespace CGAL diff --git a/Spatial_searching/include/CGAL/Search_traits_adapter.h b/Spatial_searching/include/CGAL/Search_traits_adapter.h index d3c6b49fd60..7fc4c174572 100644 --- a/Spatial_searching/include/CGAL/Search_traits_adapter.h +++ b/Spatial_searching/include/CGAL/Search_traits_adapter.h @@ -142,7 +142,7 @@ public: typedef typename boost::property_traits::value_type Point; - boost::shared_ptr point; + std::shared_ptr point; std::size_t idx; public: @@ -157,18 +157,18 @@ public: void increment() { ++idx; - CGAL_assertion(point != boost::shared_ptr()); + CGAL_assertion(point != std::shared_ptr()); } void decrement() { --idx; - CGAL_assertion(point != boost::shared_ptr()); + CGAL_assertion(point != std::shared_ptr()); } void advance(std::ptrdiff_t n) { idx += n; - CGAL_assertion(point != boost::shared_ptr()); + CGAL_assertion(point != std::shared_ptr()); } std::ptrdiff_t distance_to(const No_lvalue_iterator& other) const diff --git a/Stream_lines_2/include/CGAL/Regular_grid_2.h b/Stream_lines_2/include/CGAL/Regular_grid_2.h index 4cce300d35a..57b69a00e41 100644 --- a/Stream_lines_2/include/CGAL/Regular_grid_2.h +++ b/Stream_lines_2/include/CGAL/Regular_grid_2.h @@ -19,7 +19,7 @@ #include #include -#include +#include #include @@ -39,7 +39,7 @@ public: typedef typename StreamLinesTraits_2::Point_2 Point_2; typedef typename StreamLinesTraits_2::Vector_2 Vector_2; protected: - boost::shared_ptr< std::vector > vector_field; + std::shared_ptr< std::vector > vector_field; inline int get_index(int i,int j) const; int number_of_samples_x; int number_of_samples_y; @@ -118,7 +118,7 @@ Regular_grid_2::Regular_grid_2(int m, number_of_samples_y = n; domain_size_x = x; domain_size_y = y; - vector_field = boost::shared_ptr >(new std::vector(number_of_samples_x*number_of_samples_y* 2)); + vector_field = std::shared_ptr >(new std::vector(number_of_samples_x*number_of_samples_y* 2)); } diff --git a/Stream_lines_2/include/CGAL/Stream_lines_2.h b/Stream_lines_2/include/CGAL/Stream_lines_2.h index 25458c7aa08..a000bbf684f 100644 --- a/Stream_lines_2/include/CGAL/Stream_lines_2.h +++ b/Stream_lines_2/include/CGAL/Stream_lines_2.h @@ -32,7 +32,7 @@ #include // undocumented class #include #include -#include +#include namespace CGAL { @@ -96,8 +96,8 @@ protected: Point_2 seed_point; int samp_step; unsigned int _number_of_lines; - boost::shared_ptr vf_2; - boost::shared_ptr int_2; + std::shared_ptr vf_2; + std::shared_ptr int_2; public: void set_separating_distance(FT new_value){separating_distance = new_value;} void set_saturation_ratio(FT new_value){ saturation_ratio = new_value;} @@ -241,8 +241,8 @@ vector_field_2, const Integrator_2 & m_integrator, const FT & m_separating_dista m_DT.insert(pPoint); } _number_of_lines = 0; - vf_2 = boost::shared_ptr(new Vector_field_2(vector_field_2)); - int_2 = boost::shared_ptr(new Integrator_2(m_integrator)); + vf_2 = std::shared_ptr(new Vector_field_2(vector_field_2)); + int_2 = std::shared_ptr(new Integrator_2(m_integrator)); samp_step = sampling_step; stl_container.clear(); place_stream_lines(vector_field_2, m_integrator, diff --git a/Surface_mesh_simplification/test/Surface_mesh_simplification/test_edge_collapse_Polyhedron_3.cpp b/Surface_mesh_simplification/test/Surface_mesh_simplification/test_edge_collapse_Polyhedron_3.cpp index 1c84930d608..ca29638a015 100644 --- a/Surface_mesh_simplification/test/Surface_mesh_simplification/test_edge_collapse_Polyhedron_3.cpp +++ b/Surface_mesh_simplification/test/Surface_mesh_simplification/test_edge_collapse_Polyhedron_3.cpp @@ -17,7 +17,7 @@ #include "basics.h" #include "test_self_intersection.h" -#include +#include //#define TEST_TEST_TRACE_ENABLED @@ -48,7 +48,7 @@ namespace SMS = CGAL::Surface_mesh_simplification; typedef SMS::Edge_profile Profile; -typedef boost::shared_ptr SurfaceSP; +typedef std::shared_ptr SurfaceSP; // Constructs a flat polyhedron containing just the link of an edge or vertex. class Link_builder : public CGAL::Modifier_base diff --git a/Surface_mesher/archive/include/CGAL/Polyhedral_surface_3.h b/Surface_mesher/archive/include/CGAL/Polyhedral_surface_3.h index 2ef3e333cce..4ba75cb5959 100644 --- a/Surface_mesher/archive/include/CGAL/Polyhedral_surface_3.h +++ b/Surface_mesher/archive/include/CGAL/Polyhedral_surface_3.h @@ -31,7 +31,7 @@ #include #include -#include +#include #include #include @@ -274,8 +274,8 @@ public: typedef Intersection_data_structure_3 Subsegments_tree; #endif - typedef boost::shared_ptr Subfacets_tree_ptr; - typedef boost::shared_ptr Subsegments_tree_ptr; + typedef std::shared_ptr Subfacets_tree_ptr; + typedef std::shared_ptr Subsegments_tree_ptr; // typedef typename Subsegments_tree::Point_with_index // Intersection_point; @@ -1252,13 +1252,13 @@ public: Subfacets_tree_ptr subfacets_tree_ptr; Subsegments_tree_ptr subsegments_tree_ptr; typedef std::set Input_vertices; - boost::shared_ptr input_vertices_ptr; + std::shared_ptr input_vertices_ptr; typedef std::vector Corner_vertices; - boost::shared_ptr corner_vertices_ptr; + std::shared_ptr corner_vertices_ptr; typedef std::vector Edges_vertices; - boost::shared_ptr edges_vertices_ptr; + std::shared_ptr edges_vertices_ptr; #ifdef CGAL_SURFACE_MESHER_POLYHEDRAL_SURFACE_USE_PINPOLYHEDRON - typedef boost::shared_ptr PointInPolyhedron_ptr; + typedef std::shared_ptr PointInPolyhedron_ptr; PointInPolyhedron_ptr pinpolyhedron_ptr; #endif diff --git a/Surface_mesher/include/CGAL/AABB_polyhedral_oracle.h b/Surface_mesher/include/CGAL/AABB_polyhedral_oracle.h index 04c0d90ceaa..a57dc122563 100644 --- a/Surface_mesher/include/CGAL/AABB_polyhedral_oracle.h +++ b/Surface_mesher/include/CGAL/AABB_polyhedral_oracle.h @@ -25,7 +25,7 @@ #include #include -#include +#include namespace CGAL { @@ -50,7 +50,7 @@ namespace CGAL { typedef AABB_tree Tree; typedef typename AABB_traits::Bounding_box Bounding_box; - typedef boost::shared_ptr Tree_shared_ptr; + typedef std::shared_ptr Tree_shared_ptr; Tree_shared_ptr m_pTree; public: diff --git a/Surface_mesher/include/CGAL/Gray_level_image_3.h b/Surface_mesher/include/CGAL/Gray_level_image_3.h index c9e7df7954b..5cf37cd2c28 100644 --- a/Surface_mesher/include/CGAL/Gray_level_image_3.h +++ b/Surface_mesher/include/CGAL/Gray_level_image_3.h @@ -19,7 +19,7 @@ #include -#include +#include #ifdef CGAL_SURFACE_MESHER_DEBUG_GRAY_LEVEL_IMAGE_3_CONSTRUCTOR #include diff --git a/Visibility_2/include/CGAL/Triangular_expansion_visibility_2.h b/Visibility_2/include/CGAL/Triangular_expansion_visibility_2.h index 43a66c0fbd0..f8a723265d5 100644 --- a/Visibility_2/include/CGAL/Triangular_expansion_visibility_2.h +++ b/Visibility_2/include/CGAL/Triangular_expansion_visibility_2.h @@ -18,7 +18,7 @@ #include -#include +#include #include #include #include @@ -151,7 +151,7 @@ private: // May change during visibility computation mutable Observer observer; - mutable boost::shared_ptr p_cdt; + mutable std::shared_ptr p_cdt; mutable std::vector needles; // Copy constructor and assignment not supported @@ -696,7 +696,7 @@ private: Make_constraint()); //std::cout << "init_cdt new CDT" << std::endl; - p_cdt = boost::shared_ptr(new CDT(begin, end)); + p_cdt = std::shared_ptr(new CDT(begin, end)); observer.has_changed = false; //std::cout << "init_cdt done" << std::endl; //std::cout << std::endl; From 971004cfeec80953d010296fc8fd24ae7d5df785 Mon Sep 17 00:00:00 2001 From: Maxime Gimeno Date: Wed, 28 Apr 2021 15:40:18 +0200 Subject: [PATCH 091/171] Fix a warning --- Polyhedron/demo/Polyhedron/Scene_group_item.cpp | 2 ++ 1 file changed, 2 insertions(+) diff --git a/Polyhedron/demo/Polyhedron/Scene_group_item.cpp b/Polyhedron/demo/Polyhedron/Scene_group_item.cpp index 70570753802..29e0685ec51 100644 --- a/Polyhedron/demo/Polyhedron/Scene_group_item.cpp +++ b/Polyhedron/demo/Polyhedron/Scene_group_item.cpp @@ -90,10 +90,12 @@ void Scene_group_item::update_group_number(Scene_item * new_item, int n) Scene_group_item* group = qobject_cast(new_item); if(group) + { Q_FOREACH(Scene_interface::Item_id id, group->getChildren()){ update_group_number(getChild(id),n+1); } + } new_item->has_group = n; } void Scene_group_item::setColor(QColor c) From f02f5d07d19589e8db52b70c821c022da2261eb1 Mon Sep 17 00:00:00 2001 From: Giles Bathgate Date: Wed, 28 Apr 2021 17:53:41 +0100 Subject: [PATCH 092/171] Fix dereference after null in Triangulation_data_structure.h --- TDS_3/include/CGAL/Triangulation_data_structure_3.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/TDS_3/include/CGAL/Triangulation_data_structure_3.h b/TDS_3/include/CGAL/Triangulation_data_structure_3.h index b3927cf03ae..1b14fbb03cd 100644 --- a/TDS_3/include/CGAL/Triangulation_data_structure_3.h +++ b/TDS_3/include/CGAL/Triangulation_data_structure_3.h @@ -1924,7 +1924,7 @@ create_star_2(Vertex_handle v, Cell_handle c, int li ) // pnew is null at the first iteration v1->set_cell(cnew); //pnew->set_neighbor( cw(pnew->index(v1)), cnew ); - if (pnew != Cell_handle()) { pnew->set_neighbor( 1, cnew );} + if (pnew != nullptr) { pnew->set_neighbor( 1, cnew );} bound = cur; i1 = ccw(i1); From 0dcadee4863b8885512dcd8708e859119ce6fc99 Mon Sep 17 00:00:00 2001 From: Giles Bathgate Date: Wed, 28 Apr 2021 17:54:19 +0100 Subject: [PATCH 093/171] Fix dereference after null in Polyhedron_incremental_builder_3.h --- .../CGAL/Polyhedron_incremental_builder_3.h | 14 +++++++------- STL_Extension/include/CGAL/In_place_list.h | 4 ++++ 2 files changed, 11 insertions(+), 7 deletions(-) diff --git a/Polyhedron/include/CGAL/Polyhedron_incremental_builder_3.h b/Polyhedron/include/CGAL/Polyhedron_incremental_builder_3.h index f5686239a51..817646d79d2 100644 --- a/Polyhedron/include/CGAL/Polyhedron_incremental_builder_3.h +++ b/Polyhedron/include/CGAL/Polyhedron_incremental_builder_3.h @@ -402,7 +402,7 @@ protected: CGAL_assertion( ! last_vertex); HalfedgeDS_items_decorator decorator; Halfedge_handle e = get_vertex_to_edge_map( w); - if ( e != Halfedge_handle()) { + if ( e != nullptr) { CGAL_assertion( e->vertex() == index_to_vertex_map[w]); // check that the facet has no self intersections if ( current_face != Face_handle() @@ -491,7 +491,7 @@ protected: // Halfedge e points to a vertex w. Walk around w to find a hole // in the facet structure. Report an error if none exist. Return // the halfedge at this hole that points to the vertex w. - CGAL_assertion( e != Halfedge_handle()); + CGAL_assertion( e != nullptr); HalfedgeDS_items_decorator decorator; Halfedge_handle start_edge( e); do { @@ -649,7 +649,7 @@ add_vertex_to_facet( std::size_t v2) { Halfedge_handle hole = lookup_hole( v1); if ( m_error) return; - CGAL_assertion( hole != Halfedge_handle()); + CGAL_assertion( hole != nullptr); h2->opposite()->HBase::set_next( hole->next()); decorator.set_prev( hole->next(), h2->opposite()); hole->HBase::set_next( h1->opposite()); @@ -689,7 +689,7 @@ add_vertex_to_facet( std::size_t v2) { } while ( e->next() != prev && e != h1); if ( e == h1) { // disconnected facet complexes - if ( hole != Halfedge_handle()) { + if ( hole != nullptr) { // The complex can be connected with // the hole at hprime. hprime->HBase::set_next( hole->next()); @@ -763,8 +763,8 @@ test_facet_indices( std::vector< std::size_t> indices) { // check if halfedge is already in the HDS and is not border halfedge Halfedge_handle v = get_vertex_to_edge_map(indices[i]); Vertex_handle w = index_to_vertex_map[indices[i+1]]; - if ( v != Halfedge_handle() - && get_vertex_to_edge_map(indices[i+1]) != Halfedge_handle()) { + if ( v != nullptr + && get_vertex_to_edge_map(indices[i+1]) != nullptr) { // cycle through halfedge-loop and find edge to indices[i+1] Halfedge_handle vstart = v; do { @@ -780,7 +780,7 @@ test_facet_indices( std::vector< std::size_t> indices) { // tested for non-manifold halfedges already, we just need to check // if the vertex indices[i] is not a closed manifold yet. Halfedge_handle v = get_vertex_to_edge_map(indices[i]); - if ( v != Halfedge_handle()) { + if ( v != nullptr) { Halfedge_handle vstart = v; do { v = v->next()->opposite(); diff --git a/STL_Extension/include/CGAL/In_place_list.h b/STL_Extension/include/CGAL/In_place_list.h index e19c8ca5e4d..3266d1ae674 100644 --- a/STL_Extension/include/CGAL/In_place_list.h +++ b/STL_Extension/include/CGAL/In_place_list.h @@ -86,6 +86,8 @@ namespace internal { bool operator==( const Self& x) const { return node == x.node; } bool operator!=( const Self& x) const { return node != x.node; } + bool operator==( std::nullptr_t) const { return node == nullptr; } + bool operator!=( std::nullptr_t) const { return node != nullptr; } bool operator< ( const Self& x) const { return node< x.node; } bool operator<=( const Self& x) const { return node<= x.node; } bool operator> ( const Self& x) const { return node> x.node; } @@ -139,6 +141,8 @@ namespace internal { bool operator==( const Self& x) const { return node == x.node; } bool operator!=( const Self& x) const { return node != x.node; } + bool operator==( std::nullptr_t) const { return node == nullptr; } + bool operator!=( std::nullptr_t) const { return node != nullptr; } bool operator< ( const Self& x) const { return node< x.node; } bool operator<=( const Self& x) const { return node<= x.node; } bool operator> ( const Self& x) const { return node> x.node; } From 6f9419fb153f01fdabc9786f1403deacc043f495 Mon Sep 17 00:00:00 2001 From: Marc Glisse Date: Wed, 28 Apr 2021 19:18:01 +0200 Subject: [PATCH 094/171] Disable /= with CGAL_NO_MPZF_DIVISION_OPERATOR --- Number_types/include/CGAL/Mpzf.h | 2 -- 1 file changed, 2 deletions(-) diff --git a/Number_types/include/CGAL/Mpzf.h b/Number_types/include/CGAL/Mpzf.h index 163da7fa066..60034bb3896 100644 --- a/Number_types/include/CGAL/Mpzf.h +++ b/Number_types/include/CGAL/Mpzf.h @@ -919,8 +919,6 @@ struct Mpzf { Mpzf& operator*=(Mpzf const&x){ *this=*this*x; return *this; } #ifdef CGAL_MPZF_DIVISION_OPERATOR Mpzf& operator/=(Mpzf const&x){ *this=*this/x; return *this; } -#else // not CGAL_MPZF_DIVISION_OPERATOR - Mpzf& operator/=(Mpzf const&x){ *this=division(*this,x); return *this; } #endif // not CGAL_MPZF_DIVISION_OPERATOR bool is_canonical () const { From 0ef8127c71fa06c7b0687a197276d7b069e4526c Mon Sep 17 00:00:00 2001 From: Giles Bathgate Date: Tue, 20 Apr 2021 20:20:58 +0100 Subject: [PATCH 095/171] The CGAL_NOEXCEPT macro is no longer needed --- .../include/CGAL/Combinatorial_map_iterators_base.h | 2 +- .../Developer_manual/Chapter_checks.txt | 3 +-- Installation/include/CGAL/config.h | 12 ------------ Nef_3/include/CGAL/Nef_3/K3_tree.h | 4 ++-- Nef_3/include/CGAL/Nef_3/SNC_point_locator.h | 4 ++-- Nef_S2/include/CGAL/Nef_S2/Sphere_map.h | 2 +- Nef_S2/include/CGAL/Nef_polyhedron_S2.h | 2 +- .../include/CGAL/Polyhedron_incremental_builder_3.h | 2 +- Polynomial/include/CGAL/Exponent_vector.h | 2 +- STL_Extension/include/CGAL/assertions.h | 2 ++ .../CGAL/Straight_skeleton_2/Straight_skeleton_aux.h | 2 +- Stream_support/include/CGAL/IO/VRML/VRML_2_ostream.h | 2 +- Surface_mesher/archive/include/CGAL/builder.h | 2 +- 13 files changed, 15 insertions(+), 26 deletions(-) diff --git a/Combinatorial_map/include/CGAL/Combinatorial_map_iterators_base.h b/Combinatorial_map/include/CGAL/Combinatorial_map_iterators_base.h index b0f2943c707..d000154f253 100644 --- a/Combinatorial_map/include/CGAL/Combinatorial_map_iterators_base.h +++ b/Combinatorial_map/include/CGAL/Combinatorial_map_iterators_base.h @@ -389,7 +389,7 @@ namespace CGAL { {} /// Destructor. - ~CMap_non_basic_iterator() CGAL_NOEXCEPT(CGAL_NO_ASSERTIONS_BOOL) + ~CMap_non_basic_iterator() noexcept(!CGAL_assertions) { CGAL_destructor_assertion( this->mmark_number!=Map::INVALID_MARK ); if (this->mmap->get_number_of_times_mark_reserved diff --git a/Documentation/doc/Documentation/Developer_manual/Chapter_checks.txt b/Documentation/doc/Documentation/Developer_manual/Chapter_checks.txt index 52083c63a03..601c7cc4354 100644 --- a/Documentation/doc/Documentation/Developer_manual/Chapter_checks.txt +++ b/Documentation/doc/Documentation/Developer_manual/Chapter_checks.txt @@ -243,8 +243,7 @@ and \cgalCite{cgal:a-esgc-98} (also available at https://www.boost.org/community/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 -C++11 and above, which provides the `noexcept` keyword. +`noexcept(!CGAL_assertions)`. \section secchecks_req_and_rec Requirements and recommendations diff --git a/Installation/include/CGAL/config.h b/Installation/include/CGAL/config.h index 76d6fd9366c..5ee324b0fdb 100644 --- a/Installation/include/CGAL/config.h +++ b/Installation/include/CGAL/config.h @@ -655,12 +655,6 @@ typedef const void * Nullptr_t; // Anticipate C++0x's std::nullptr_t } //namespace CGAL -//Support for c++11 noexcept -#if BOOST_VERSION > 104600 && !defined(BOOST_NO_CXX11_NOEXCEPT) && !defined(BOOST_NO_NOEXCEPT) -#define CGAL_NOEXCEPT(x) noexcept(x) -#else -#define CGAL_NOEXCEPT(x) -#endif // The fallthrough attribute // See for clang: @@ -684,12 +678,6 @@ typedef const void * Nullptr_t; // Anticipate C++0x's std::nullptr_t #define CGAL_CFG_BOOST_VARIANT_SWAP_BUG 1 #endif -#ifndef CGAL_NO_ASSERTIONS -# define CGAL_NO_ASSERTIONS_BOOL false -#else -# define CGAL_NO_ASSERTIONS_BOOL true -#endif - #if defined( __INTEL_COMPILER) #define CGAL_ADDITIONAL_VARIANT_FOR_ICL ,int #else diff --git a/Nef_3/include/CGAL/Nef_3/K3_tree.h b/Nef_3/include/CGAL/Nef_3/K3_tree.h index 9b7b32ced17..d79b4e8892d 100644 --- a/Nef_3/include/CGAL/Nef_3/K3_tree.h +++ b/Nef_3/include/CGAL/Nef_3/K3_tree.h @@ -445,7 +445,7 @@ friend std::ostream& operator<< } /* -~Node() CGAL_NOEXCEPT(CGAL_NO_ASSERTIONS_BOOL) +~Node() noexcept(!CGAL_assertions) { CGAL_NEF_TRACEN("~Node: deleting node..."); CGAL_destructor_assertion_catch( @@ -1119,7 +1119,7 @@ bool update( Node_handle node, return (left_updated || right_updated); } /* -~K3_tree() CGAL_NOEXCEPT(CGAL_NO_ASSERTIONS_BOOL) +~K3_tree() noexcept(!CGAL_assertions) { CGAL_NEF_TRACEN("~K3_tree: deleting root..."); CGAL_destructor_assertion_catch( diff --git a/Nef_3/include/CGAL/Nef_3/SNC_point_locator.h b/Nef_3/include/CGAL/Nef_3/SNC_point_locator.h index 74dd49f210d..fdf9d8da189 100644 --- a/Nef_3/include/CGAL/Nef_3/SNC_point_locator.h +++ b/Nef_3/include/CGAL/Nef_3/SNC_point_locator.h @@ -126,7 +126,7 @@ public: virtual void add_vertex(Vertex_handle) {} - virtual ~SNC_point_locator() CGAL_NOEXCEPT(CGAL_NO_ASSERTIONS_BOOL) + virtual ~SNC_point_locator() noexcept(!CGAL_assertions) { CGAL_NEF_CLOG(""); CGAL_NEF_CLOG("construction_time: "< inline void swap(CGAL::Exponent_vector& ev1, CGAL::Exponent_vector& ev2) - CGAL_NOEXCEPT(std::is_nothrow_move_constructible::value + noexcept(std::is_nothrow_move_constructible::value && std::is_nothrow_move_assignable::value) { ev1.swap(ev2); diff --git a/STL_Extension/include/CGAL/assertions.h b/STL_Extension/include/CGAL/assertions.h index e13f181f970..84b48811faf 100644 --- a/STL_Extension/include/CGAL/assertions.h +++ b/STL_Extension/include/CGAL/assertions.h @@ -77,6 +77,7 @@ inline bool possibly(Uncertain c); // ---------- #if defined(CGAL_NO_ASSERTIONS) +# define CGAL_assertions false # define CGAL_assertion(EX) (static_cast(0)) # define CGAL_destructor_assertion(EX) (static_cast(0)) # define CGAL_destructor_assertion_catch(CODE) CODE @@ -90,6 +91,7 @@ inline bool possibly(Uncertain c); # define CGAL_assume_code(CODE) CGAL_assertion_code(CODE) # endif // not def CGAL_ASSUME #else // no CGAL_NO_ASSERTIONS +# define CGAL_assertions true # define CGAL_assertion(EX) \ (CGAL::possibly(EX)?(static_cast(0)): ::CGAL::assertion_fail( # EX , __FILE__, __LINE__)) # if __cpp_lib_uncaught_exceptions || ( _MSVC_LANG >= 201703L ) // C++17 diff --git a/Straight_skeleton_2/include/CGAL/Straight_skeleton_2/Straight_skeleton_aux.h b/Straight_skeleton_2/include/CGAL/Straight_skeleton_2/Straight_skeleton_aux.h index 7e642e8b10b..ea762999ca8 100644 --- a/Straight_skeleton_2/include/CGAL/Straight_skeleton_2/Straight_skeleton_aux.h +++ b/Straight_skeleton_2/include/CGAL/Straight_skeleton_2/Straight_skeleton_aux.h @@ -164,7 +164,7 @@ private: Ref_counted_base& operator=( Ref_counted_base const &); protected: Ref_counted_base(): mCount(0) {} - virtual ~Ref_counted_base() CGAL_NOEXCEPT(CGAL_NO_ASSERTIONS_BOOL) {} + virtual ~Ref_counted_base() noexcept(!CGAL_assertions) {} public: void AddRef() const { ++mCount; } void Release() const diff --git a/Stream_support/include/CGAL/IO/VRML/VRML_2_ostream.h b/Stream_support/include/CGAL/IO/VRML/VRML_2_ostream.h index d200643068d..0eb0fc4b90f 100644 --- a/Stream_support/include/CGAL/IO/VRML/VRML_2_ostream.h +++ b/Stream_support/include/CGAL/IO/VRML/VRML_2_ostream.h @@ -30,7 +30,7 @@ class VRML_2_ostream public: VRML_2_ostream() : m_os(nullptr) {} VRML_2_ostream(std::ostream& o) : m_os(&o) { header(); } - ~VRML_2_ostream() CGAL_NOEXCEPT(CGAL_NO_ASSERTIONS_BOOL) + ~VRML_2_ostream() noexcept(!CGAL_assertions) { CGAL_destructor_assertion_catch( close(); diff --git a/Surface_mesher/archive/include/CGAL/builder.h b/Surface_mesher/archive/include/CGAL/builder.h index fc0cd01ab6b..94000bddf48 100644 --- a/Surface_mesher/archive/include/CGAL/builder.h +++ b/Surface_mesher/archive/include/CGAL/builder.h @@ -175,7 +175,7 @@ public: CGAL_assertion_code(check_protocoll = 0;) } - ~Enriched_polyhedron_incremental_builder_3() CGAL_NOEXCEPT(CGAL_NO_ASSERTIONS_BOOL) + ~Enriched_polyhedron_incremental_builder_3() noexcept(!CGAL_assertions) { CGAL_destructor_assertion( check_protocoll == 0); } From 254f1bf6b9fad5ad735716d31586b7acf92765e3 Mon Sep 17 00:00:00 2001 From: Giles Bathgate Date: Tue, 20 Apr 2021 20:20:58 +0100 Subject: [PATCH 096/171] Add conditional noexcept to Handle/Handle_for --- STL_Extension/include/CGAL/Handle.h | 5 ++--- STL_Extension/include/CGAL/Handle_for.h | 8 ++++---- STL_Extension/include/CGAL/assertions.h | 2 ++ 3 files changed, 8 insertions(+), 7 deletions(-) diff --git a/STL_Extension/include/CGAL/Handle.h b/STL_Extension/include/CGAL/Handle.h index e39f538742c..98a50681c6d 100644 --- a/STL_Extension/include/CGAL/Handle.h +++ b/STL_Extension/include/CGAL/Handle.h @@ -46,8 +46,7 @@ class Handle Handle() noexcept : PTR(static_cast(0)) {} - // FIXME: if the precondition throws in a noexcept function, the program terminates - Handle(const Handle& x) noexcept + Handle(const Handle& x) noexcept(!(CGAL_preconditions || CGAL_assertions)) { CGAL_precondition( x.PTR != static_cast(0) ); PTR = x.PTR; @@ -68,7 +67,7 @@ class Handle } Handle& - operator=(const Handle& x) noexcept + operator=(const Handle& x) noexcept(!CGAL_preconditions) { CGAL_precondition( x.PTR != static_cast(0) ); x.PTR->count++; diff --git a/STL_Extension/include/CGAL/Handle_for.h b/STL_Extension/include/CGAL/Handle_for.h index 97543f58db8..ce0d0b3296f 100644 --- a/STL_Extension/include/CGAL/Handle_for.h +++ b/STL_Extension/include/CGAL/Handle_for.h @@ -102,7 +102,7 @@ public: ptr_ = p; } - Handle_for(const Handle_for& h) noexcept + Handle_for(const Handle_for& h) noexcept(!CGAL_assertions) : ptr_(h.ptr_) { CGAL_assume (ptr_->count > 0); @@ -110,7 +110,7 @@ public: } Handle_for& - operator=(const Handle_for& h) noexcept + operator=(const Handle_for& h) noexcept(!CGAL_assertions) { Handle_for tmp = h; swap(tmp); @@ -149,9 +149,9 @@ public: return *this; } - ~Handle_for() noexcept + ~Handle_for() { - try{ + try { if (--(ptr_->count) == 0) { Allocator_traits::destroy(allocator, ptr_); allocator.deallocate( ptr_, 1); diff --git a/STL_Extension/include/CGAL/assertions.h b/STL_Extension/include/CGAL/assertions.h index 84b48811faf..5908a4a9495 100644 --- a/STL_Extension/include/CGAL/assertions.h +++ b/STL_Extension/include/CGAL/assertions.h @@ -193,10 +193,12 @@ inline bool possibly(Uncertain c); // ------------- #if defined(CGAL_NO_PRECONDITIONS) +# define CGAL_preconditions false # define CGAL_precondition(EX) (static_cast(0)) # define CGAL_precondition_msg(EX,MSG) (static_cast(0)) # define CGAL_precondition_code(CODE) #else +# define CGAL_preconditions true # define CGAL_precondition(EX) \ (CGAL::possibly(EX)?(static_cast(0)): ::CGAL::precondition_fail( # EX , __FILE__, __LINE__)) # define CGAL_precondition_msg(EX,MSG) \ From 33ea1f7c3b19797ded92512530b51924ed6915de Mon Sep 17 00:00:00 2001 From: Giles Bathgate Date: Tue, 20 Apr 2021 20:20:59 +0100 Subject: [PATCH 097/171] Add destructor assertion catch to Multiset --- STL_Extension/include/CGAL/Multiset.h | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/STL_Extension/include/CGAL/Multiset.h b/STL_Extension/include/CGAL/Multiset.h index 5be3bc3b41c..5fb92ffd693 100644 --- a/STL_Extension/include/CGAL/Multiset.h +++ b/STL_Extension/include/CGAL/Multiset.h @@ -590,7 +590,7 @@ public: /*! * Destructor. [takes O(n) operations] */ - virtual ~Multiset (); + virtual ~Multiset () noexcept(!CGAL_assertions); /*! * Assignment operator. [takes O(n) operations] @@ -1565,14 +1565,16 @@ Multiset::Multiset (const Self& t // Destructor. // template -Multiset::~Multiset () +Multiset::~Multiset () noexcept(!CGAL_assertions) { if (UseCompactContainer::value) return; // Delete the entire tree recursively. - if (rootP != nullptr) - _destroy (rootP); + CGAL_destructor_assertion_catch( + if (rootP != nullptr) + _destroy (rootP); + ); rootP = nullptr; beginNode.parentP = nullptr; From 5ecd85248ac6d3300ccb86aa198db309037258af Mon Sep 17 00:00:00 2001 From: Giles Bathgate Date: Mon, 26 Apr 2021 21:37:02 +0100 Subject: [PATCH 098/171] Fix capitalisation of macro name. --- .../include/CGAL/Combinatorial_map_iterators_base.h | 2 +- .../doc/Documentation/Developer_manual/Chapter_checks.txt | 2 +- Nef_3/include/CGAL/Nef_3/K3_tree.h | 4 ++-- Nef_3/include/CGAL/Nef_3/SNC_point_locator.h | 4 ++-- Nef_S2/include/CGAL/Nef_S2/Sphere_map.h | 2 +- Nef_S2/include/CGAL/Nef_polyhedron_S2.h | 2 +- .../include/CGAL/Polyhedron_incremental_builder_3.h | 2 +- STL_Extension/include/CGAL/Handle.h | 4 ++-- STL_Extension/include/CGAL/Handle_for.h | 4 ++-- STL_Extension/include/CGAL/Multiset.h | 4 ++-- STL_Extension/include/CGAL/assertions.h | 8 ++++---- .../CGAL/Straight_skeleton_2/Straight_skeleton_aux.h | 2 +- Stream_support/include/CGAL/IO/VRML/VRML_2_ostream.h | 2 +- Surface_mesher/archive/include/CGAL/builder.h | 2 +- 14 files changed, 22 insertions(+), 22 deletions(-) diff --git a/Combinatorial_map/include/CGAL/Combinatorial_map_iterators_base.h b/Combinatorial_map/include/CGAL/Combinatorial_map_iterators_base.h index d000154f253..78d14522eb9 100644 --- a/Combinatorial_map/include/CGAL/Combinatorial_map_iterators_base.h +++ b/Combinatorial_map/include/CGAL/Combinatorial_map_iterators_base.h @@ -389,7 +389,7 @@ namespace CGAL { {} /// Destructor. - ~CMap_non_basic_iterator() noexcept(!CGAL_assertions) + ~CMap_non_basic_iterator() noexcept(!CGAL_ASSERTIONS_ENABLED) { CGAL_destructor_assertion( this->mmark_number!=Map::INVALID_MARK ); if (this->mmap->get_number_of_times_mark_reserved diff --git a/Documentation/doc/Documentation/Developer_manual/Chapter_checks.txt b/Documentation/doc/Documentation/Developer_manual/Chapter_checks.txt index 601c7cc4354..1a6fb78e4cb 100644 --- a/Documentation/doc/Documentation/Developer_manual/Chapter_checks.txt +++ b/Documentation/doc/Documentation/Developer_manual/Chapter_checks.txt @@ -243,7 +243,7 @@ and \cgalCite{cgal:a-esgc-98} (also available at https://www.boost.org/community/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 -`noexcept(!CGAL_assertions)`. +`noexcept(!CGAL_ASSERTIONS_ENABLED)`. \section secchecks_req_and_rec Requirements and recommendations diff --git a/Nef_3/include/CGAL/Nef_3/K3_tree.h b/Nef_3/include/CGAL/Nef_3/K3_tree.h index d79b4e8892d..6a3a62da2cf 100644 --- a/Nef_3/include/CGAL/Nef_3/K3_tree.h +++ b/Nef_3/include/CGAL/Nef_3/K3_tree.h @@ -445,7 +445,7 @@ friend std::ostream& operator<< } /* -~Node() noexcept(!CGAL_assertions) +~Node() noexcept(!CGAL_ASSERTIONS_ENABLED) { CGAL_NEF_TRACEN("~Node: deleting node..."); CGAL_destructor_assertion_catch( @@ -1119,7 +1119,7 @@ bool update( Node_handle node, return (left_updated || right_updated); } /* -~K3_tree() noexcept(!CGAL_assertions) +~K3_tree() noexcept(!CGAL_ASSERTIONS_ENABLED) { CGAL_NEF_TRACEN("~K3_tree: deleting root..."); CGAL_destructor_assertion_catch( diff --git a/Nef_3/include/CGAL/Nef_3/SNC_point_locator.h b/Nef_3/include/CGAL/Nef_3/SNC_point_locator.h index fdf9d8da189..10fdcd01a9b 100644 --- a/Nef_3/include/CGAL/Nef_3/SNC_point_locator.h +++ b/Nef_3/include/CGAL/Nef_3/SNC_point_locator.h @@ -126,7 +126,7 @@ public: virtual void add_vertex(Vertex_handle) {} - virtual ~SNC_point_locator() noexcept(!CGAL_assertions) + virtual ~SNC_point_locator() noexcept(!CGAL_ASSERTIONS_ENABLED) { CGAL_NEF_CLOG(""); CGAL_NEF_CLOG("construction_time: "<(0)) {} - Handle(const Handle& x) noexcept(!(CGAL_preconditions || CGAL_assertions)) + Handle(const Handle& x) noexcept(!(CGAL_PRECONDITIONS_ENABLED || CGAL_ASSERTIONS_ENABLED)) { CGAL_precondition( x.PTR != static_cast(0) ); PTR = x.PTR; @@ -67,7 +67,7 @@ class Handle } Handle& - operator=(const Handle& x) noexcept(!CGAL_preconditions) + operator=(const Handle& x) noexcept(!CGAL_PRECONDITIONS_ENABLED) { CGAL_precondition( x.PTR != static_cast(0) ); x.PTR->count++; diff --git a/STL_Extension/include/CGAL/Handle_for.h b/STL_Extension/include/CGAL/Handle_for.h index ce0d0b3296f..71ac6739e36 100644 --- a/STL_Extension/include/CGAL/Handle_for.h +++ b/STL_Extension/include/CGAL/Handle_for.h @@ -102,7 +102,7 @@ public: ptr_ = p; } - Handle_for(const Handle_for& h) noexcept(!CGAL_assertions) + Handle_for(const Handle_for& h) noexcept(!CGAL_ASSERTIONS_ENABLED) : ptr_(h.ptr_) { CGAL_assume (ptr_->count > 0); @@ -110,7 +110,7 @@ public: } Handle_for& - operator=(const Handle_for& h) noexcept(!CGAL_assertions) + operator=(const Handle_for& h) noexcept(!CGAL_ASSERTIONS_ENABLED) { Handle_for tmp = h; swap(tmp); diff --git a/STL_Extension/include/CGAL/Multiset.h b/STL_Extension/include/CGAL/Multiset.h index 5fb92ffd693..3ef21028cd6 100644 --- a/STL_Extension/include/CGAL/Multiset.h +++ b/STL_Extension/include/CGAL/Multiset.h @@ -590,7 +590,7 @@ public: /*! * Destructor. [takes O(n) operations] */ - virtual ~Multiset () noexcept(!CGAL_assertions); + virtual ~Multiset () noexcept(!CGAL_ASSERTIONS_ENABLED); /*! * Assignment operator. [takes O(n) operations] @@ -1565,7 +1565,7 @@ Multiset::Multiset (const Self& t // Destructor. // template -Multiset::~Multiset () noexcept(!CGAL_assertions) +Multiset::~Multiset () noexcept(!CGAL_ASSERTIONS_ENABLED) { if (UseCompactContainer::value) return; diff --git a/STL_Extension/include/CGAL/assertions.h b/STL_Extension/include/CGAL/assertions.h index 5908a4a9495..f3de2c1e8b2 100644 --- a/STL_Extension/include/CGAL/assertions.h +++ b/STL_Extension/include/CGAL/assertions.h @@ -77,7 +77,7 @@ inline bool possibly(Uncertain c); // ---------- #if defined(CGAL_NO_ASSERTIONS) -# define CGAL_assertions false +# define CGAL_ASSERTIONS_ENABLED false # define CGAL_assertion(EX) (static_cast(0)) # define CGAL_destructor_assertion(EX) (static_cast(0)) # define CGAL_destructor_assertion_catch(CODE) CODE @@ -91,7 +91,7 @@ inline bool possibly(Uncertain c); # define CGAL_assume_code(CODE) CGAL_assertion_code(CODE) # endif // not def CGAL_ASSUME #else // no CGAL_NO_ASSERTIONS -# define CGAL_assertions true +# define CGAL_ASSERTIONS_ENABLED true # define CGAL_assertion(EX) \ (CGAL::possibly(EX)?(static_cast(0)): ::CGAL::assertion_fail( # EX , __FILE__, __LINE__)) # if __cpp_lib_uncaught_exceptions || ( _MSVC_LANG >= 201703L ) // C++17 @@ -193,12 +193,12 @@ inline bool possibly(Uncertain c); // ------------- #if defined(CGAL_NO_PRECONDITIONS) -# define CGAL_preconditions false +# define CGAL_PRECONDITIONS_ENABLED false # define CGAL_precondition(EX) (static_cast(0)) # define CGAL_precondition_msg(EX,MSG) (static_cast(0)) # define CGAL_precondition_code(CODE) #else -# define CGAL_preconditions true +# define CGAL_PRECONDITIONS_ENABLED true # define CGAL_precondition(EX) \ (CGAL::possibly(EX)?(static_cast(0)): ::CGAL::precondition_fail( # EX , __FILE__, __LINE__)) # define CGAL_precondition_msg(EX,MSG) \ diff --git a/Straight_skeleton_2/include/CGAL/Straight_skeleton_2/Straight_skeleton_aux.h b/Straight_skeleton_2/include/CGAL/Straight_skeleton_2/Straight_skeleton_aux.h index ea762999ca8..e22b0bbe422 100644 --- a/Straight_skeleton_2/include/CGAL/Straight_skeleton_2/Straight_skeleton_aux.h +++ b/Straight_skeleton_2/include/CGAL/Straight_skeleton_2/Straight_skeleton_aux.h @@ -164,7 +164,7 @@ private: Ref_counted_base& operator=( Ref_counted_base const &); protected: Ref_counted_base(): mCount(0) {} - virtual ~Ref_counted_base() noexcept(!CGAL_assertions) {} + virtual ~Ref_counted_base() noexcept(!CGAL_ASSERTIONS_ENABLED) {} public: void AddRef() const { ++mCount; } void Release() const diff --git a/Stream_support/include/CGAL/IO/VRML/VRML_2_ostream.h b/Stream_support/include/CGAL/IO/VRML/VRML_2_ostream.h index 0eb0fc4b90f..d664810e8ee 100644 --- a/Stream_support/include/CGAL/IO/VRML/VRML_2_ostream.h +++ b/Stream_support/include/CGAL/IO/VRML/VRML_2_ostream.h @@ -30,7 +30,7 @@ class VRML_2_ostream public: VRML_2_ostream() : m_os(nullptr) {} VRML_2_ostream(std::ostream& o) : m_os(&o) { header(); } - ~VRML_2_ostream() noexcept(!CGAL_assertions) + ~VRML_2_ostream() noexcept(!CGAL_ASSERTIONS_ENABLED) { CGAL_destructor_assertion_catch( close(); diff --git a/Surface_mesher/archive/include/CGAL/builder.h b/Surface_mesher/archive/include/CGAL/builder.h index 94000bddf48..7984469e674 100644 --- a/Surface_mesher/archive/include/CGAL/builder.h +++ b/Surface_mesher/archive/include/CGAL/builder.h @@ -175,7 +175,7 @@ public: CGAL_assertion_code(check_protocoll = 0;) } - ~Enriched_polyhedron_incremental_builder_3() noexcept(!CGAL_assertions) + ~Enriched_polyhedron_incremental_builder_3() noexcept(!CGAL_ASSERTIONS_ENABLED) { CGAL_destructor_assertion( check_protocoll == 0); } From 178432178752bc83af067c8d33a0943cddbff288 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mael=20Rouxel-Labb=C3=A9?= Date: Thu, 29 Apr 2021 23:20:34 +0200 Subject: [PATCH 099/171] Unofficially allow computing duals of non-solid entities The ghost faces are actually proper Delaunay faces and their dual is correctly computed with the CGAL traits (it computes the ray using the normal of the face). Leaving the assertions as a deterrence. --- .../include/CGAL/Delaunay_triangulation_on_sphere_2.h | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/Triangulation_on_sphere_2/include/CGAL/Delaunay_triangulation_on_sphere_2.h b/Triangulation_on_sphere_2/include/CGAL/Delaunay_triangulation_on_sphere_2.h index b883507a5e0..33a14b828e7 100644 --- a/Triangulation_on_sphere_2/include/CGAL/Delaunay_triangulation_on_sphere_2.h +++ b/Triangulation_on_sphere_2/include/CGAL/Delaunay_triangulation_on_sphere_2.h @@ -1051,7 +1051,7 @@ Delaunay_triangulation_on_sphere_2:: circumcenter_on_sphere(const Face_handle f) const { CGAL_precondition(dimension() == 2); - CGAL_precondition(!is_ghost(f)); +// CGAL_precondition(!is_ghost(f)); return circumcenter_on_sphere(point(f, 0), point(f, 1), point(f, 2)); } @@ -1062,7 +1062,7 @@ Delaunay_triangulation_on_sphere_2:: dual_on_sphere(const Face_handle f) const { CGAL_precondition(dimension() == 2); - CGAL_precondition(!is_ghost(f)); +// CGAL_precondition(!is_ghost(f)); return circumcenter_on_sphere(f); } @@ -1073,7 +1073,7 @@ Delaunay_triangulation_on_sphere_2:: dual_on_sphere(const Edge& e) const { CGAL_precondition(dimension() == 2); - CGAL_precondition(!is_ghost(e)); +// CGAL_precondition(!is_ghost(e)); return geom_traits().construct_arc_on_sphere_2_object()(dual_on_sphere(e.first), dual_on_sphere(e.first->neighbor(e.second))); From 76b66497df402ee2499edf9b28b5b24d85d2c3d3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mael=20Rouxel-Labb=C3=A9?= Date: Thu, 29 Apr 2021 23:22:47 +0200 Subject: [PATCH 100/171] Fix ToS2's swap implementation --- .../CGAL/Delaunay_triangulation_on_sphere_traits_2.h | 11 +++++++++++ .../include/CGAL/Triangulation_on_sphere_2.h | 3 ++- 2 files changed, 13 insertions(+), 1 deletion(-) diff --git a/Triangulation_on_sphere_2/include/CGAL/Delaunay_triangulation_on_sphere_traits_2.h b/Triangulation_on_sphere_2/include/CGAL/Delaunay_triangulation_on_sphere_traits_2.h index 5e452819cd3..95c12831583 100644 --- a/Triangulation_on_sphere_2/include/CGAL/Delaunay_triangulation_on_sphere_traits_2.h +++ b/Triangulation_on_sphere_2/include/CGAL/Delaunay_triangulation_on_sphere_traits_2.h @@ -305,6 +305,17 @@ public: initialize_bounds(); } + friend void swap(Self& l, Self& r) + { + using std::swap; + swap(static_cast(l), static_cast(r)); + swap(static_cast(l), static_cast(r)); + swap(l._center, r._center); + swap(l._radius, r._radius); + l.initialize_bounds(); + r.initialize_bounds(); + } + public: const LK& lk() const { return static_cast(*this); } const SK& sk() const { return static_cast(*this); } diff --git a/Triangulation_on_sphere_2/include/CGAL/Triangulation_on_sphere_2.h b/Triangulation_on_sphere_2/include/CGAL/Triangulation_on_sphere_2.h index 6f449381eac..77310b31801 100644 --- a/Triangulation_on_sphere_2/include/CGAL/Triangulation_on_sphere_2.h +++ b/Triangulation_on_sphere_2/include/CGAL/Triangulation_on_sphere_2.h @@ -491,8 +491,9 @@ void Triangulation_on_sphere_2:: swap(Triangulation_on_sphere_2& tr) { + using std::swap; _tds.swap(tr._tds); - std::swap(tr.geom_traits(), geom_traits()); + swap(_gt, tr._gt); } template From 2fa0c0b0cad262039eabde1c05f3bc90f39357ec Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mael=20Rouxel-Labb=C3=A9?= Date: Thu, 29 Apr 2021 23:23:15 +0200 Subject: [PATCH 101/171] Add trivial is_infinite()/finite_xxx() functions in ToS2 Needed for adapters such as Voronoi_diagram_2, alpha shapes, etc. --- .../include/CGAL/Triangulation_on_sphere_2.h | 24 +++++++++++++++++++ 1 file changed, 24 insertions(+) diff --git a/Triangulation_on_sphere_2/include/CGAL/Triangulation_on_sphere_2.h b/Triangulation_on_sphere_2/include/CGAL/Triangulation_on_sphere_2.h index 77310b31801..9d8aac545a7 100644 --- a/Triangulation_on_sphere_2/include/CGAL/Triangulation_on_sphere_2.h +++ b/Triangulation_on_sphere_2/include/CGAL/Triangulation_on_sphere_2.h @@ -200,12 +200,23 @@ public: return is_contour(e.first, e.second); } + template + bool is_infinite(const T&, int = 0) const + { + return false; + } + //-----------------------TRAVERSING : ITERATORS AND CIRCULATORS----------------------------------- typedef typename Tds::Vertex_iterator Vertices_iterator; + typedef typename Tds::Vertex_iterator All_vertices_iterator; typedef typename Tds::Edge_iterator All_edges_iterator; typedef typename Tds::Face_iterator All_faces_iterator; + typedef typename Tds::Vertex_iterator Finite_vertices_iterator; + typedef typename Tds::Edge_iterator Finite_edges_iterator; + typedef typename Tds::Face_iterator Finite_faces_iterator; + typedef typename Tds::Vertex_circulator Vertex_circulator; typedef typename Tds::Edge_circulator Edge_circulator; typedef typename Tds::Face_circulator Face_circulator; @@ -267,14 +278,18 @@ public: typedef boost::transform_iterator Point_iterator; typedef Iterator_range Points; + // -- faces All_faces_iterator all_faces_begin() const { return _tds.faces_begin(); } All_faces_iterator all_faces_end() const { return _tds.faces_end(); } + Finite_faces_iterator finite_faces_begin() const { return _tds.faces_begin(); } + Finite_faces_iterator finite_faces_end() const { return _tds.faces_end(); } All_face_handles all_face_handles() const { return make_prevent_deref_range(all_faces_begin(), all_faces_end()); } + // -- edges Contour_edges_iterator contour_edges_begin() const { if(dimension() < 1) @@ -326,10 +341,19 @@ public: All_edges_iterator all_edges_begin() const { return _tds.edges_begin(); } All_edges_iterator all_edges_end() const { return _tds.edges_end(); } + Finite_edges_iterator finite_edges_begin() const { return _tds.edges_begin(); } + Finite_edges_iterator finite_edges_end() const { return _tds.edges_end(); } + All_edges all_edges() const { return _tds.edges(); } + // -- vertices Vertices_iterator vertices_begin() const { return _tds.vertices_begin(); } Vertices_iterator vertices_end() const { return _tds.vertices_end(); } + All_vertices_iterator all_vertices_begin() const { return _tds.vertices_begin(); } + All_vertices_iterator all_vertices_end() const { return _tds.vertices_end(); } + Finite_vertices_iterator finite_vertices_begin() const { return _tds.vertices_begin(); } + Finite_vertices_iterator finite_vertices_end() const { return _tds.vertices_end(); } + Vertex_handles vertex_handles() const { return make_prevent_deref_range(vertices_begin(), vertices_end()); From 4df6e497ef83274b506f4fa94cb2b2c60743db5b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mael=20Rouxel-Labb=C3=A9?= Date: Thu, 29 Apr 2021 23:24:11 +0200 Subject: [PATCH 102/171] Clarify the need for Eigen when calling arc subsampling utilities --- .../internal/arc_on_sphere_2_subsampling.h | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/Triangulation_on_sphere_2/include/CGAL/Triangulation_on_sphere_2/internal/arc_on_sphere_2_subsampling.h b/Triangulation_on_sphere_2/include/CGAL/Triangulation_on_sphere_2/internal/arc_on_sphere_2_subsampling.h index c7f9c349de6..b04b2552000 100644 --- a/Triangulation_on_sphere_2/include/CGAL/Triangulation_on_sphere_2/internal/arc_on_sphere_2_subsampling.h +++ b/Triangulation_on_sphere_2/include/CGAL/Triangulation_on_sphere_2/internal/arc_on_sphere_2_subsampling.h @@ -15,9 +15,11 @@ #include -#ifdef CGAL_EIGEN3_ENABLED +#include +#ifdef CGAL_EIGEN3_ENABLED #include +#endif #include #include @@ -34,8 +36,12 @@ double get_theta( typename Kernel::Point_3& pt, { typedef typename Kernel::FT FT; +#ifdef CGAL_EIGEN3_ENABLED typedef Eigen::Matrix Matrix; typedef Eigen::Matrix Col; +#else + CGAL_static_assertion(false, "Eigen is required to perform arc subsampling!"); +#endif auto V1c = V1.cartesian_begin(), V2c = V2.cartesian_begin(), V3c = V3.cartesian_begin(); @@ -154,6 +160,4 @@ void subsample_arc_on_sphere_2(const ArcOnSphere& arc, } // namespace Triangulations_on_sphere_2 } // namespace CGAL -#endif // CGAL_EIGEN3_ENABLED - #endif // CGAL_TOS2_INTERNAL_ARC_ON_SPHERE_SUBSAMPLING_H From 3816336a023d3727c52c6fa6bfe5b4b7a6344865 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mael=20Rouxel-Labb=C3=A9?= Date: Thu, 29 Apr 2021 23:24:40 +0200 Subject: [PATCH 103/171] Avoid compilation error in Identity_edge_rejector Some triangulation classes use the same type for all_ and finite_ edges --- .../Voronoi_diagram_2/Identity_rejectors.h | 20 +++++-------------- 1 file changed, 5 insertions(+), 15 deletions(-) diff --git a/Voronoi_diagram_2/include/CGAL/Voronoi_diagram_2/Identity_rejectors.h b/Voronoi_diagram_2/include/CGAL/Voronoi_diagram_2/Identity_rejectors.h index 4bbf7c67b44..5e1e2903af4 100644 --- a/Voronoi_diagram_2/include/CGAL/Voronoi_diagram_2/Identity_rejectors.h +++ b/Voronoi_diagram_2/include/CGAL/Voronoi_diagram_2/Identity_rejectors.h @@ -53,22 +53,12 @@ struct Identity_edge_rejector return false; } - bool operator()(const Delaunay_graph& , const Edge& ) const { - return false; - } + // handles Edge, All_edges_iterator, Finite_edges_iterator, Edge_circulator... + // use a single template in case some of these types (typically All_edges_iterator + // and Finite_edges_iterator) are equal - bool operator()(const Delaunay_graph& , - const All_edges_iterator& ) const { - return false; - } - - bool operator()(const Delaunay_graph& , - const Finite_edges_iterator& ) const { - return false; - } - - bool operator()(const Delaunay_graph& , - const Edge_circulator& ) const { + template + bool operator()(const Delaunay_graph& , const E& ) const { return false; } }; From f98b3b687db85ceeaaa39d928534accd371cee5f Mon Sep 17 00:00:00 2001 From: Maxime Gimeno Date: Fri, 30 Apr 2021 09:43:23 +0200 Subject: [PATCH 104/171] Fix warning --- Triangulation_3/demo/Triangulation_3/Scene.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Triangulation_3/demo/Triangulation_3/Scene.h b/Triangulation_3/demo/Triangulation_3/Scene.h index 45d2e1887d1..4588fae8475 100644 --- a/Triangulation_3/demo/Triangulation_3/Scene.h +++ b/Triangulation_3/demo/Triangulation_3/Scene.h @@ -16,7 +16,7 @@ public: public: inline void setViewer(CGAL::QGLViewer* v) { m_viewer = v; } inline void showError(const QString & msg) { - if(!m_viewer) m_viewer->displayMessage( msg ); + if(m_viewer != nullptr) m_viewer->displayMessage( msg ); } inline bool isDTEmpty() { return m_dt.number_of_vertices()==0; } inline void eraseOldData() { m_dt.clear(); m_vhArray.clear(); } From 69a489039b386eb1cb7d58524c4c70d876d112aa Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?S=C3=A9bastien=20Loriot?= Date: Fri, 30 Apr 2021 11:31:02 +0200 Subject: [PATCH 105/171] remove unused variable --- .../include/CGAL/Homogeneous/Aff_transformationH3.h | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/Homogeneous_kernel/include/CGAL/Homogeneous/Aff_transformationH3.h b/Homogeneous_kernel/include/CGAL/Homogeneous/Aff_transformationH3.h index efb21c829e2..f269496d79d 100644 --- a/Homogeneous_kernel/include/CGAL/Homogeneous/Aff_transformationH3.h +++ b/Homogeneous_kernel/include/CGAL/Homogeneous/Aff_transformationH3.h @@ -94,7 +94,9 @@ public: virtual FT cartesian(int i, int j) const = 0; - virtual Aff_transformation_3 compose(const Aff_transformation_rep_baseH3* aff) const { return Aff_transformation_3(); } + // this function has a default here as it is only used for "pure" scaling and translation + // and not for the other types (Identity and general case) + virtual Aff_transformation_3 compose(const Aff_transformation_rep_baseH3*) const { return Aff_transformation_3(); } }; template < class R_ > From e94127c23c5fe519bb1a46bcbc67f4febc81817a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mael=20Rouxel-Labb=C3=A9?= Date: Fri, 30 Apr 2021 15:11:41 +0200 Subject: [PATCH 106/171] Add adaptation traits for ToS2 --- ...angulation_on_sphere_adaptation_traits_2.h | 62 +++++++++++++++++++ .../Voronoi_diagram_2/Construct_dual_points.h | 25 ++++++++ .../CGAL/Voronoi_diagram_2/Site_accessors.h | 33 ++++++++-- 3 files changed, 114 insertions(+), 6 deletions(-) create mode 100644 Voronoi_diagram_2/include/CGAL/Delaunay_triangulation_on_sphere_adaptation_traits_2.h diff --git a/Voronoi_diagram_2/include/CGAL/Delaunay_triangulation_on_sphere_adaptation_traits_2.h b/Voronoi_diagram_2/include/CGAL/Delaunay_triangulation_on_sphere_adaptation_traits_2.h new file mode 100644 index 00000000000..a2733336e5b --- /dev/null +++ b/Voronoi_diagram_2/include/CGAL/Delaunay_triangulation_on_sphere_adaptation_traits_2.h @@ -0,0 +1,62 @@ +// Copyright (c) 2021 GeometryFactory +// All rights reserved. +// +// This file is part of CGAL (www.cgal.org). +// +// $URL$ +// $Id$ +// SPDX-License-Identifier: GPL-3.0-or-later OR LicenseRef-Commercial +// +// +// Author(s) : Mael Rouxel-Labbé + +#ifndef CGAL_DELAUNAY_TRIANGULATION_ADAPTATION_TRAITS_2_H +#define CGAL_DELAUNAY_TRIANGULATION_ADAPTATION_TRAITS_2_H 1 + +#include + +#include +#include +#include +#include + +namespace CGAL { + +template +struct Delaunay_triangulation_on_sphere_adaptation_traits_2 +{ +public: + typedef DTOS Delaunay_graph; + typedef typename Delaunay_graph::Geom_traits Geom_traits; + + typedef CGAL_VORONOI_DIAGRAM_2_INS::DToS2_Point_accessor Access_site_2; + typedef CGAL_VORONOI_DIAGRAM_2_INS::DToS2_Voronoi_point_2 Construct_Voronoi_point_2; + + typedef typename Delaunay_graph::Vertex_handle Delaunay_vertex_handle; + typedef typename Delaunay_graph::Edge Delaunay_edge; + typedef typename Delaunay_graph::Face_handle Delaunay_face_handle; + + typedef CGAL::Tag_false Has_nearest_site_2; + typedef CGAL_VORONOI_DIAGRAM_2_INS::Null_functor Nearest_site_2; + + Delaunay_triangulation_on_sphere_adaptation_traits_2(const DTOS& dtos) : dtos(dtos) { } + + Access_site_2 access_site_2_object() const + { return Access_site_2(dtos); } + + Construct_Voronoi_point_2 construct_Voronoi_point_2_object() const + { return Construct_Voronoi_point_2(dtos); } + + Nearest_site_2 nearest_site_2_object() const + { return Nearest_site_2(); } + + typedef typename Geom_traits::Point_on_sphere_2 Point_2; + typedef Point_2 Site_2; + +private: + const DTOS& dtos; +}; + +} //namespace CGAL + +#endif // CGAL_DELAUNAY_TRIANGULATION_ADAPTATION_TRAITS_2_H diff --git a/Voronoi_diagram_2/include/CGAL/Voronoi_diagram_2/Construct_dual_points.h b/Voronoi_diagram_2/include/CGAL/Voronoi_diagram_2/Construct_dual_points.h index 993dacbeae9..af54b688b8d 100644 --- a/Voronoi_diagram_2/include/CGAL/Voronoi_diagram_2/Construct_dual_points.h +++ b/Voronoi_diagram_2/include/CGAL/Voronoi_diagram_2/Construct_dual_points.h @@ -77,6 +77,31 @@ public: //========================================================================= +template +struct DToS2_Voronoi_point_2 +{ +private: + typedef typename DTOS::Geom_traits Geom_traits; + typedef typename Geom_traits::Point_on_sphere_2 Point_on_sphere_2; + +public: + typedef Point_on_sphere_2 result_type; + typedef typename DTOS::Face_handle Face_handle; + + DToS2_Voronoi_point_2(const DTOS& dtos) : dtos(dtos) { } + + result_type operator()(const Face_handle f) const + { + return dtos.geom_traits().construct_circumcenter_on_sphere_2_object()( + dtos.point(f, 0), dtos.point(f, 1), dtos.point(f, 2)); + } + +private: + const DTOS& dtos; +}; + +//========================================================================= + template class Segment_Voronoi_diagram_Voronoi_point_2 { diff --git a/Voronoi_diagram_2/include/CGAL/Voronoi_diagram_2/Site_accessors.h b/Voronoi_diagram_2/include/CGAL/Voronoi_diagram_2/Site_accessors.h index 50f7a347f56..e1d45d99a15 100644 --- a/Voronoi_diagram_2/include/CGAL/Voronoi_diagram_2/Site_accessors.h +++ b/Voronoi_diagram_2/include/CGAL/Voronoi_diagram_2/Site_accessors.h @@ -15,12 +15,11 @@ #include - #include namespace CGAL { - -namespace VoronoiDiagram_2 { namespace Internal { +namespace VoronoiDiagram_2 { +namespace Internal { //========================================================================= //========================================================================= @@ -71,10 +70,32 @@ struct Point_accessor }; //========================================================================= + +template +struct DToS2_Point_accessor +{ +private: + typedef typename DTOS::Geom_traits::Point_on_sphere_2 Point_on_sphere_2; + +public: + typedef const Point_on_sphere_2& result_type; + typedef typename DTOS::Vertex_handle Vertex_handle; + + DToS2_Point_accessor(const DTOS& dtos) : dtos(dtos) { } + + result_type operator()(const Vertex_handle v) const + { + return dtos.point(v); + } + +private: + const DTOS& dtos; +}; + //========================================================================= -} } //namespace VoronoiDiagram_2::Internal - -} //namespace CGAL +} // namespace Internal +} // namespace VoronoiDiagram_2 +} // namespace CGAL #endif // CGAL_VORONOI_DIAGRAM_2_SITE_ACCESSORS_H From 0d7eb2a9336671a37fca90382c28c80f63d51ddb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mael=20Rouxel-Labb=C3=A9?= Date: Fri, 30 Apr 2021 17:37:05 +0200 Subject: [PATCH 107/171] Avoid a conversion warning --- Number_types/test/Number_types/include/CGAL/_test_utilities.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Number_types/test/Number_types/include/CGAL/_test_utilities.h b/Number_types/test/Number_types/include/CGAL/_test_utilities.h index f82e59f3604..a53184e65c5 100644 --- a/Number_types/test/Number_types/include/CGAL/_test_utilities.h +++ b/Number_types/test/Number_types/include/CGAL/_test_utilities.h @@ -368,7 +368,7 @@ test_utilities(const NT& x) // approximate_sqrt std::cout << " approximate_sqrt()" << std::endl; - if(CGAL::approximate_sqrt(one) != one) return false; + if(NT(CGAL::approximate_sqrt(one)) != one) return false; return true; } From 181cc4ebb8dedc222e60fbaff17c1439651b3f51 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mael=20Rouxel-Labb=C3=A9?= Date: Fri, 30 Apr 2021 17:37:31 +0200 Subject: [PATCH 108/171] Tiny logging fix --- Number_types/test/Number_types/utilities.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Number_types/test/Number_types/utilities.cpp b/Number_types/test/Number_types/utilities.cpp index 32e7fb13573..f8028bf59d6 100644 --- a/Number_types/test/Number_types/utilities.cpp +++ b/Number_types/test/Number_types/utilities.cpp @@ -124,7 +124,7 @@ int main() // TEST Sqrt_extension #ifdef CGAL_USE_GMP typedef CGAL::Sqrt_extension Ext_int; - TESTIT(Ext_int , "CGAL::Sqrt_extension"); + TESTIT(Ext_int , "CGAL::Sqrt_extension"); typedef CGAL::Sqrt_extension Ext_int_int; TESTIT(Ext_int_int , "CGAL::Sqrt_extension"); typedef CGAL::Sqrt_extension Ext_rat_int; From 755693ba4561bf4a367f1b5a92fcb04100c57065 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?S=C3=A9bastien=20Loriot?= Date: Mon, 3 May 2021 13:25:26 +0200 Subject: [PATCH 109/171] IO namespace in Arrangement package --- .../demo/Arrangement_on_surface_2/ArrangementIO.cpp | 4 ++-- .../Arrangement_on_surface_2/CGAL/IO/Arr_iostream.h | 11 ++++++++--- .../CGAL/IO/Arr_with_history_iostream.h | 4 ++++ .../Arrangement_on_surface_2/PackageDescription.txt | 4 ++-- .../Arrangement_on_surface_2/dcel_extension_io.cpp | 4 ++-- .../include/CGAL/IO/Arr_iostream.h | 13 +++++++++++++ .../include/CGAL/IO/Arr_with_history_iostream.h | 13 +++++++++++++ .../include/CGAL/IO/Fig_stream_Conic_arc_2.h | 5 +++++ .../test/Arrangement_on_surface_2/Overlay_test.h | 6 +++--- 9 files changed, 52 insertions(+), 12 deletions(-) diff --git a/Arrangement_on_surface_2/demo/Arrangement_on_surface_2/ArrangementIO.cpp b/Arrangement_on_surface_2/demo/Arrangement_on_surface_2/ArrangementIO.cpp index 8e1f6bbc972..5a9be364d6f 100644 --- a/Arrangement_on_surface_2/demo/Arrangement_on_surface_2/ArrangementIO.cpp +++ b/Arrangement_on_surface_2/demo/Arrangement_on_surface_2/ArrangementIO.cpp @@ -31,7 +31,7 @@ struct ArrReader ArrFormatter arrFormatter; auto arr = new Arrangement(); - CGAL::read(*arr, ifs, arrFormatter); + CGAL::IO::read(*arr, ifs, arrFormatter); return arr; } }; @@ -106,7 +106,7 @@ struct ArrWriter using ArrFormatter = CGAL::Arr_with_history_text_formatter; ArrFormatter arrFormatter; - CGAL::write(*arr, ofs, arrFormatter); + CGAL::IO::write(*arr, ofs, arrFormatter); } }; diff --git a/Arrangement_on_surface_2/doc/Arrangement_on_surface_2/CGAL/IO/Arr_iostream.h b/Arrangement_on_surface_2/doc/Arrangement_on_surface_2/CGAL/IO/Arr_iostream.h index bcdfd59968d..4b18dcd6656 100644 --- a/Arrangement_on_surface_2/doc/Arrangement_on_surface_2/CGAL/IO/Arr_iostream.h +++ b/Arrangement_on_surface_2/doc/Arrangement_on_surface_2/CGAL/IO/Arr_iostream.h @@ -1,6 +1,9 @@ namespace CGAL { + +namespace IO { + /*! - \defgroup PkgArrangementOnSurface2Read CGAL::read() + \defgroup PkgArrangementOnSurface2Read CGAL::IO::read() \ingroup PkgArrangementOnSurface2IO Reads a given arrangement from a given input stream @@ -37,7 +40,7 @@ std::istream& read (Arrangement_2& arr, /// @} /*! - \defgroup PkgArrangementOnSurface2Write CGAL::write() + \defgroup PkgArrangementOnSurface2Write CGAL::IO::write() \ingroup PkgArrangementOnSurface2IO Writes a given arrangement into a given output stream @@ -69,6 +72,8 @@ std::ostream& write (const Arrangement_2& arr, /// @} +} // namespace IO + /*! \ingroup PkgArrangementOnSurface2op_left_shift Inserts the arrangement object `arr` into the output stream @@ -93,4 +98,4 @@ template std::istream& operator>>(std::istream& is, Arrangement_2& arr); -} /* end namespace CGAL*/ +} /* end namespace CGAL::IO*/ diff --git a/Arrangement_on_surface_2/doc/Arrangement_on_surface_2/CGAL/IO/Arr_with_history_iostream.h b/Arrangement_on_surface_2/doc/Arrangement_on_surface_2/CGAL/IO/Arr_with_history_iostream.h index 47caa509bcc..5c4b626e80b 100644 --- a/Arrangement_on_surface_2/doc/Arrangement_on_surface_2/CGAL/IO/Arr_with_history_iostream.h +++ b/Arrangement_on_surface_2/doc/Arrangement_on_surface_2/CGAL/IO/Arr_with_history_iostream.h @@ -1,5 +1,7 @@ namespace CGAL { +namespace OI { + /*! \ingroup PkgArrangementOnSurface2Read @@ -26,6 +28,8 @@ std::ostream& write (const Arrangement_with_history_2& arr, std::ostream& os, WithHistoryFormatter& formatter); +} // namespace IO + /*! \ingroup PkgArrangementOnSurface2op_left_shift Inserts the arrangement-with-history object `arr` into the output diff --git a/Arrangement_on_surface_2/doc/Arrangement_on_surface_2/PackageDescription.txt b/Arrangement_on_surface_2/doc/Arrangement_on_surface_2/PackageDescription.txt index 9696042adb3..19eda40a9ca 100644 --- a/Arrangement_on_surface_2/doc/Arrangement_on_surface_2/PackageDescription.txt +++ b/Arrangement_on_surface_2/doc/Arrangement_on_surface_2/PackageDescription.txt @@ -203,8 +203,8 @@ implemented as peripheral classes or as free (global) functions. - `CGAL::locate()` - `CGAL::decompose()` - `CGAL::overlay()` -- `CGAL::read()` -- `CGAL::write()` +- `CGAL::IO::read()` +- `CGAL::IO::write()` - `CGAL::remove_curve()` - \link PkgArrangementOnSurface2op_left_shift `CGAL::operator<<` \endlink - \link PkgArrangementOnSurface2op_right_shift `CGAL::operator<<` \endlink diff --git a/Arrangement_on_surface_2/examples/Arrangement_on_surface_2/dcel_extension_io.cpp b/Arrangement_on_surface_2/examples/Arrangement_on_surface_2/dcel_extension_io.cpp index fc89f889611..130d6f62573 100644 --- a/Arrangement_on_surface_2/examples/Arrangement_on_surface_2/dcel_extension_io.cpp +++ b/Arrangement_on_surface_2/examples/Arrangement_on_surface_2/dcel_extension_io.cpp @@ -119,14 +119,14 @@ int main () std::ofstream out_file ("arr_ex_dcel_io.dat"); Formatter formatter; - write (arr, out_file, formatter); + CGAL::IO::write (arr, out_file, formatter); out_file.close(); // Read the arrangement from the file. Arrangement_2 arr2; std::ifstream in_file ("arr_ex_dcel_io.dat"); - read (arr2, in_file, formatter); + CGAL::IO::read (arr2, in_file, formatter); in_file.close(); std::cout << "The arrangement vertices: " << std::endl; diff --git a/Arrangement_on_surface_2/include/CGAL/IO/Arr_iostream.h b/Arrangement_on_surface_2/include/CGAL/IO/Arr_iostream.h index 7e42544af2d..0ca1a6b6bd6 100644 --- a/Arrangement_on_surface_2/include/CGAL/IO/Arr_iostream.h +++ b/Arrangement_on_surface_2/include/CGAL/IO/Arr_iostream.h @@ -29,6 +29,8 @@ namespace CGAL { +namespace IO { + /*! * Write an arrangement to an output stream using a given formatter. * \param arr The arrangement. @@ -51,6 +53,8 @@ std::ostream& return (os); } +} // namespace IO + /*! * Output operator (importer). * \param os The output stream. @@ -72,6 +76,8 @@ std::ostream& return (os); } +namespace IO { + /*! * Read an arrangement from an input stream using a given formatter. * \param arr The arrangement. @@ -94,6 +100,8 @@ std::istream& return (is); } +} // namespace IO + /*! * Output operator (exporter). * \param is The input stream. @@ -115,6 +123,11 @@ std::istream& return (is); } +#ifndef CGAL_NO_DEPRECATED_CODE +using IO::read; +using IO::write; +#endif + } //namespace CGAL #endif diff --git a/Arrangement_on_surface_2/include/CGAL/IO/Arr_with_history_iostream.h b/Arrangement_on_surface_2/include/CGAL/IO/Arr_with_history_iostream.h index d1a37040e91..3c366136072 100644 --- a/Arrangement_on_surface_2/include/CGAL/IO/Arr_with_history_iostream.h +++ b/Arrangement_on_surface_2/include/CGAL/IO/Arr_with_history_iostream.h @@ -30,6 +30,8 @@ namespace CGAL { +namespace IO { + /*! * Write an arrangement with history to an output stream using a given * formatter. @@ -54,6 +56,8 @@ std::ostream& write return (os); } +} // namespace IO + /*! * Output operator (importer). * \param os The output stream. @@ -77,6 +81,8 @@ std::ostream& operator<< return (os); } +namespace IO { + /*! * Read an arrangement with history from an input stream using a given * formatter. @@ -101,6 +107,8 @@ std::istream& read return (is); } +} // namespace IO + /*! * Output operator (exporter). * \param is The input stream. @@ -124,6 +132,11 @@ std::istream& operator>> return (is); } +#ifndef CGAL_NO_DEPRECATED_CODE +using IO::read; +using IO::write; +#endif + } //namespace CGAL #endif diff --git a/Arrangement_on_surface_2/include/CGAL/IO/Fig_stream_Conic_arc_2.h b/Arrangement_on_surface_2/include/CGAL/IO/Fig_stream_Conic_arc_2.h index 5ca5bdecbb8..626087f67bb 100644 --- a/Arrangement_on_surface_2/include/CGAL/IO/Fig_stream_Conic_arc_2.h +++ b/Arrangement_on_surface_2/include/CGAL/IO/Fig_stream_Conic_arc_2.h @@ -18,6 +18,9 @@ #include #include +namespace CGAL { +namespace IO { + /*! * Write an x-monotone conic arc to a FIG stream. */ @@ -97,4 +100,6 @@ void write_conic_arc return; } +}} // namespace CGAL:IO + #endif diff --git a/Arrangement_on_surface_2/test/Arrangement_on_surface_2/Overlay_test.h b/Arrangement_on_surface_2/test/Arrangement_on_surface_2/Overlay_test.h index 6a45618aeb9..d1d1eaa56db 100644 --- a/Arrangement_on_surface_2/test/Arrangement_on_surface_2/Overlay_test.h +++ b/Arrangement_on_surface_2/test/Arrangement_on_surface_2/Overlay_test.h @@ -745,7 +745,7 @@ bool Overlay_test::init() // Expected arrangement. Formatter formatter; - CGAL::read(m_arr, p_stream, formatter); + CGAL::IO::read(m_arr, p_stream, formatter); p_stream.close(); @@ -981,13 +981,13 @@ bool Overlay_test::perform() Arrangement arr; Overlay_traits overlay_traits(m_verbose_level); // Formatter formatter; - // CGAL::write(m_arr2, std::cout, formatter); + // CGAL::IO::write(m_arr2, std::cout, formatter); CGAL::overlay(m_arr1, m_arr2, arr, overlay_traits); // Generate the output for debugging purposes // Formatter formatter; - // CGAL::write(arr, std::cout, formatter); + // CGAL::IO::write(arr, std::cout, formatter); // Verify the resulting arrangement: if (!equivalent_arr(arr, m_arr)) { From eae1ffc2702a189d915c563e014223b1a4caddb5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?S=C3=A9bastien=20Loriot?= Date: Mon, 3 May 2021 13:44:57 +0200 Subject: [PATCH 110/171] IO namespace in Mesh_2 package --- Mesh_2/demo/Mesh_2/conform.cpp | 6 +++--- Mesh_2/demo/Mesh_2/mesh.cpp | 6 +++--- Mesh_2/doc/Mesh_2/CGAL/IO/write_vtu.h | 3 ++- Mesh_2/doc/Mesh_2/Mesh_2.txt | 2 +- Mesh_2/doc/Mesh_2/PackageDescription.txt | 2 +- Mesh_2/include/CGAL/IO/File_poly.h | 23 ++++++++++++++++------- Mesh_2/include/CGAL/IO/write_vtu.h | 11 ++++++++--- Mesh_2/test/Mesh_2/test_conforming.cpp | 2 +- Mesh_2/test/Mesh_2/test_lloyd.cpp | 2 +- Mesh_2/test/Mesh_2/test_meshing.cpp | 2 +- 10 files changed, 37 insertions(+), 22 deletions(-) diff --git a/Mesh_2/demo/Mesh_2/conform.cpp b/Mesh_2/demo/Mesh_2/conform.cpp index a27d4d5549c..894185d02fb 100644 --- a/Mesh_2/demo/Mesh_2/conform.cpp +++ b/Mesh_2/demo/Mesh_2/conform.cpp @@ -86,7 +86,7 @@ int main(int argc, char** argv) if(input) { Tr t; - CGAL::read_triangle_poly_file(t, input); + CGAL::IO::read_triangle_poly_file(t, input); if(delaunay) { if(verbose) @@ -103,12 +103,12 @@ int main(int argc, char** argv) if(argc==arg_count+1) { if(terminal_output) - CGAL::write_triangle_poly_file(t, std::cout); + CGAL::IO::write_triangle_poly_file(t, std::cout); } else { std::ofstream output(argv[arg_count+1]); - CGAL::write_triangle_poly_file(t, output); + CGAL::IO::write_triangle_poly_file(t, output); } if(terminal_output) diff --git a/Mesh_2/demo/Mesh_2/mesh.cpp b/Mesh_2/demo/Mesh_2/mesh.cpp index 504eb065411..303420ca7f4 100644 --- a/Mesh_2/demo/Mesh_2/mesh.cpp +++ b/Mesh_2/demo/Mesh_2/mesh.cpp @@ -93,18 +93,18 @@ int main(int argc, char** argv) std::ifstream input(argv[arg_count]); if(input) { - CGAL::read_triangle_poly_file(t, input); + CGAL::IO::read_triangle_poly_file(t, input); CGAL::refine_Delaunay_mesh_2(t, criteria); if(argc==arg_count+1) { if(terminal_output) - CGAL::write_triangle_poly_file(t, std::cout); + CGAL::IO::write_triangle_poly_file(t, std::cout); } else { std::ofstream output(argv[arg_count+1]); - CGAL::write_triangle_poly_file(t, output); + CGAL::IO::write_triangle_poly_file(t, output); } if(terminal_output) std::cerr diff --git a/Mesh_2/doc/Mesh_2/CGAL/IO/write_vtu.h b/Mesh_2/doc/Mesh_2/CGAL/IO/write_vtu.h index 146cb6bb785..e9d35b05dfa 100644 --- a/Mesh_2/doc/Mesh_2/CGAL/IO/write_vtu.h +++ b/Mesh_2/doc/Mesh_2/CGAL/IO/write_vtu.h @@ -1,4 +1,5 @@ namespace CGAL{ +namespace IO { //!\ingroup PkgMesh2IO //! \brief writes the faces of a domain and its constrained edges embedded in //! a 2D constrained Delaunay triangulation using the `PolyData` XML format. @@ -16,4 +17,4 @@ template void write_vtu(std::ostream& os, const CDT& tr, IO::Mode mode = IO::BINARY); -} +} } diff --git a/Mesh_2/doc/Mesh_2/Mesh_2.txt b/Mesh_2/doc/Mesh_2/Mesh_2.txt index fef716532ff..bc1053fdb52 100644 --- a/Mesh_2/doc/Mesh_2/Mesh_2.txt +++ b/Mesh_2/doc/Mesh_2/Mesh_2.txt @@ -328,7 +328,7 @@ in the Reference Manual. \section secMesh_2_IO Input/Output -It is possible to export the result of a meshing in VTU, using the function `write_vtu()`. +It is possible to export the result of a meshing in VTU, using the function `CGAL::IO::write_vtu()`. For more information about this format, see \ref IOStreamVTK. */ } /* namespace CGAL */ diff --git a/Mesh_2/doc/Mesh_2/PackageDescription.txt b/Mesh_2/doc/Mesh_2/PackageDescription.txt index 2c39e083c2a..6919700cb23 100644 --- a/Mesh_2/doc/Mesh_2/PackageDescription.txt +++ b/Mesh_2/doc/Mesh_2/PackageDescription.txt @@ -64,7 +64,7 @@ The package can handle intersecting input constraints and set no restriction on - `CGAL::lloyd_optimize_mesh_2` \cgalCRPSection{I/O Functions} -- `CGAL::write_vtu()` +- `CGAL::IO::write_vtu()` \cgalCRPSection{Enumerations} - `CGAL::Mesh_optimization_return_code` diff --git a/Mesh_2/include/CGAL/IO/File_poly.h b/Mesh_2/include/CGAL/IO/File_poly.h index 79b2f7ee359..28743a9bc7d 100644 --- a/Mesh_2/include/CGAL/IO/File_poly.h +++ b/Mesh_2/include/CGAL/IO/File_poly.h @@ -18,13 +18,7 @@ namespace CGAL { -template -inline -void -read_triangle_poly_file(CDT& t, std::istream &f) -{ - read_triangle_poly_file(t, f, Emptyset_iterator()); -} +namespace IO { //the function that reads a Shewchuk Triangle .poly file template @@ -80,6 +74,14 @@ read_triangle_poly_file(CDT& t, std::istream &f, } } +template +inline +void +read_triangle_poly_file(CDT& t, std::istream &f) +{ + read_triangle_poly_file(t, f, Emptyset_iterator()); +} + //the function that write a Shewchuk Triangle .poly file template void @@ -156,6 +158,13 @@ write_triangle_poly_file(const CDT& t, std::ostream &f) write_triangle_poly_file(t, f, l.begin(), l.end()); } +} // namespace IO + +#ifndef CGAL_NO_DEPRECATED_CODE +using read_triangle_poly_file; +using write_triangle_poly_file; +#endif + } // end namespace CGAL #endif // CGAL_FILE_POLY_H diff --git a/Mesh_2/include/CGAL/IO/write_vtu.h b/Mesh_2/include/CGAL/IO/write_vtu.h index fe7a3f85b5b..4babefe8faf 100644 --- a/Mesh_2/include/CGAL/IO/write_vtu.h +++ b/Mesh_2/include/CGAL/IO/write_vtu.h @@ -361,16 +361,21 @@ void write_vtu_with_attributes(std::ostream& os, } } // namespace internal -} // namespace CGAL template void write_vtu(std::ostream& os, const CDT& tr, - IO::Mode mode = IO::BINARY) + IO::Mode mode = BINARY) { std::vector*> > dummy_atts; - IO::internal::write_vtu_with_attributes(os, tr, dummy_atts, mode); + internal::write_vtu_with_attributes(os, tr, dummy_atts, mode); } +} // namespace IO + +#ifndef CGAL_NO_DEPRECATED_CODE +using write_vtu; +#endif + } //end CGAL #endif // CGAL_WRITE_VTU_H diff --git a/Mesh_2/test/Mesh_2/test_conforming.cpp b/Mesh_2/test/Mesh_2/test_conforming.cpp index ece577c247f..bfd56abd7f0 100644 --- a/Mesh_2/test/Mesh_2/test_conforming.cpp +++ b/Mesh_2/test/Mesh_2/test_conforming.cpp @@ -38,7 +38,7 @@ struct Tester { std::cout << "Reading fish.poly...\n"; std::ifstream poly_file("fish.poly"); - CGAL::read_triangle_poly_file(cdt, poly_file); + CGAL::IO::read_triangle_poly_file(cdt, poly_file); const size_type number_of_vertices_poly = cdt.number_of_vertices(); const size_type number_of_constrained_edges_poly = diff --git a/Mesh_2/test/Mesh_2/test_lloyd.cpp b/Mesh_2/test/Mesh_2/test_lloyd.cpp index 8543f1978b9..a07c417cc06 100644 --- a/Mesh_2/test/Mesh_2/test_lloyd.cpp +++ b/Mesh_2/test/Mesh_2/test_lloyd.cpp @@ -39,7 +39,7 @@ struct Lloyd_tester std::cerr << "Reading fish-and-rectangle.poly..."; std::ifstream poly_file("fish-and-rectangle.poly"); - CGAL::read_triangle_poly_file(cdt, poly_file, std::back_inserter(seeds)); + CGAL::IO::read_triangle_poly_file(cdt, poly_file, std::back_inserter(seeds)); CGAL_assertion( cdt.is_valid() ); std::cerr << " done.\nNumber of vertices: " << cdt.number_of_vertices() diff --git a/Mesh_2/test/Mesh_2/test_meshing.cpp b/Mesh_2/test/Mesh_2/test_meshing.cpp index fc7b34e9a00..76c1eb8fa46 100644 --- a/Mesh_2/test/Mesh_2/test_meshing.cpp +++ b/Mesh_2/test/Mesh_2/test_meshing.cpp @@ -59,7 +59,7 @@ struct Tester2 { std::cerr << "Reading fish-and-rectangle.poly..."; std::ifstream poly_file("fish-and-rectangle.poly"); - CGAL::read_triangle_poly_file(cdt, poly_file, std::back_inserter(seeds)); + CGAL::IO::read_triangle_poly_file(cdt, poly_file, std::back_inserter(seeds)); assert(cdt.is_valid()); const size_type inititial_number_of_vertices = cdt.number_of_vertices(); std::cerr << " done.\nNumber of vertices: " << cdt.number_of_vertices() From 70058db9b72a4cbd078e35848a1de6a763c55d14 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?S=C3=A9bastien=20Loriot?= Date: Mon, 3 May 2021 15:30:52 +0200 Subject: [PATCH 111/171] add IO namespace for Mesh_3 package --- Mesh_3/archive/applications/cgal_to_medit.cpp | 2 +- .../applications/mesh_implicit_domains.cpp | 2 +- .../mesh_polyhedral_edge_tolerance_region.cpp | 2 +- .../mesh_polyhedral_implicit_function.cpp | 2 +- ...sh_polyhedral_surface_tolerance_region.cpp | 2 +- Mesh_3/doc/Mesh_3/CGAL/IO/File_avizo.h | 3 +- Mesh_3/doc/Mesh_3/CGAL/IO/File_medit.h | 4 +- Mesh_3/doc/Mesh_3/CGAL/IO/File_tetgen.h | 3 +- Mesh_3/doc/Mesh_3/CGAL/IO/output_to_vtu.h | 3 +- Mesh_3/doc/Mesh_3/Mesh_3.txt | 8 +- Mesh_3/doc/Mesh_3/PackageDescription.txt | 4 +- .../Mesh_3/mesh_cubes_intersection.cpp | 2 +- .../mesh_cubes_intersection_with_features.cpp | 2 +- .../examples/Mesh_3/mesh_implicit_domains.cpp | 2 +- .../Mesh_3/mesh_implicit_domains_2.cpp | 2 +- .../mesh_polyhedral_domain_with_features.cpp | 2 +- ...esh_polyhedral_domain_with_features_sm.cpp | 2 +- .../IO/Complex_3_in_triangulation_3_to_vtk.h | 8 + Mesh_3/include/CGAL/IO/File_avizo.h | 30 ++- Mesh_3/include/CGAL/IO/File_binary_mesh_3.h | 12 +- Mesh_3/include/CGAL/IO/File_maya.h | 7 + Mesh_3/include/CGAL/IO/File_medit.h | 8 + Mesh_3/include/CGAL/IO/File_tetgen.h | 9 +- .../IO/facets_in_complex_3_to_triangle_mesh.h | 176 +---------------- Mesh_3/include/CGAL/IO/output_to_vtu.h | 15 +- Mesh_3/include/CGAL/Mesh_3/Dump_c3t3.h | 2 +- .../Mesh_complex_3_in_triangulation_3_base.h | 4 +- .../CGAL/Mesh_3/Protect_edges_sizing_field.h | 2 +- .../facets_in_complex_3_to_triangle_mesh.h | 185 ++++++++++++++++++ ...n_of_complex_3_in_triangulation_3_to_off.h | 2 +- Mesh_3/test/Mesh_3/test_c3t3.cpp | 4 +- .../test/Mesh_3/test_c3t3_into_facegraph.cpp | 2 +- Mesh_3/test/Mesh_3/test_c3t3_io.cpp | 8 +- Mesh_3/test/Mesh_3/test_mesh_cell_base_3.cpp | 2 +- .../test/Mesh_3/test_meshing_determinism.cpp | 2 +- .../test_meshing_polyhedron_with_features.cpp | 8 +- .../Mesh_3/test_meshing_polylines_only.cpp | 2 +- .../Protect_edges_sizing_field.h | 2 +- .../Polyhedron/Plugins/IO/VTK_io_plugin.cpp | 2 +- .../Plugins/Mesh_3/C3t3_io_plugin.cpp | 2 +- .../Plugins/Mesh_3/Mesh_3_plugin_cgal_code.h | 2 +- .../Surface_mesh/Offset_meshing_plugin.cpp | 2 +- .../demo/Polyhedron/Scene_c3t3_item.cpp | 4 +- Polyhedron/demo/Polyhedron/Scene_c3t3_item.h | 2 +- .../internal/tetrahedral_remeshing_helpers.h | 2 +- 45 files changed, 308 insertions(+), 245 deletions(-) create mode 100644 Mesh_3/include/CGAL/facets_in_complex_3_to_triangle_mesh.h diff --git a/Mesh_3/archive/applications/cgal_to_medit.cpp b/Mesh_3/archive/applications/cgal_to_medit.cpp index 932c2c89850..e69f729004e 100644 --- a/Mesh_3/archive/applications/cgal_to_medit.cpp +++ b/Mesh_3/archive/applications/cgal_to_medit.cpp @@ -39,7 +39,7 @@ int main(int , char** argv) // &std::cout) ) // debug to cout { std::cout << " Writing " << argv[2] << std::endl; - CGAL::output_to_medit(ofs, c2t3); + CGAL::IO::output_to_medit(ofs, c2t3); return EXIT_SUCCESS; } else diff --git a/Mesh_3/archive/applications/mesh_implicit_domains.cpp b/Mesh_3/archive/applications/mesh_implicit_domains.cpp index 1f85de4129f..2a5a623dadd 100644 --- a/Mesh_3/archive/applications/mesh_implicit_domains.cpp +++ b/Mesh_3/archive/applications/mesh_implicit_domains.cpp @@ -240,7 +240,7 @@ int main(int argc, char* argv[]) // Output std::ofstream medit_file("out.mesh"); - CGAL::output_to_medit(medit_file, c3t3, !vm.count("no_label_rebind"), vm.count("show_patches")); + CGAL::IO::output_to_medit(medit_file, c3t3, !vm.count("no_label_rebind"), vm.count("show_patches")); return 0; } diff --git a/Mesh_3/archive/examples/Mesh_3/mesh_polyhedral_edge_tolerance_region.cpp b/Mesh_3/archive/examples/Mesh_3/mesh_polyhedral_edge_tolerance_region.cpp index 36ccb42983a..771051e4ba3 100644 --- a/Mesh_3/archive/examples/Mesh_3/mesh_polyhedral_edge_tolerance_region.cpp +++ b/Mesh_3/archive/examples/Mesh_3/mesh_polyhedral_edge_tolerance_region.cpp @@ -60,7 +60,7 @@ int main(int argc, char*argv[]) // Output std::ofstream medit_file("out.mesh"); - CGAL::output_to_medit(medit_file, c3t3); + CGAL::IO::output_to_medit(medit_file, c3t3); return 0; } diff --git a/Mesh_3/archive/examples/Mesh_3/mesh_polyhedral_implicit_function.cpp b/Mesh_3/archive/examples/Mesh_3/mesh_polyhedral_implicit_function.cpp index 6f4fc2a96e0..0b9fdcefb01 100644 --- a/Mesh_3/archive/examples/Mesh_3/mesh_polyhedral_implicit_function.cpp +++ b/Mesh_3/archive/examples/Mesh_3/mesh_polyhedral_implicit_function.cpp @@ -59,7 +59,7 @@ int main(int argc, char*argv[]) // Output std::ofstream medit_file("out.mesh"); - CGAL::output_to_medit(medit_file, c3t3); + CGAL::IO::output_to_medit(medit_file, c3t3); return 0; } diff --git a/Mesh_3/archive/examples/Mesh_3/mesh_polyhedral_surface_tolerance_region.cpp b/Mesh_3/archive/examples/Mesh_3/mesh_polyhedral_surface_tolerance_region.cpp index 8f6ff483511..c13fd3615ec 100644 --- a/Mesh_3/archive/examples/Mesh_3/mesh_polyhedral_surface_tolerance_region.cpp +++ b/Mesh_3/archive/examples/Mesh_3/mesh_polyhedral_surface_tolerance_region.cpp @@ -58,7 +58,7 @@ int main(int argc, char*argv[]) // Output std::ofstream medit_file("out.mesh"); - CGAL::output_to_medit(medit_file, c3t3); + CGAL::IO::output_to_medit(medit_file, c3t3); return 0; } diff --git a/Mesh_3/doc/Mesh_3/CGAL/IO/File_avizo.h b/Mesh_3/doc/Mesh_3/CGAL/IO/File_avizo.h index 94c1c3684a6..f4f679a9eb5 100644 --- a/Mesh_3/doc/Mesh_3/CGAL/IO/File_avizo.h +++ b/Mesh_3/doc/Mesh_3/CGAL/IO/File_avizo.h @@ -1,4 +1,5 @@ namespace CGAL{ +namespace IO { /** * \ingroup PkgMesh3IOFunctions * @brief outputs mesh to avizo format @@ -10,4 +11,4 @@ template void output_to_avizo(std::ostream& os, const C3T3& c3t3); -} +}} diff --git a/Mesh_3/doc/Mesh_3/CGAL/IO/File_medit.h b/Mesh_3/doc/Mesh_3/CGAL/IO/File_medit.h index 62bb1476d86..bdbb7e0d01e 100644 --- a/Mesh_3/doc/Mesh_3/CGAL/IO/File_medit.h +++ b/Mesh_3/doc/Mesh_3/CGAL/IO/File_medit.h @@ -1,5 +1,5 @@ namespace CGAL { - +namespace IO { /// \ingroup PkgMesh3IOFunctions /// /// \brief outputs a mesh complex to the medit (`.mesh`) file format. @@ -18,4 +18,4 @@ void output_to_medit(std::ostream& os, bool rebind = false, bool show_patches = false); -} // end namespace CGAL +}} // end namespace CGAL::IO diff --git a/Mesh_3/doc/Mesh_3/CGAL/IO/File_tetgen.h b/Mesh_3/doc/Mesh_3/CGAL/IO/File_tetgen.h index b142b41f0c7..8294618586b 100644 --- a/Mesh_3/doc/Mesh_3/CGAL/IO/File_tetgen.h +++ b/Mesh_3/doc/Mesh_3/CGAL/IO/File_tetgen.h @@ -1,4 +1,5 @@ namespace CGAL{ +namespace IO { /** * \ingroup PkgMesh3IOFunctions * @brief outputs a mesh complex to tetgen format @@ -16,4 +17,4 @@ output_to_tetgen(std::string filename, const C3T3& c3t3, bool rebind = false, bool show_patches = false); -} +} } diff --git a/Mesh_3/doc/Mesh_3/CGAL/IO/output_to_vtu.h b/Mesh_3/doc/Mesh_3/CGAL/IO/output_to_vtu.h index 70a64f586c7..cf96c166d83 100644 --- a/Mesh_3/doc/Mesh_3/CGAL/IO/output_to_vtu.h +++ b/Mesh_3/doc/Mesh_3/CGAL/IO/output_to_vtu.h @@ -1,4 +1,5 @@ namespace CGAL{ +namespace IO { //! \ingroup PkgMesh3IOFunctions //! //! \brief writes a tetrahedron mesh using the `UnstructuredGrid` XML format. @@ -14,4 +15,4 @@ template void output_to_vtu(std::ostream& os, const C3T3& c3t3, IO::Mode mode = IO::BINARY); -} +} } diff --git a/Mesh_3/doc/Mesh_3/Mesh_3.txt b/Mesh_3/doc/Mesh_3/Mesh_3.txt index 364ef99de87..97d84bfb778 100644 --- a/Mesh_3/doc/Mesh_3/Mesh_3.txt +++ b/Mesh_3/doc/Mesh_3/Mesh_3.txt @@ -549,10 +549,10 @@ for more details. \section Mesh_3_section_io Input/Output Several file formats are supported for writing a mesh: - - \ref IOStreamVTK, using `CGAL::output_to_vtu()` - - \ref IOStreamAvizo, using `CGAL::output_to_avizo()` - - \ref IOStreamMedit, using `CGAL::output_to_medit()` - - \ref IOStreamTetgen, using `CGAL::output_to_tetgen()` + - \ref IOStreamVTK, using `CGAL::IO::output_to_vtu()` + - \ref IOStreamAvizo, using `CGAL::IO::output_to_avizo()` + - \ref IOStreamMedit, using `CGAL::IO::output_to_medit()` + - \ref IOStreamTetgen, using `CGAL::IO::output_to_tetgen()` \section Mesh_3_section_examples Examples diff --git a/Mesh_3/doc/Mesh_3/PackageDescription.txt b/Mesh_3/doc/Mesh_3/PackageDescription.txt index 9d9edbfd5ac..f7a09d8f473 100644 --- a/Mesh_3/doc/Mesh_3/PackageDescription.txt +++ b/Mesh_3/doc/Mesh_3/PackageDescription.txt @@ -138,7 +138,7 @@ and their associated classes: - `CGAL::Mesh_facet_topology` \cgalCRPSection{Input/Output Functions} -- `CGAL::output_to_medit()` -- `CGAL::output_to_vtu()` +- `CGAL::IO::output_to_medit()` +- `CGAL::IO::output_to_vtu()` */ diff --git a/Mesh_3/examples/Mesh_3/mesh_cubes_intersection.cpp b/Mesh_3/examples/Mesh_3/mesh_cubes_intersection.cpp index b25b4f127b7..12216cc2cbd 100644 --- a/Mesh_3/examples/Mesh_3/mesh_cubes_intersection.cpp +++ b/Mesh_3/examples/Mesh_3/mesh_cubes_intersection.cpp @@ -91,7 +91,7 @@ int main() // Output std::ofstream medit_file("out_cubes_intersection.mesh"); - CGAL::output_to_medit(medit_file, c3t3); + CGAL::IO::output_to_medit(medit_file, c3t3); return 0; } diff --git a/Mesh_3/examples/Mesh_3/mesh_cubes_intersection_with_features.cpp b/Mesh_3/examples/Mesh_3/mesh_cubes_intersection_with_features.cpp index 6b67c567c5d..61d2d78d993 100644 --- a/Mesh_3/examples/Mesh_3/mesh_cubes_intersection_with_features.cpp +++ b/Mesh_3/examples/Mesh_3/mesh_cubes_intersection_with_features.cpp @@ -178,7 +178,7 @@ int main() // Output std::ofstream medit_file("out_cubes_intersection_with_features.mesh"); - CGAL::output_to_medit(medit_file, c3t3); + CGAL::IO::output_to_medit(medit_file, c3t3); return 0; } diff --git a/Mesh_3/examples/Mesh_3/mesh_implicit_domains.cpp b/Mesh_3/examples/Mesh_3/mesh_implicit_domains.cpp index efb5ea0f743..d8790c25fd3 100644 --- a/Mesh_3/examples/Mesh_3/mesh_implicit_domains.cpp +++ b/Mesh_3/examples/Mesh_3/mesh_implicit_domains.cpp @@ -67,7 +67,7 @@ int main() // Output std::ofstream medit_file("out.mesh"); - CGAL::output_to_medit(medit_file, c3t3); + CGAL::IO::output_to_medit(medit_file, c3t3); return 0; } diff --git a/Mesh_3/examples/Mesh_3/mesh_implicit_domains_2.cpp b/Mesh_3/examples/Mesh_3/mesh_implicit_domains_2.cpp index 4401a1ab468..6d50993bbdd 100644 --- a/Mesh_3/examples/Mesh_3/mesh_implicit_domains_2.cpp +++ b/Mesh_3/examples/Mesh_3/mesh_implicit_domains_2.cpp @@ -69,7 +69,7 @@ int main() // Output std::ofstream medit_file("out.mesh"); - CGAL::output_to_medit(medit_file, c3t3); + CGAL::IO::output_to_medit(medit_file, c3t3); return 0; } diff --git a/Mesh_3/examples/Mesh_3/mesh_polyhedral_domain_with_features.cpp b/Mesh_3/examples/Mesh_3/mesh_polyhedral_domain_with_features.cpp index 1f79004ce4b..ce185877344 100644 --- a/Mesh_3/examples/Mesh_3/mesh_polyhedral_domain_with_features.cpp +++ b/Mesh_3/examples/Mesh_3/mesh_polyhedral_domain_with_features.cpp @@ -64,7 +64,7 @@ int main(int argc, char*argv[]) // Output std::ofstream file("out.vtu"); - CGAL::output_to_vtu(file, c3t3); + CGAL::IO::output_to_vtu(file, c3t3); // Could be replaced by: // c3t3.output_to_medit(file); diff --git a/Mesh_3/examples/Mesh_3/mesh_polyhedral_domain_with_features_sm.cpp b/Mesh_3/examples/Mesh_3/mesh_polyhedral_domain_with_features_sm.cpp index ab357f2ca0c..33b95fafea6 100644 --- a/Mesh_3/examples/Mesh_3/mesh_polyhedral_domain_with_features_sm.cpp +++ b/Mesh_3/examples/Mesh_3/mesh_polyhedral_domain_with_features_sm.cpp @@ -65,7 +65,7 @@ int main(int argc, char*argv[]) // Output std::ofstream file("out-sm.vtu"); - CGAL::output_to_vtu(file, c3t3, CGAL::IO::ASCII); + CGAL::IO::output_to_vtu(file, c3t3, CGAL::IO::ASCII); // Could be replaced by: // c3t3.output_to_medit(file); diff --git a/Mesh_3/include/CGAL/IO/Complex_3_in_triangulation_3_to_vtk.h b/Mesh_3/include/CGAL/IO/Complex_3_in_triangulation_3_to_vtk.h index 2d101a4ea92..1586f5ac4f7 100644 --- a/Mesh_3/include/CGAL/IO/Complex_3_in_triangulation_3_to_vtk.h +++ b/Mesh_3/include/CGAL/IO/Complex_3_in_triangulation_3_to_vtk.h @@ -26,6 +26,8 @@ namespace CGAL { +namespace IO { + //if export_complex is false, there must be no far point. template vtkUnstructuredGrid* @@ -121,6 +123,12 @@ output_c3t3_to_vtk_unstructured_grid(const C3T3& c3t3, return grid; } +} // namespace IO + +#ifndef CGAL_NO_DEPRECATED_CODE +using IO::output_c3t3_to_vtk_unstructured_grid; +#endif + } // end namespace CGAL #endif // CGAL_COMPLEX_3_IN_TRIANGULATION_3_TO_VTK diff --git a/Mesh_3/include/CGAL/IO/File_avizo.h b/Mesh_3/include/CGAL/IO/File_avizo.h index 704200b069b..f2b31d68d6c 100644 --- a/Mesh_3/include/CGAL/IO/File_avizo.h +++ b/Mesh_3/include/CGAL/IO/File_avizo.h @@ -24,9 +24,14 @@ namespace CGAL { -namespace Mesh_3 { - +namespace IO { +/** + * @brief outputs mesh to avizo format + * @param os the stream + * @param c3t3 the mesh + * \see \ref IOStreamAvizo + */ template void output_to_avizo(std::ostream& os, @@ -137,24 +142,11 @@ output_to_avizo(std::ostream& os, } // end output_to_avizo(...) -} // end namespace Mesh_3 +} // end namespace IO - - - -/** - * @brief outputs mesh to avizo format - * @param os the stream - * @param c3t3 the mesh - * \see \ref IOStreamAvizo - */ -template -void -output_to_avizo(std::ostream& os, - const C3T3& c3t3) -{ - Mesh_3::output_to_avizo(os,c3t3); -} +#ifndef CGAL_NO_DEPRECATED_CODE +using IO::output_to_avizo; +#endif } // end namespace CGAL diff --git a/Mesh_3/include/CGAL/IO/File_binary_mesh_3.h b/Mesh_3/include/CGAL/IO/File_binary_mesh_3.h index 52ac49d057b..2bf7931ff35 100644 --- a/Mesh_3/include/CGAL/IO/File_binary_mesh_3.h +++ b/Mesh_3/include/CGAL/IO/File_binary_mesh_3.h @@ -23,7 +23,7 @@ namespace CGAL { -namespace Mesh_3 { +namespace IO { template bool @@ -77,7 +77,15 @@ bool load_binary_file(std::istream& is, C3T3& c3t3) // call operator!() twice, because operator bool() is C++11 } -} // end namespace Mesh_3 +} // end namespace IO + +#ifndef CGAL_NO_DEPRECATED_CODE +namespace Mesh_3 { +using IO::save_binary_file; +using IO::load_binary_file; +} +#endif + } // end namespace CGAL #endif // CGAL_IO_FILE_BINARY_MESH_3_H diff --git a/Mesh_3/include/CGAL/IO/File_maya.h b/Mesh_3/include/CGAL/IO/File_maya.h index c482186b386..4546132bb95 100644 --- a/Mesh_3/include/CGAL/IO/File_maya.h +++ b/Mesh_3/include/CGAL/IO/File_maya.h @@ -25,6 +25,7 @@ #include namespace CGAL { +namespace IO { template void output_to_maya(std::ostream& os, @@ -310,6 +311,12 @@ output_to_maya(std::ostream& os, #endif } // end output_to_maya(...) +} // namespace IO + +#ifndef CGAL_NO_DEPRECATED_CODE +using IO::output_to_maya; +#endif + } // end namespace CGAL #endif // CGAL_IO_FILE_MAYA_H diff --git a/Mesh_3/include/CGAL/IO/File_medit.h b/Mesh_3/include/CGAL/IO/File_medit.h index bac7e7b2560..95585dc1b82 100644 --- a/Mesh_3/include/CGAL/IO/File_medit.h +++ b/Mesh_3/include/CGAL/IO/File_medit.h @@ -862,6 +862,8 @@ output_to_medit(std::ostream& os, } // end namespace Mesh_3 +namespace IO { + /** * @brief outputs mesh to medit format * @param os the stream @@ -912,6 +914,12 @@ bool read_MEDIT(std::istream& in, T3& t3) return CGAL::build_triangulation_from_file(in, t3); } +} // namespace IO + +#ifndef CGAL_NO_DEPRECATED_CODE +using IO::output_to_medit; +#endif + } // end namespace CGAL #endif // CGAL_IO_FILE_MEDIT_H diff --git a/Mesh_3/include/CGAL/IO/File_tetgen.h b/Mesh_3/include/CGAL/IO/File_tetgen.h index 0eca7bdb760..2d3dca2dd20 100644 --- a/Mesh_3/include/CGAL/IO/File_tetgen.h +++ b/Mesh_3/include/CGAL/IO/File_tetgen.h @@ -187,8 +187,7 @@ output_to_tetgen(std::string filename, } // end namespace Mesh_3 - - +namespace IO { template void @@ -213,6 +212,12 @@ output_to_tetgen(std::string filename, } } +} // namespace IO + +#ifndef CGAL_NO_DEPRECATED_CODE +using output_to_tetgen; +#endif + } // end namespace CGAL #endif // CGAL_IO_FILE_TETGEN_H diff --git a/Mesh_3/include/CGAL/IO/facets_in_complex_3_to_triangle_mesh.h b/Mesh_3/include/CGAL/IO/facets_in_complex_3_to_triangle_mesh.h index d69f445716f..95b6d7eeddf 100644 --- a/Mesh_3/include/CGAL/IO/facets_in_complex_3_to_triangle_mesh.h +++ b/Mesh_3/include/CGAL/IO/facets_in_complex_3_to_triangle_mesh.h @@ -11,175 +11,17 @@ // Author(s) : Maxime Gimeno, // Mael Rouxel-Labbé -#ifndef CGAL_FACETS_IN_COMPLEX_3_TO_TRIANGLE_MESH_H -#define CGAL_FACETS_IN_COMPLEX_3_TO_TRIANGLE_MESH_H +#ifndef CGAL_IO_FACETS_IN_COMPLEX_3_TO_TRIANGLE_MESH_H +#define CGAL_IO_FACETS_IN_COMPLEX_3_TO_TRIANGLE_MESH_H #include -#include -#include -#include -#include -#include +#ifndef CGAL_NO_DEPRECATED_CODE +#include -#include -#include +#define CGAL_DEPRECATED_HEADER "" +#define CGAL_REPLACEMENT_HEADER "" +#include +#endif -#include -#include -#include -#include - -namespace CGAL { - -namespace Mesh_3 { - -namespace internal { - -template -void resize(Polygon& p, std::size_t size) -{ - p.resize(size); -} - -template -void resize(std::array&, std::size_t CGAL_assertion_code(size)) -{ - CGAL_assertion(size == N); -} - -template -void facets_in_complex_3_to_triangle_soup(const C3T3& c3t3, - const typename C3T3::Subdomain_index sd_index, - PointContainer& points, - FaceContainer& faces, - const bool normals_point_outside_of_the_subdomain = true, - const bool export_all_facets = false) -{ - typedef typename PointContainer::value_type Point_3; - typedef typename FaceContainer::value_type Face; - - typedef typename C3T3::Triangulation Tr; - - typedef typename Tr::Vertex_handle Vertex_handle; - typedef typename Tr::Cell_handle Cell_handle; - typedef typename Tr::Weighted_point Weighted_point; - - typedef typename C3T3::Facets_in_complex_iterator Ficit; - - typedef CGAL::Hash_handles_with_or_without_timestamps Hash_fct; - typedef boost::unordered_map VHmap; - - typedef typename C3T3::size_type size_type; - - size_type nf = c3t3.number_of_facets_in_complex(); - faces.reserve(faces.size() + nf); - points.reserve(points.size() + nf/2); // approximating Euler - - VHmap vh_to_ids; - std::size_t inum = 0; - - for(Ficit fit = c3t3.facets_in_complex_begin(), - end = c3t3.facets_in_complex_end(); fit != end; ++fit) - { - Cell_handle c = fit->first; - int s = fit->second; - Face f; - resize(f, 3); - - typename C3T3::Subdomain_index cell_sdi = c3t3.subdomain_index(c); - typename C3T3::Subdomain_index opp_sdi = c3t3.subdomain_index(c->neighbor(s)); - - if(!export_all_facets && cell_sdi != sd_index && opp_sdi != sd_index) - continue; - - for(std::size_t i=1; i<4; ++i) - { - typename VHmap::iterator map_entry; - bool is_new; - Vertex_handle v = c->vertex((s+i)&3); - CGAL_assertion(v != Vertex_handle() && !c3t3.triangulation().is_infinite(v)); - - boost::tie(map_entry, is_new) = vh_to_ids.insert(std::make_pair(v, inum)); - if(is_new) - { - const Weighted_point& p = c3t3.triangulation().point(c, (s+i)&3); - const Point_3 bp = Point_3(CGAL::to_double(p.x()), - CGAL::to_double(p.y()), - CGAL::to_double(p.z())); - points.push_back(bp); - ++inum; - } - - f[i-1] = map_entry->second; - } - - if(export_all_facets) - { - if((cell_sdi > opp_sdi) == (s%2 == 1)) - std::swap(f[0], f[1]); - } - else - { - if(((cell_sdi == sd_index) == (s%2 == 1)) == normals_point_outside_of_the_subdomain) - std::swap(f[0], f[1]); - } - - faces.push_back(f); - } -} - -template -void facets_in_complex_3_to_triangle_soup(const C3T3& c3t3, - PointContainer& points, - FaceContainer& faces) -{ - typedef typename C3T3::Subdomain_index Subdomain_index; - Subdomain_index useless = Subdomain_index(); - facets_in_complex_3_to_triangle_soup(c3t3, useless, points, faces, - true/*point outward*/, true /*extract all facets*/); -} - -} // end namespace internal - -} // end namespace Mesh_3 - -//! \ingroup PkgMesh3Functions -//! -//! \brief builds a `TriangleMesh` from the surface facets, with a consistent orientation -//! at the interface of two subdomains. -//! -//! This function exports the surface as a `TriangleMesh` and appends it to `graph`, using -//! `orient_polygon_soup()`. -//! -//! @tparam C3T3 a model of `MeshComplexWithFeatures_3InTriangulation_3`. -//! @tparam TriangleMesh a model of `MutableFaceGraph` with an internal point property map. -//! The point type should be compatible with the one used in `C3T3`. -//! -//! @param c3t3 an instance of `C3T3`. -//! @param graph an instance of `TriangleMesh`. -template -void facets_in_complex_3_to_triangle_mesh(const C3T3& c3t3, TriangleMesh& graph) -{ - namespace PMP = CGAL::Polygon_mesh_processing; - - typedef typename boost::property_map::type VertexPointMap; - typedef typename boost::property_traits::value_type Point_3; - - typedef std::array Face; - - std::vector faces; - std::vector points; - - Mesh_3::internal::facets_in_complex_3_to_triangle_soup(c3t3, points, faces); - - if(!PMP::is_polygon_soup_a_polygon_mesh(faces)) - PMP::orient_polygon_soup(points, faces); - CGAL_postcondition(PMP::is_polygon_soup_a_polygon_mesh(faces)); - - PMP::polygon_soup_to_polygon_mesh(points, faces, graph); -} - -} // namespace CGAL - -#endif // CGAL_FACETS_IN_COMPLEX_3_TO_TRIANGLE_MESH_H +#endif // CGAL_IO_FACETS_IN_COMPLEX_3_TO_TRIANGLE_MESH_H diff --git a/Mesh_3/include/CGAL/IO/output_to_vtu.h b/Mesh_3/include/CGAL/IO/output_to_vtu.h index 65a96d013d7..b318084532b 100644 --- a/Mesh_3/include/CGAL/IO/output_to_vtu.h +++ b/Mesh_3/include/CGAL/IO/output_to_vtu.h @@ -350,13 +350,12 @@ void output_to_vtu_with_attributes(std::ostream& os, } } // namespace internal -} // namespace IO //public API template void output_to_vtu(std::ostream& os, const C3T3& c3t3, - IO::Mode mode = IO::BINARY) + Mode mode = BINARY) { typedef typename C3T3::Cells_in_complex_iterator Cell_iterator; std::vector mids; @@ -368,12 +367,18 @@ void output_to_vtu(std::ostream& os, mids.push_back(v); } - std::vector > atts; - IO::internal::Vtu_attributes v = &mids; + std::vector > atts; + internal::Vtu_attributes v = &mids; atts.push_back(std::make_pair("MeshDomain", v)); - IO::internal::output_to_vtu_with_attributes(os, c3t3, atts, mode); + internal::output_to_vtu_with_attributes(os, c3t3, atts, mode); } +} // namespace IO + +#ifndef CGAL_NO_DEPRECATED_CODE +using IO::output_to_vtu; +#endif + } // namespace CGAL #endif // CGAL_VTK_IO_H diff --git a/Mesh_3/include/CGAL/Mesh_3/Dump_c3t3.h b/Mesh_3/include/CGAL/Mesh_3/Dump_c3t3.h index 147d4ac59f4..427472d4b2d 100644 --- a/Mesh_3/include/CGAL/Mesh_3/Dump_c3t3.h +++ b/Mesh_3/include/CGAL/Mesh_3/Dump_c3t3.h @@ -45,7 +45,7 @@ struct Dump_c3t3 { std::clog<<"======dump c3t3===== to: " << prefix << std::endl; std::ofstream medit_file((prefix+".mesh").c_str()); medit_file.precision(17); - CGAL::output_to_medit(medit_file, c3t3, false /*rebind*/, true /*show_patches*/); + CGAL::IO::output_to_medit(medit_file, c3t3, false /*rebind*/, true /*show_patches*/); medit_file.close(); std::string bin_filename = prefix; diff --git a/Mesh_3/include/CGAL/Mesh_3/Mesh_complex_3_in_triangulation_3_base.h b/Mesh_3/include/CGAL/Mesh_3/Mesh_complex_3_in_triangulation_3_base.h index 618d8c51b8b..c12dac28be1 100644 --- a/Mesh_3/include/CGAL/Mesh_3/Mesh_complex_3_in_triangulation_3_base.h +++ b/Mesh_3/include/CGAL/Mesh_3/Mesh_complex_3_in_triangulation_3_base.h @@ -462,7 +462,7 @@ public: bool show_patches = false) const { // Call global function - CGAL::output_to_medit(os,*this,rebind,show_patches); + CGAL::IO::output_to_medit(os,*this,rebind,show_patches); } /// Outputs the mesh to maya @@ -470,7 +470,7 @@ public: bool surfaceOnly = true) const { // Call global function - CGAL::output_to_maya(os,*this,surfaceOnly); + CGAL::IO::output_to_maya(os,*this,surfaceOnly); } //------------------------------------------------------- diff --git a/Mesh_3/include/CGAL/Mesh_3/Protect_edges_sizing_field.h b/Mesh_3/include/CGAL/Mesh_3/Protect_edges_sizing_field.h index ab9a4844e5f..a5cb40496a5 100644 --- a/Mesh_3/include/CGAL/Mesh_3/Protect_edges_sizing_field.h +++ b/Mesh_3/include/CGAL/Mesh_3/Protect_edges_sizing_field.h @@ -1337,7 +1337,7 @@ refine_balls() std::ostringstream oss; oss << "dump_protecting_balls_" << refine_balls_iteration_nb << ".cgal"; std::ofstream outfile(oss.str().c_str(), std::ios_base::binary | std::ios_base::out); - CGAL::Mesh_3::save_binary_file(outfile, c3t3_, true); + CGAL::IO::save_binary_file(outfile, c3t3_, true); outfile.close(); #endif //CGAL_MESH_3_DUMP_FEATURES_PROTECTION_ITERATIONS diff --git a/Mesh_3/include/CGAL/facets_in_complex_3_to_triangle_mesh.h b/Mesh_3/include/CGAL/facets_in_complex_3_to_triangle_mesh.h new file mode 100644 index 00000000000..d69f445716f --- /dev/null +++ b/Mesh_3/include/CGAL/facets_in_complex_3_to_triangle_mesh.h @@ -0,0 +1,185 @@ +// Copyright (c) 2009-2017 GeometryFactory (France). +// All rights reserved. +// +// This file is part of CGAL (www.cgal.org). +// +// $URL$ +// $Id$ +// SPDX-License-Identifier: GPL-3.0-or-later OR LicenseRef-Commercial +// +// +// Author(s) : Maxime Gimeno, +// Mael Rouxel-Labbé + +#ifndef CGAL_FACETS_IN_COMPLEX_3_TO_TRIANGLE_MESH_H +#define CGAL_FACETS_IN_COMPLEX_3_TO_TRIANGLE_MESH_H + +#include + +#include +#include +#include +#include +#include + +#include +#include + +#include +#include +#include +#include + +namespace CGAL { + +namespace Mesh_3 { + +namespace internal { + +template +void resize(Polygon& p, std::size_t size) +{ + p.resize(size); +} + +template +void resize(std::array&, std::size_t CGAL_assertion_code(size)) +{ + CGAL_assertion(size == N); +} + +template +void facets_in_complex_3_to_triangle_soup(const C3T3& c3t3, + const typename C3T3::Subdomain_index sd_index, + PointContainer& points, + FaceContainer& faces, + const bool normals_point_outside_of_the_subdomain = true, + const bool export_all_facets = false) +{ + typedef typename PointContainer::value_type Point_3; + typedef typename FaceContainer::value_type Face; + + typedef typename C3T3::Triangulation Tr; + + typedef typename Tr::Vertex_handle Vertex_handle; + typedef typename Tr::Cell_handle Cell_handle; + typedef typename Tr::Weighted_point Weighted_point; + + typedef typename C3T3::Facets_in_complex_iterator Ficit; + + typedef CGAL::Hash_handles_with_or_without_timestamps Hash_fct; + typedef boost::unordered_map VHmap; + + typedef typename C3T3::size_type size_type; + + size_type nf = c3t3.number_of_facets_in_complex(); + faces.reserve(faces.size() + nf); + points.reserve(points.size() + nf/2); // approximating Euler + + VHmap vh_to_ids; + std::size_t inum = 0; + + for(Ficit fit = c3t3.facets_in_complex_begin(), + end = c3t3.facets_in_complex_end(); fit != end; ++fit) + { + Cell_handle c = fit->first; + int s = fit->second; + Face f; + resize(f, 3); + + typename C3T3::Subdomain_index cell_sdi = c3t3.subdomain_index(c); + typename C3T3::Subdomain_index opp_sdi = c3t3.subdomain_index(c->neighbor(s)); + + if(!export_all_facets && cell_sdi != sd_index && opp_sdi != sd_index) + continue; + + for(std::size_t i=1; i<4; ++i) + { + typename VHmap::iterator map_entry; + bool is_new; + Vertex_handle v = c->vertex((s+i)&3); + CGAL_assertion(v != Vertex_handle() && !c3t3.triangulation().is_infinite(v)); + + boost::tie(map_entry, is_new) = vh_to_ids.insert(std::make_pair(v, inum)); + if(is_new) + { + const Weighted_point& p = c3t3.triangulation().point(c, (s+i)&3); + const Point_3 bp = Point_3(CGAL::to_double(p.x()), + CGAL::to_double(p.y()), + CGAL::to_double(p.z())); + points.push_back(bp); + ++inum; + } + + f[i-1] = map_entry->second; + } + + if(export_all_facets) + { + if((cell_sdi > opp_sdi) == (s%2 == 1)) + std::swap(f[0], f[1]); + } + else + { + if(((cell_sdi == sd_index) == (s%2 == 1)) == normals_point_outside_of_the_subdomain) + std::swap(f[0], f[1]); + } + + faces.push_back(f); + } +} + +template +void facets_in_complex_3_to_triangle_soup(const C3T3& c3t3, + PointContainer& points, + FaceContainer& faces) +{ + typedef typename C3T3::Subdomain_index Subdomain_index; + Subdomain_index useless = Subdomain_index(); + facets_in_complex_3_to_triangle_soup(c3t3, useless, points, faces, + true/*point outward*/, true /*extract all facets*/); +} + +} // end namespace internal + +} // end namespace Mesh_3 + +//! \ingroup PkgMesh3Functions +//! +//! \brief builds a `TriangleMesh` from the surface facets, with a consistent orientation +//! at the interface of two subdomains. +//! +//! This function exports the surface as a `TriangleMesh` and appends it to `graph`, using +//! `orient_polygon_soup()`. +//! +//! @tparam C3T3 a model of `MeshComplexWithFeatures_3InTriangulation_3`. +//! @tparam TriangleMesh a model of `MutableFaceGraph` with an internal point property map. +//! The point type should be compatible with the one used in `C3T3`. +//! +//! @param c3t3 an instance of `C3T3`. +//! @param graph an instance of `TriangleMesh`. +template +void facets_in_complex_3_to_triangle_mesh(const C3T3& c3t3, TriangleMesh& graph) +{ + namespace PMP = CGAL::Polygon_mesh_processing; + + typedef typename boost::property_map::type VertexPointMap; + typedef typename boost::property_traits::value_type Point_3; + + typedef std::array Face; + + std::vector faces; + std::vector points; + + Mesh_3::internal::facets_in_complex_3_to_triangle_soup(c3t3, points, faces); + + if(!PMP::is_polygon_soup_a_polygon_mesh(faces)) + PMP::orient_polygon_soup(points, faces); + CGAL_postcondition(PMP::is_polygon_soup_a_polygon_mesh(faces)); + + PMP::polygon_soup_to_polygon_mesh(points, faces, graph); +} + +} // namespace CGAL + +#endif // CGAL_FACETS_IN_COMPLEX_3_TO_TRIANGLE_MESH_H diff --git a/Mesh_3/include/CGAL/internal/Mesh_3/Boundary_of_subdomain_of_complex_3_in_triangulation_3_to_off.h b/Mesh_3/include/CGAL/internal/Mesh_3/Boundary_of_subdomain_of_complex_3_in_triangulation_3_to_off.h index b08974e545e..93f5b70d430 100644 --- a/Mesh_3/include/CGAL/internal/Mesh_3/Boundary_of_subdomain_of_complex_3_in_triangulation_3_to_off.h +++ b/Mesh_3/include/CGAL/internal/Mesh_3/Boundary_of_subdomain_of_complex_3_in_triangulation_3_to_off.h @@ -14,7 +14,7 @@ #include -#include +#include namespace CGAL { diff --git a/Mesh_3/test/Mesh_3/test_c3t3.cpp b/Mesh_3/test/Mesh_3/test_c3t3.cpp index 7e4828a460d..ffbc80d090a 100644 --- a/Mesh_3/test/Mesh_3/test_c3t3.cpp +++ b/Mesh_3/test/Mesh_3/test_c3t3.cpp @@ -393,8 +393,8 @@ struct Tester assert ( c3t3.surface_patch_index(*patch_fit_bis) == surface_patch_index_bis ); std::ofstream out_medit("test-medit.mesh"); - CGAL::output_to_medit(out_medit, c3t3); - CGAL::output_to_tetgen("test-tetgen", c3t3); + CGAL::IO::output_to_medit(out_medit, c3t3); + CGAL::IO::output_to_tetgen("test-tetgen", c3t3); } }; diff --git a/Mesh_3/test/Mesh_3/test_c3t3_into_facegraph.cpp b/Mesh_3/test/Mesh_3/test_c3t3_into_facegraph.cpp index 6df89caf971..9a953580e1b 100644 --- a/Mesh_3/test/Mesh_3/test_c3t3_into_facegraph.cpp +++ b/Mesh_3/test/Mesh_3/test_c3t3_into_facegraph.cpp @@ -1,6 +1,6 @@ #include -#include +#include #include #include diff --git a/Mesh_3/test/Mesh_3/test_c3t3_io.cpp b/Mesh_3/test/Mesh_3/test_c3t3_io.cpp index 03f8e8e0a2d..233120d7ef7 100644 --- a/Mesh_3/test/Mesh_3/test_c3t3_io.cpp +++ b/Mesh_3/test/Mesh_3/test_c3t3_io.cpp @@ -367,9 +367,9 @@ struct Test_c3t3_io { ( binary ? (std::ios_base::in | std::ios_base::binary) : std::ios_base::in)); - CGAL::Mesh_3::save_binary_file(ss, c3t3, binary); + CGAL::IO::save_binary_file(ss, c3t3, binary); assert(ss); - CGAL::Mesh_3::load_binary_file(ss, c3t3_bis); + CGAL::IO::load_binary_file(ss, c3t3_bis); assert(ss); } if(!check_equality(c3t3, c3t3_bis)) return false; @@ -392,7 +392,7 @@ struct Test_c3t3_io { std::ofstream output(filename.c_str(), binary ? (std::ios_base::out | std::ios_base::binary) : std::ios_base::out); - CGAL::Mesh_3::save_binary_file(output, c3t3_bis, binary); + CGAL::IO::save_binary_file(output, c3t3_bis, binary); } c3t3_bis.clear(); @@ -401,7 +401,7 @@ struct Test_c3t3_io { binary ? (std::ios_base::in | std::ios_base::binary) : std::ios_base::in); assert(input); - CGAL::Mesh_3::load_binary_file(input, c3t3_bis); + CGAL::IO::load_binary_file(input, c3t3_bis); assert(input); } if(!check_equality(c3t3, c3t3_bis)) return false; diff --git a/Mesh_3/test/Mesh_3/test_mesh_cell_base_3.cpp b/Mesh_3/test/Mesh_3/test_mesh_cell_base_3.cpp index 0e433bb0922..2a4bc5a5748 100644 --- a/Mesh_3/test/Mesh_3/test_mesh_cell_base_3.cpp +++ b/Mesh_3/test/Mesh_3/test_mesh_cell_base_3.cpp @@ -1,6 +1,6 @@ #include -#include +#include #include #include diff --git a/Mesh_3/test/Mesh_3/test_meshing_determinism.cpp b/Mesh_3/test/Mesh_3/test_meshing_determinism.cpp index d40f3563053..7ca31d4cfe4 100644 --- a/Mesh_3/test/Mesh_3/test_meshing_determinism.cpp +++ b/Mesh_3/test/Mesh_3/test_meshing_determinism.cpp @@ -9,7 +9,7 @@ #include #include #include -#include +#include #include #include diff --git a/Mesh_3/test/Mesh_3/test_meshing_polyhedron_with_features.cpp b/Mesh_3/test/Mesh_3/test_meshing_polyhedron_with_features.cpp index abb96ddf620..58cb2f6153c 100644 --- a/Mesh_3/test/Mesh_3/test_meshing_polyhedron_with_features.cpp +++ b/Mesh_3/test/Mesh_3/test_meshing_polyhedron_with_features.cpp @@ -90,16 +90,16 @@ struct Polyhedron_with_features_tester : public Tester Polyhedral_tag()); //, 1099, 1099, 1158, 1158, 4902, 4902); std::ofstream out_medit("test-medit.mesh"); - CGAL::output_to_medit(out_medit, c3t3); - CGAL::output_to_tetgen("test-tetgen", c3t3); + CGAL::IO::output_to_medit(out_medit, c3t3); + CGAL::IO::output_to_tetgen("test-tetgen", c3t3); std::ofstream out_binary("test-binary.mesh.cgal", std::ios_base::out|std::ios_base::binary); - CGAL::Mesh_3::save_binary_file(out_binary, c3t3); + CGAL::IO::save_binary_file(out_binary, c3t3); out_binary.close(); C3t3 c3t3_bis; std::ifstream in_binary("test-binary.mesh.cgal", std::ios_base::in|std::ios_base::binary); - CGAL::Mesh_3::load_binary_file(in_binary, c3t3_bis); + CGAL::IO::load_binary_file(in_binary, c3t3_bis); assert(c3t3_bis.triangulation() == c3t3.triangulation()); } diff --git a/Mesh_3/test/Mesh_3/test_meshing_polylines_only.cpp b/Mesh_3/test/Mesh_3/test_meshing_polylines_only.cpp index c82df518002..a8ad7dfc6a9 100644 --- a/Mesh_3/test/Mesh_3/test_meshing_polylines_only.cpp +++ b/Mesh_3/test/Mesh_3/test_meshing_polylines_only.cpp @@ -93,7 +93,7 @@ int main(int argc, char** argv) std::ofstream medit_file("out-mesh-polylines.mesh"); c3t3.output_to_medit(medit_file); std::ofstream binary_file("out-mesh-polylines.binary.cgal", std::ios::binary|std::ios::out); - save_binary_file(binary_file, c3t3); + CGAL::IO::save_binary_file(binary_file, c3t3); std::cout << "Number of vertices in c3t3: " << c3t3.triangulation().number_of_vertices() << std::endl; assert(c3t3.triangulation().number_of_vertices() > 900); diff --git a/Periodic_3_mesh_3/include/CGAL/Periodic_3_mesh_3/Protect_edges_sizing_field.h b/Periodic_3_mesh_3/include/CGAL/Periodic_3_mesh_3/Protect_edges_sizing_field.h index 8b0f3b1fb6c..978af85fb67 100644 --- a/Periodic_3_mesh_3/include/CGAL/Periodic_3_mesh_3/Protect_edges_sizing_field.h +++ b/Periodic_3_mesh_3/include/CGAL/Periodic_3_mesh_3/Protect_edges_sizing_field.h @@ -2267,7 +2267,7 @@ refine_balls() std::ostringstream oss; oss << "dump_protecting_balls_" << refine_balls_iteration_nb << ".cgal"; std::ofstream outfile(oss.str().c_str(), std::ios_base::binary | std::ios_base::out); - CGAL::Mesh_3::save_binary_file(outfile, c3t3_, true); + CGAL::IO::save_binary_file(outfile, c3t3_, true); outfile.close(); #endif //CGAL_MESH_3_DUMP_FEATURES_PROTECTION_ITERATIONS diff --git a/Polyhedron/demo/Polyhedron/Plugins/IO/VTK_io_plugin.cpp b/Polyhedron/demo/Polyhedron/Plugins/IO/VTK_io_plugin.cpp index 7dbc3eaa910..b9a83c648c5 100644 --- a/Polyhedron/demo/Polyhedron/Plugins/IO/VTK_io_plugin.cpp +++ b/Polyhedron/demo/Polyhedron/Plugins/IO/VTK_io_plugin.cpp @@ -255,7 +255,7 @@ public: os << std::setprecision(16); const C3t3& c3t3 = c3t3_item->c3t3(); - CGAL::output_to_vtu(os, c3t3); + CGAL::IO::output_to_vtu(os, c3t3); } items.pop_front(); return true; diff --git a/Polyhedron/demo/Polyhedron/Plugins/Mesh_3/C3t3_io_plugin.cpp b/Polyhedron/demo/Polyhedron/Plugins/Mesh_3/C3t3_io_plugin.cpp index 4dfab1afc69..4955f52c498 100644 --- a/Polyhedron/demo/Polyhedron/Plugins/Mesh_3/C3t3_io_plugin.cpp +++ b/Polyhedron/demo/Polyhedron/Plugins/Mesh_3/C3t3_io_plugin.cpp @@ -248,7 +248,7 @@ save(QFileInfo fileinfo, QList &items) else if (fileinfo.suffix() == "am") { std::ofstream avizo_file (qPrintable(path)); - CGAL::output_to_avizo(avizo_file, c3t3_item->c3t3()); + CGAL::IO::output_to_avizo(avizo_file, c3t3_item->c3t3()); items.pop_front(); return true; } diff --git a/Polyhedron/demo/Polyhedron/Plugins/Mesh_3/Mesh_3_plugin_cgal_code.h b/Polyhedron/demo/Polyhedron/Plugins/Mesh_3/Mesh_3_plugin_cgal_code.h index 22c5ab667f7..2e72edebc9c 100644 --- a/Polyhedron/demo/Polyhedron/Plugins/Mesh_3/Mesh_3_plugin_cgal_code.h +++ b/Polyhedron/demo/Polyhedron/Plugins/Mesh_3/Mesh_3_plugin_cgal_code.h @@ -7,7 +7,7 @@ #include "Kernel_type.h" #include "Meshing_thread.h" #include "Scene_surface_mesh_item.h" -#include +#include #include class Scene_surface_mesh_item; diff --git a/Polyhedron/demo/Polyhedron/Plugins/Surface_mesh/Offset_meshing_plugin.cpp b/Polyhedron/demo/Polyhedron/Plugins/Surface_mesh/Offset_meshing_plugin.cpp index a379cf36095..b436ee38f53 100644 --- a/Polyhedron/demo/Polyhedron/Plugins/Surface_mesh/Offset_meshing_plugin.cpp +++ b/Polyhedron/demo/Polyhedron/Plugins/Surface_mesh/Offset_meshing_plugin.cpp @@ -35,7 +35,7 @@ #include #include -#include +#include #include // std::shared_ptr diff --git a/Polyhedron/demo/Polyhedron/Scene_c3t3_item.cpp b/Polyhedron/demo/Polyhedron/Scene_c3t3_item.cpp index a9a3626d544..ea6e7ec566b 100644 --- a/Polyhedron/demo/Polyhedron/Scene_c3t3_item.cpp +++ b/Polyhedron/demo/Polyhedron/Scene_c3t3_item.cpp @@ -34,7 +34,7 @@ #include #include #include -#include +#include #include "Scene_polygon_soup_item.h" @@ -1530,7 +1530,7 @@ void Scene_c3t3_item_priv::computeElements() bool Scene_c3t3_item::load_binary(std::istream& is) { - if(!CGAL::Mesh_3::load_binary_file(is, c3t3())) return false; + if(!CGAL::IO::load_binary_file(is, c3t3())) return false; if(is && d->frame == 0) { d->frame = new CGAL::qglviewer::ManipulatedFrame(); } diff --git a/Polyhedron/demo/Polyhedron/Scene_c3t3_item.h b/Polyhedron/demo/Polyhedron/Scene_c3t3_item.h index 7d5e343ded0..fa32e1119cf 100644 --- a/Polyhedron/demo/Polyhedron/Scene_c3t3_item.h +++ b/Polyhedron/demo/Polyhedron/Scene_c3t3_item.h @@ -47,7 +47,7 @@ public: void setColor(QColor c) Q_DECL_OVERRIDE; bool save_binary(std::ostream& os) const { - return CGAL::Mesh_3::save_binary_file(os, c3t3()); + return CGAL::IO::save_binary_file(os, c3t3()); } bool save_ascii(std::ostream& os) const { diff --git a/Tetrahedral_remeshing/include/CGAL/Tetrahedral_remeshing/internal/tetrahedral_remeshing_helpers.h b/Tetrahedral_remeshing/include/CGAL/Tetrahedral_remeshing/internal/tetrahedral_remeshing_helpers.h index 5a1ca163d67..2b348e4574b 100644 --- a/Tetrahedral_remeshing/include/CGAL/Tetrahedral_remeshing/internal/tetrahedral_remeshing_helpers.h +++ b/Tetrahedral_remeshing/include/CGAL/Tetrahedral_remeshing/internal/tetrahedral_remeshing_helpers.h @@ -1671,7 +1671,7 @@ template void dump_binary(const C3t3& c3t3, const char* filename) { std::ofstream os(filename, std::ios::binary | std::ios::out); - CGAL::Mesh_3::save_binary_file(os, c3t3); + CGAL::IO::save_binary_file(os, c3t3); os.close(); } From 5c66c5d0e187077c6f8d78dc4bdd7c359d078d7c Mon Sep 17 00:00:00 2001 From: Adrien Lefieux Date: Fri, 30 Apr 2021 17:34:23 +0200 Subject: [PATCH 112/171] Solve linking issue on macOS with VTK for Mesh3 Polyhedron demo --- Polyhedron/demo/Polyhedron/Plugins/Mesh_3/CMakeLists.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Polyhedron/demo/Polyhedron/Plugins/Mesh_3/CMakeLists.txt b/Polyhedron/demo/Polyhedron/Plugins/Mesh_3/CMakeLists.txt index dbd4b867b44..4a8cd5966ed 100644 --- a/Polyhedron/demo/Polyhedron/Plugins/Mesh_3/CMakeLists.txt +++ b/Polyhedron/demo/Polyhedron/Plugins/Mesh_3/CMakeLists.txt @@ -20,7 +20,7 @@ if (VTK_FOUND) endif() if ("${VTK_VERSION_MAJOR}" GREATER "5" OR VTK_VERSION VERSION_GREATER 5) if(TARGET VTK::IOImage) - set(VTK_LIBRARIES VTK::IOImage) + set(VTK_LIBRARIES VTK::IOImage VTK::ImagingGeneral) endif() if(NOT VTK_LIBRARIES) message(STATUS "NOTICE : the DICOM files (.dcm) need VTK libraries to be open and will not be able to.") From 8005f91c22dcfba6d19c2c407bd641752ed99e27 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?S=C3=A9bastien=20Loriot?= Date: Mon, 3 May 2021 19:21:57 +0200 Subject: [PATCH 113/171] add IO namespace for Point_set_3 and Point_set_processing_3 packages --- Point_set_3/include/CGAL/Point_set_3/IO.h | 17 ++- Point_set_3/include/CGAL/Point_set_3/IO/LAS.h | 12 +- Point_set_3/include/CGAL/Point_set_3/IO/OFF.h | 14 ++- Point_set_3/include/CGAL/Point_set_3/IO/PLY.h | 50 ++++---- Point_set_3/include/CGAL/Point_set_3/IO/XYZ.h | 18 ++- Point_set_3/include/CGAL/draw_point_set_3.h | 2 +- .../PackageDescription.txt | 34 +++--- .../average_spacing_example.cpp | 4 +- .../bilateral_smooth_point_set_example.cpp | 14 +-- .../edge_aware_upsample_point_set_example.cpp | 16 +-- .../Point_set_processing_3/edges_example.cpp | 6 +- .../grid_simplification_example.cpp | 2 +- .../hierarchy_simplification_example.cpp | 4 +- .../normal_estimation.cpp | 12 +- .../normals_example.cpp | 6 +- .../orient_scanlines_example.cpp | 6 +- .../random_simplification_example.cpp | 4 +- .../read_las_example.cpp | 16 +-- .../read_ply_points_with_colors_example.cpp | 18 +-- .../read_write_xyz_point_set_example.cpp | 16 +-- .../registration_with_OpenGR.cpp | 20 +-- ...tion_with_opengr_pointmatcher_pipeline.cpp | 18 +-- .../registration_with_pointmatcher.cpp | 16 +-- .../remove_outliers_example.cpp | 4 +- .../scale_estimation_example.cpp | 2 +- .../structuring_example.cpp | 14 +-- ...plify_and_regularize_point_set_example.cpp | 4 +- .../write_ply_points_example.cpp | 16 +-- .../include/CGAL/IO/read_las_points.h | 18 ++- .../include/CGAL/IO/read_off_points.h | 42 ++++--- .../include/CGAL/IO/read_ply_points.h | 28 +++-- .../include/CGAL/IO/read_points.h | 4 +- .../include/CGAL/IO/read_xyz_points.h | 66 +++++----- .../include/CGAL/IO/write_las_points.h | 22 ++-- .../include/CGAL/IO/write_off_points.h | 16 ++- .../include/CGAL/IO/write_ply_points.h | 26 ++-- .../include/CGAL/IO/write_points.h | 8 +- .../include/CGAL/IO/write_xyz_points.h | 38 +++--- .../Point_set_processing_3/analysis_test.cpp | 2 +- .../bilateral_smoothing_test.cpp | 8 +- .../edge_aware_upsample_test.cpp | 8 +- .../normal_estimation_test.cpp | 14 +-- .../test/Point_set_processing_3/read_test.cpp | 24 ++-- .../read_test_with_different_pmaps.cpp | 48 ++++---- .../remove_outliers_test.cpp | 2 +- .../Point_set_processing_3/smoothing_test.cpp | 2 +- .../test_read_write_point_set.cpp | 114 +++++++++--------- .../Point_set_processing_3/vcm_all_test.cpp | 6 +- .../wlop_simplify_and_regularize_test.cpp | 2 +- 49 files changed, 469 insertions(+), 394 deletions(-) diff --git a/Point_set_3/include/CGAL/Point_set_3/IO.h b/Point_set_3/include/CGAL/Point_set_3/IO.h index 994c8b0750d..340977be711 100644 --- a/Point_set_3/include/CGAL/Point_set_3/IO.h +++ b/Point_set_3/include/CGAL/Point_set_3/IO.h @@ -73,19 +73,20 @@ std::istream& operator>>(std::istream& is, is.seekg(0); if(line.find("OFF") == 0 || line.find("NOFF") == 0) - CGAL::read_OFF(is, ps); + CGAL::IO::read_OFF(is, ps); else if(line.find("ply") == 0) - CGAL::read_PLY(is, ps); + CGAL::IO::read_PLY(is, ps); #ifdef CGAL_LINKED_WITH_LASLIB else if(line.find("LASF") == 0) - CGAL::read_LAS(is, ps); + CGAL::IO::read_LAS(is, ps); #endif // LAS else - CGAL::read_XYZ(is, ps); + CGAL::IO::read_XYZ(is, ps); return is; } +namespace IO { /*! \ingroup PkgPointSet3IO @@ -151,6 +152,8 @@ bool read_point_set(const std::string& fname, CGAL::Point_set_3& return read_point_set(fname, ps, parameters::all_default()); } +} // namespace IO + /// \endcond //////////////////////////////////////////////////////////////////////////////////////////////////// @@ -175,10 +178,12 @@ template std::ostream& operator<<(std::ostream& os, const CGAL::Point_set_3& ps) { - write_PLY(os, ps); + IO::write_PLY(os, ps); return os; } +namespace IO { + /*! \ingroup PkgPointSet3IO @@ -249,6 +254,8 @@ bool write_point_set(const std::string& fname, CGAL::Point_set_3& /// \endcond +} // namespace IO + } // namespace CGAL #endif // CGAL_POINT_SET_3_IO diff --git a/Point_set_3/include/CGAL/Point_set_3/IO/LAS.h b/Point_set_3/include/CGAL/Point_set_3/IO/LAS.h index 14916e4e89c..140dedacc51 100644 --- a/Point_set_3/include/CGAL/Point_set_3/IO/LAS.h +++ b/Point_set_3/include/CGAL/Point_set_3/IO/LAS.h @@ -32,6 +32,8 @@ class Point_set_3; //////////////////////////////////////////////////////////////////////////////////////////////////// // Read +namespace IO { + namespace internal { template @@ -162,6 +164,8 @@ bool read_LAS(const std::string& fname, CGAL::Point_set_3& point_ return read_LAS(is, point_set); } +} // namespace IO + #ifndef CGAL_NO_DEPRECATED_CODE /*! @@ -174,7 +178,7 @@ template CGAL_DEPRECATED bool read_las_point_set(std::istream& is, ///< input stream. CGAL::Point_set_3& point_set) ///< point set { - return read_LAS(is, point_set); + return IO::read_LAS(is, point_set); } #endif // CGAL_NO_DEPRECATED_CODE @@ -183,6 +187,8 @@ CGAL_DEPRECATED bool read_las_point_set(std::istream& is, ///< input stream. //////////////////////////////////////////////////////////////////////////////////////////////////// // Write +namespace IO { + /*! \ingroup PkgPointSet3IOLAS @@ -394,6 +400,8 @@ bool write_LAS(const std::string& fname, return write_LAS(os, point_set); } +} // namespace IO + #ifndef CGAL_NO_DEPRECATED_CODE /*! @@ -406,7 +414,7 @@ template CGAL_DEPRECATED bool write_las_point_set(std::ostream& os, ///< output stream. CGAL::Point_set_3& point_set) ///< point set { - return write_LAS(os, point_set); + return IO::write_LAS(os, point_set); } #endif // CGAL_NO_DEPRECATED_CODE diff --git a/Point_set_3/include/CGAL/Point_set_3/IO/OFF.h b/Point_set_3/include/CGAL/Point_set_3/IO/OFF.h index b8882c97fdc..56c5babf653 100644 --- a/Point_set_3/include/CGAL/Point_set_3/IO/OFF.h +++ b/Point_set_3/include/CGAL/Point_set_3/IO/OFF.h @@ -37,6 +37,8 @@ class Point_set_3; //////////////////////////////////////////////////////////////////////////////////////////////////// // Read +namespace IO { + /*! \ingroup PkgPointSet3IOOFF @@ -55,9 +57,9 @@ bool read_OFF(std::istream& is, { point_set.add_normal_map(); - bool out = CGAL::read_OFF(is, point_set.index_back_inserter(), - CGAL::parameters::point_map(point_set.point_push_map()) - .normal_map(point_set.normal_push_map())); + bool out = CGAL::IO::read_OFF(is, point_set.index_back_inserter(), + CGAL::parameters::point_map(point_set.point_push_map()) + .normal_map(point_set.normal_push_map())); bool has_normals = false; for(typename CGAL::Point_set_3::const_iterator it=point_set.begin(); it!=point_set.end(); ++it) @@ -94,6 +96,8 @@ bool read_OFF(const std::string& fname, CGAL::Point_set_3& point_ return read_OFF(is, point_set); } +} // namespace IO + #ifndef CGAL_NO_DEPRECATED_CODE /*! @@ -115,6 +119,8 @@ CGAL_DEPRECATED bool read_off_point_set(std::istream& is, ///< input stream. //////////////////////////////////////////////////////////////////////////////////////////////////// // Write +namespace IO { + /*! \ingroup PkgPointSet3IOOFF @@ -207,6 +213,8 @@ bool write_OFF(const std::string& fname, const CGAL::Point_set_3& /// \endcond +} // namespace IO + #ifndef CGAL_NO_DEPRECATED_CODE /*! diff --git a/Point_set_3/include/CGAL/Point_set_3/IO/PLY.h b/Point_set_3/include/CGAL/Point_set_3/IO/PLY.h index 4646ffbd974..cf8da2e5401 100644 --- a/Point_set_3/include/CGAL/Point_set_3/IO/PLY.h +++ b/Point_set_3/include/CGAL/Point_set_3/IO/PLY.h @@ -213,8 +213,6 @@ public: }; } // namespace internal -} // namespace IO - //////////////////////////////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////////////////////////////// @@ -386,6 +384,8 @@ bool read_PLY(const std::string& fname, CGAL::Point_set_3& point_ /// \endcond +} // namespace IO + #ifndef CGAL_NO_DEPRECATED_CODE /*! @@ -412,7 +412,7 @@ CGAL_DEPRECATED bool read_ply_point_set(std::istream& is, ///< input stream. CGAL::Point_set_3& point_set, ///< point set std::string& comments) ///< PLY comments. { - return read_PLY(is, point_set, comments); + return IO::read_PLY(is, point_set, comments); } template @@ -420,7 +420,7 @@ CGAL_DEPRECATED bool read_ply_point_set(std::istream& is, ///< input stream. CGAL::Point_set_3& point_set) ///< point set { std::string dummy; - return read_PLY(is, point_set, dummy); + return IO::read_PLY(is, point_set, dummy); } #endif // CGAL_NO_DEPRECATED_CODE @@ -429,6 +429,8 @@ CGAL_DEPRECATED bool read_ply_point_set(std::istream& is, ///< input stream. //////////////////////////////////////////////////////////////////////////////////////////////////// // Write +namespace IO { + /*! \ingroup PkgPointSet3IOPLY @@ -496,7 +498,7 @@ bool write_PLY(std::ostream& os, set_stream_precision_from_NP(os, np); os << "ply" << std::endl - << ((get_mode(os) == IO::BINARY) ? "format binary_little_endian 1.0" : "format ascii 1.0") << std::endl + << ((CGAL::get_mode(os) == CGAL::IO::BINARY) ? "format binary_little_endian 1.0" : "format ascii 1.0") << std::endl << "comment Generated by the CGAL library" << std::endl; if(comments != std::string()) @@ -513,7 +515,7 @@ bool write_PLY(std::ostream& os, os << "element vertex " << point_set.number_of_points() << std::endl; std::vector prop = point_set.base().properties(); - std::vector*> printers; + std::vector*> printers; for(std::size_t i=0; i(point_set.point_map())); + printers.push_back(new internal::Property_printer(point_set.point_map())); continue; } if(prop[i] == "normal") @@ -551,7 +553,7 @@ bool write_PLY(std::ostream& os, << "property double ny" << std::endl << "property double nz" << std::endl; } - printers.push_back(new IO::internal::Property_printer(point_set.normal_map())); + printers.push_back(new internal::Property_printer(point_set.normal_map())); continue; } @@ -562,7 +564,7 @@ bool write_PLY(std::ostream& os, if(okay) { os << "property char " << prop[i] << std::endl; - printers.push_back(new IO::internal::Char_property_printer(pmap)); + printers.push_back(new internal::Char_property_printer(pmap)); continue; } } @@ -572,7 +574,7 @@ bool write_PLY(std::ostream& os, if(okay) { os << "property uchar " << prop[i] << std::endl; - printers.push_back(new IO::internal::Char_property_printer(pmap)); + printers.push_back(new internal::Char_property_printer(pmap)); continue; } } @@ -582,7 +584,7 @@ bool write_PLY(std::ostream& os, if(okay) { os << "property short " << prop[i] << std::endl; - printers.push_back(new IO::internal::Simple_property_printer(pmap)); + printers.push_back(new internal::Simple_property_printer(pmap)); continue; } } @@ -592,7 +594,7 @@ bool write_PLY(std::ostream& os, if(okay) { os << "property ushort " << prop[i] << std::endl; - printers.push_back(new IO::internal::Simple_property_printer(pmap)); + printers.push_back(new internal::Simple_property_printer(pmap)); continue; } } @@ -602,7 +604,7 @@ bool write_PLY(std::ostream& os, if(okay) { os << "property int " << prop[i] << std::endl; - printers.push_back(new IO::internal::Simple_property_printer(pmap)); + printers.push_back(new internal::Simple_property_printer(pmap)); continue; } } @@ -612,7 +614,7 @@ bool write_PLY(std::ostream& os, if(okay) { os << "property uint " << prop[i] << std::endl; - printers.push_back(new IO::internal::Simple_property_printer(pmap)); + printers.push_back(new internal::Simple_property_printer(pmap)); continue; } } @@ -622,7 +624,7 @@ bool write_PLY(std::ostream& os, if(okay) { os << "property int " << prop[i] << std::endl; - printers.push_back(new IO::internal::Simple_property_printer(pmap)); + printers.push_back(new internal::Simple_property_printer(pmap)); continue; } } @@ -632,7 +634,7 @@ bool write_PLY(std::ostream& os, if(okay) { os << "property uint " << prop[i] << std::endl; - printers.push_back(new IO::internal::Simple_property_printer(pmap)); + printers.push_back(new internal::Simple_property_printer(pmap)); continue; } } @@ -642,7 +644,7 @@ bool write_PLY(std::ostream& os, if(okay) { os << "property float " << prop[i] << std::endl; - printers.push_back(new IO::internal::Simple_property_printer(pmap)); + printers.push_back(new internal::Simple_property_printer(pmap)); continue; } } @@ -652,7 +654,7 @@ bool write_PLY(std::ostream& os, if(okay) { os << "property double " << prop[i] << std::endl; - printers.push_back(new IO::internal::Simple_property_printer(pmap)); + printers.push_back(new internal::Simple_property_printer(pmap)); continue; } } @@ -665,11 +667,11 @@ bool write_PLY(std::ostream& os, for(std::size_t i=0; iprint(os, *it); - if(get_mode(os) == IO::ASCII) + if(get_mode(os) == ASCII) os << " "; } - if(get_mode(os) == IO::ASCII) + if(get_mode(os) == ASCII) os << std::endl; } @@ -748,13 +750,13 @@ bool write_PLY(const std::string& fname, if(binary) { std::ofstream os(fname, std::ios::binary); - CGAL::set_mode(os, CGAL::IO::BINARY); + CGAL::set_mode(os, BINARY); return write_PLY(os, point_set, comments, np); } else { std::ofstream os(fname); - CGAL::set_mode(os, CGAL::IO::ASCII); + CGAL::set_mode(os, ASCII); return write_PLY(os, point_set, comments, np); } } @@ -782,6 +784,8 @@ bool write_PLY(const std::string& fname, const CGAL::Point_set_3& /// \endcond +} // namespace IO + #ifndef CGAL_NO_DEPRECATED_CODE /*! @@ -795,7 +799,7 @@ CGAL_DEPRECATED bool write_ply_point_set(std::ostream& os, const CGAL::Point_set_3& point_set, const std::string& comments = std::string()) { - return write_PLY(os, point_set, comments); + return IO::write_PLY(os, point_set, comments); } #endif // CGAL_NO_DEPRECATED_CODE diff --git a/Point_set_3/include/CGAL/Point_set_3/IO/XYZ.h b/Point_set_3/include/CGAL/Point_set_3/IO/XYZ.h index a7b243fc192..2150e6a817b 100644 --- a/Point_set_3/include/CGAL/Point_set_3/IO/XYZ.h +++ b/Point_set_3/include/CGAL/Point_set_3/IO/XYZ.h @@ -36,6 +36,8 @@ class Point_set_3; //////////////////////////////////////////////////////////////////////////////////////////////////// // Read +namespace IO { + /*! \ingroup PkgPointSet3IOXYZ @@ -54,9 +56,9 @@ bool read_XYZ(std::istream& is, { point_set.add_normal_map(); - bool out = CGAL::read_XYZ(is, point_set.index_back_inserter(), - CGAL::parameters::point_map(point_set.point_push_map()) - .normal_map(point_set.normal_push_map())); + bool out = CGAL::IO::read_XYZ(is, point_set.index_back_inserter(), + CGAL::parameters::point_map(point_set.point_push_map()) + .normal_map(point_set.normal_push_map())); bool has_normals = false; for(typename CGAL::Point_set_3::const_iterator it=point_set.begin(); it!=point_set.end(); ++it) @@ -93,6 +95,8 @@ bool read_XYZ(const std::string& fname, CGAL::Point_set_3& point_ return read_XYZ(is, point_set); } +} // namespace IO + #ifndef CGAL_NO_DEPRECATED_CODE /*! @@ -104,7 +108,7 @@ bool read_XYZ(const std::string& fname, CGAL::Point_set_3& point_ template CGAL_DEPRECATED bool read_xyz_point_set(std::istream& is, CGAL::Point_set_3& point_set) { - return read_XYZ(is, point_set); + return IO::read_XYZ(is, point_set); } #endif // CGAL_NO_DEPRECATED_CODE @@ -113,6 +117,8 @@ CGAL_DEPRECATED bool read_xyz_point_set(std::istream& is, CGAL::Point_set_3& /// \endcond +} // namespace IO + #ifndef CGAL_NO_DEPRECATED_CODE /*! @@ -215,7 +223,7 @@ bool write_XYZ(const std::string& fname, const CGAL::Point_set_3& template CGAL_DEPRECATED bool write_xyz_point_set(std::ostream& os, const CGAL::Point_set_3& point_set) { - return write_XYZ(os, point_set); + return IO::write_XYZ(os, point_set); } #endif // CGAL_NO_DEPRECATED_CODE diff --git a/Point_set_3/include/CGAL/draw_point_set_3.h b/Point_set_3/include/CGAL/draw_point_set_3.h index 510ba937a0c..54e3c413eb2 100644 --- a/Point_set_3/include/CGAL/draw_point_set_3.h +++ b/Point_set_3/include/CGAL/draw_point_set_3.h @@ -66,7 +66,7 @@ protected: void compute_vertex(const Point& p) { add_point(p); - // We can use add_point(p, c) with c a CGAL::Color to add a colored point + // We can use add_point(p, c) with c a CGAL::IO::Color to add a colored point } void compute_elements() diff --git a/Point_set_processing_3/doc/Point_set_processing_3/PackageDescription.txt b/Point_set_processing_3/doc/Point_set_processing_3/PackageDescription.txt index 0b57f4220c4..bf0029d6c94 100644 --- a/Point_set_processing_3/doc/Point_set_processing_3/PackageDescription.txt +++ b/Point_set_processing_3/doc/Point_set_processing_3/PackageDescription.txt @@ -81,8 +81,8 @@ format. \cgalCRPSection{I/O (All Formats)} -- `CGAL::read_points()` -- `CGAL::write_points()` +- `CGAL::IO::read_points()` +- `CGAL::IO::write_points()` \cgalCRPSection{I/O (XYZ/OFF Formats)} @@ -91,23 +91,23 @@ format. \cgalCRPSection{I/O (PLY Format)} -- \link PkgPointSetProcessing3IOPly `CGAL::read_PLY()` \endlink -- `CGAL::read_PLY_with_properties()` -- \link PkgPointSetProcessing3IOPly `CGAL::write_PLY()` \endlink -- `CGAL::write_PLY_with_properties()` -- `CGAL::PLY_property` -- `CGAL::make_ply_point_reader()` -- `CGAL::make_ply_point_writer()` -- `CGAL::make_ply_normal_reader()` -- `CGAL::make_ply_normal_writer()` +- \link PkgPointSetProcessing3IOPly `CGAL::IO::read_PLY()` \endlink +- `CGAL::IO::read_PLY_with_properties()` +- \link PkgPointSetProcessing3IOPly `CGAL::IO::write_PLY()` \endlink +- `CGAL::IO::write_PLY_with_properties()` +- `CGAL::IO::PLY_property` +- `CGAL::IO::make_ply_point_reader()` +- `CGAL::IO::make_ply_point_writer()` +- `CGAL::IO::make_ply_normal_reader()` +- `CGAL::IO::make_ply_normal_writer()` \cgalCRPSection{I/O (LAS Format)} -- `CGAL::read_LAS()` -- `CGAL::read_LAS_with_properties()` -- `CGAL::write_LAS()` -- `CGAL::write_LAS_with_properties()` -- `CGAL::make_las_point_reader()` -- `CGAL::make_las_point_writer()` +- `CGAL::IO::read_LAS()` +- `CGAL::IO::read_LAS_with_properties()` +- `CGAL::IO::write_LAS()` +- `CGAL::IO::write_LAS_with_properties()` +- `CGAL::IO::make_las_point_reader()` +- `CGAL::IO::make_las_point_writer()` */ diff --git a/Point_set_processing_3/examples/Point_set_processing_3/average_spacing_example.cpp b/Point_set_processing_3/examples/Point_set_processing_3/average_spacing_example.cpp index 7d21a8237af..bb679700a26 100644 --- a/Point_set_processing_3/examples/Point_set_processing_3/average_spacing_example.cpp +++ b/Point_set_processing_3/examples/Point_set_processing_3/average_spacing_example.cpp @@ -27,8 +27,8 @@ int main(int argc, char*argv[]) // we use a property map that accesses the 1st element of the tuple. std::vector points; - if (!CGAL::read_points(fname, std::back_inserter(points), - CGAL::parameters::point_map(CGAL::Nth_of_tuple_property_map<1, IndexedPointWithColorTuple>()))) + if (!CGAL::IO::read_points(fname, std::back_inserter(points), + CGAL::parameters::point_map(CGAL::Nth_of_tuple_property_map<1, IndexedPointWithColorTuple>()))) { std::cerr << "Error: cannot read file " << fname << std::endl; return EXIT_FAILURE; diff --git a/Point_set_processing_3/examples/Point_set_processing_3/bilateral_smooth_point_set_example.cpp b/Point_set_processing_3/examples/Point_set_processing_3/bilateral_smooth_point_set_example.cpp index dc37c7a7eb8..dd4c2cbb390 100644 --- a/Point_set_processing_3/examples/Point_set_processing_3/bilateral_smooth_point_set_example.cpp +++ b/Point_set_processing_3/examples/Point_set_processing_3/bilateral_smooth_point_set_example.cpp @@ -27,9 +27,9 @@ int main(int argc, char*argv[]) // Reads a point set file in points[] * with normals *. std::vector points; - if(!CGAL::read_points(input_filename, std::back_inserter(points), - CGAL::parameters::point_map(CGAL::First_of_pair_property_map()) - .normal_map(CGAL::Second_of_pair_property_map()))) + if(!CGAL::IO::read_points(input_filename, std::back_inserter(points), + CGAL::parameters::point_map(CGAL::First_of_pair_property_map()) + .normal_map(CGAL::Second_of_pair_property_map()))) { std::cerr << "Error: cannot read file " << input_filename << std::endl; return EXIT_FAILURE; @@ -54,10 +54,10 @@ int main(int argc, char*argv[]) } //// Save point set. - if(!CGAL::write_XYZ(output_filename, points, - CGAL::parameters::point_map(CGAL::First_of_pair_property_map()) - .normal_map(CGAL::Second_of_pair_property_map()) - .stream_precision(17))) + if(!CGAL::IO::write_XYZ(output_filename, points, + CGAL::parameters::point_map(CGAL::First_of_pair_property_map()) + .normal_map(CGAL::Second_of_pair_property_map()) + .stream_precision(17))) return EXIT_FAILURE; return EXIT_SUCCESS; diff --git a/Point_set_processing_3/examples/Point_set_processing_3/edge_aware_upsample_point_set_example.cpp b/Point_set_processing_3/examples/Point_set_processing_3/edge_aware_upsample_point_set_example.cpp index 2456b2dc1bc..89247f76650 100644 --- a/Point_set_processing_3/examples/Point_set_processing_3/edge_aware_upsample_point_set_example.cpp +++ b/Point_set_processing_3/examples/Point_set_processing_3/edge_aware_upsample_point_set_example.cpp @@ -25,10 +25,10 @@ int main(int argc, char* argv[]) // Reads a .xyz point set file in points[], *with normals*. std::vector points; - if(!CGAL::read_points(input_filename, - std::back_inserter(points), - CGAL::parameters::point_map(CGAL::First_of_pair_property_map()) - .normal_map(CGAL::Second_of_pair_property_map()))) + if(!CGAL::IO::read_points(input_filename, + std::back_inserter(points), + CGAL::parameters::point_map(CGAL::First_of_pair_property_map()) + .normal_map(CGAL::Second_of_pair_property_map()))) { std::cerr << "Error: cannot read file " << input_filename << std::endl; return EXIT_FAILURE; @@ -52,10 +52,10 @@ int main(int argc, char* argv[]) number_of_output_points(number_of_output_points)); // Saves point set. - if(!CGAL::write_points(output_filename, points, - CGAL::parameters::point_map(CGAL::First_of_pair_property_map()) - .normal_map(CGAL::Second_of_pair_property_map()) - .stream_precision(17))) + if(!CGAL::IO::write_points(output_filename, points, + CGAL::parameters::point_map(CGAL::First_of_pair_property_map()) + .normal_map(CGAL::Second_of_pair_property_map()) + .stream_precision(17))) return EXIT_FAILURE; return EXIT_SUCCESS; diff --git a/Point_set_processing_3/examples/Point_set_processing_3/edges_example.cpp b/Point_set_processing_3/examples/Point_set_processing_3/edges_example.cpp index 24d29c76fbc..3f80772a7d4 100644 --- a/Point_set_processing_3/examples/Point_set_processing_3/edges_example.cpp +++ b/Point_set_processing_3/examples/Point_set_processing_3/edges_example.cpp @@ -22,9 +22,9 @@ int main (int , char**) { // Reads a polygon mesh file in points[]. std::list points; - if(!CGAL::read_points("data/fandisk.off", - std::back_inserter(points), - CGAL::parameters::point_map(CGAL::First_of_pair_property_map()))) + if(!CGAL::IO::read_points("data/fandisk.off", + std::back_inserter(points), + CGAL::parameters::point_map(CGAL::First_of_pair_property_map()))) { std::cerr << "Error: cannot read file data/fandisk.off" << std::endl; return EXIT_FAILURE; diff --git a/Point_set_processing_3/examples/Point_set_processing_3/grid_simplification_example.cpp b/Point_set_processing_3/examples/Point_set_processing_3/grid_simplification_example.cpp index ac026943b61..e949000b5ad 100644 --- a/Point_set_processing_3/examples/Point_set_processing_3/grid_simplification_example.cpp +++ b/Point_set_processing_3/examples/Point_set_processing_3/grid_simplification_example.cpp @@ -16,7 +16,7 @@ int main(int argc, char*argv[]) // Reads a point set file in points[]. std::vector points; - if(!CGAL::read_points(fname, std::back_inserter(points))) + if(!CGAL::IO::read_points(fname, std::back_inserter(points))) { std::cerr << "Error: cannot read file " << fname << std::endl; return EXIT_FAILURE; diff --git a/Point_set_processing_3/examples/Point_set_processing_3/hierarchy_simplification_example.cpp b/Point_set_processing_3/examples/Point_set_processing_3/hierarchy_simplification_example.cpp index 8226659a32d..d5e7f2b2d8d 100644 --- a/Point_set_processing_3/examples/Point_set_processing_3/hierarchy_simplification_example.cpp +++ b/Point_set_processing_3/examples/Point_set_processing_3/hierarchy_simplification_example.cpp @@ -19,7 +19,7 @@ int main(int argc, char*argv[]) // Reads a point set file in points[]. std::vector points; - if(!CGAL::read_points(fname, std::back_inserter(points))) + if(!CGAL::IO::read_points(fname, std::back_inserter(points))) { std::cerr << "Error: cannot read file " << fname << std::endl; return EXIT_FAILURE; @@ -41,7 +41,7 @@ int main(int argc, char*argv[]) << task_timer.time() << " seconds, " << (memory>>20) << " Mib allocated." << std::endl; - CGAL::write_points("out.xyz", points, CGAL::parameters::stream_precision(17)); + CGAL::IO::write_points("out.xyz", points, CGAL::parameters::stream_precision(17)); return EXIT_SUCCESS; } diff --git a/Point_set_processing_3/examples/Point_set_processing_3/normal_estimation.cpp b/Point_set_processing_3/examples/Point_set_processing_3/normal_estimation.cpp index 3fdb8f53e0f..bd4847a22e4 100644 --- a/Point_set_processing_3/examples/Point_set_processing_3/normal_estimation.cpp +++ b/Point_set_processing_3/examples/Point_set_processing_3/normal_estimation.cpp @@ -244,8 +244,8 @@ int main(int argc, char * argv[]) PointList points; std::cerr << "Open " << input_filename << " for reading..." << std::endl; - if(!CGAL::read_points(input_filename.c_str(), std::back_inserter(points), - CGAL::parameters::point_map(CGAL::First_of_pair_property_map()))) + if(!CGAL::IO::read_points(input_filename.c_str(), std::back_inserter(points), + CGAL::parameters::point_map(CGAL::First_of_pair_property_map()))) { std::cerr << "Error: cannot read file " << input_filename << std::endl; return EXIT_FAILURE; @@ -290,10 +290,10 @@ int main(int argc, char * argv[]) std::cerr << "Write file " << output_filename << std::endl << std::endl; - if(!CGAL::write_points(output_filename, points, - CGAL::parameters::point_map(CGAL::First_of_pair_property_map()) - .normal_map(CGAL::Second_of_pair_property_map()) - .stream_precision(17))) + if(!CGAL::IO::write_points(output_filename, points, + CGAL::parameters::point_map(CGAL::First_of_pair_property_map()) + .normal_map(CGAL::Second_of_pair_property_map()) + .stream_precision(17))) { std::cerr << "Error: cannot write file " << output_filename << std::endl; return EXIT_FAILURE; diff --git a/Point_set_processing_3/examples/Point_set_processing_3/normals_example.cpp b/Point_set_processing_3/examples/Point_set_processing_3/normals_example.cpp index 9eb5e9b634a..40dfd2556ea 100644 --- a/Point_set_processing_3/examples/Point_set_processing_3/normals_example.cpp +++ b/Point_set_processing_3/examples/Point_set_processing_3/normals_example.cpp @@ -27,9 +27,9 @@ int main(int argc, char*argv[]) // Reads a point set file in points[]. std::list points; - if(!CGAL::read_points(fname, - std::back_inserter(points), - CGAL::parameters::point_map(CGAL::First_of_pair_property_map()))) + if(!CGAL::IO::read_points(fname, + std::back_inserter(points), + CGAL::parameters::point_map(CGAL::First_of_pair_property_map()))) { std::cerr << "Error: cannot read file " << fname<< std::endl; return EXIT_FAILURE; diff --git a/Point_set_processing_3/examples/Point_set_processing_3/orient_scanlines_example.cpp b/Point_set_processing_3/examples/Point_set_processing_3/orient_scanlines_example.cpp index 9e6beca4da1..aec42159da3 100644 --- a/Point_set_processing_3/examples/Point_set_processing_3/orient_scanlines_example.cpp +++ b/Point_set_processing_3/examples/Point_set_processing_3/orient_scanlines_example.cpp @@ -17,7 +17,7 @@ void dump (const char* filename, const std::vector& points) { std::ofstream ofile (filename, std::ios::binary); CGAL::set_binary_mode(ofile); - CGAL::write_PLY + CGAL::IO::write_PLY (ofile, points, CGAL::parameters::point_map (Point_map()). normal_map (Normal_map())); @@ -33,9 +33,9 @@ int main (int argc, char** argv) std::cerr << "Reading input file " << fname << std::endl; std::ifstream ifile (fname, std::ios::binary); if (!ifile || - !CGAL::read_LAS_with_properties + !CGAL::IO::read_LAS_with_properties (ifile, std::back_inserter (points), - CGAL::make_las_point_reader (Point_map()), + CGAL::IO::make_las_point_reader (Point_map()), std::make_pair (Scan_angle_map(), CGAL::LAS_property::Scan_angle()), std::make_pair (Scanline_id_map(), diff --git a/Point_set_processing_3/examples/Point_set_processing_3/random_simplification_example.cpp b/Point_set_processing_3/examples/Point_set_processing_3/random_simplification_example.cpp index d6ec4e2904a..fef22b7a078 100644 --- a/Point_set_processing_3/examples/Point_set_processing_3/random_simplification_example.cpp +++ b/Point_set_processing_3/examples/Point_set_processing_3/random_simplification_example.cpp @@ -18,7 +18,7 @@ int main(int argc, char*argv[]) // Reads a point set file in points[]. std::vector points; - if(!CGAL::read_points(fname, std::back_inserter(points))) + if(!CGAL::IO::read_points(fname, std::back_inserter(points))) { std::cerr << "Error: cannot read file " << fname << std::endl; return EXIT_FAILURE; @@ -33,7 +33,7 @@ int main(int argc, char*argv[]) // Saves point set. const std::string output_filename = (argc>2) ? argv[2] : "Three_lady_copy.xyz"; - if(!CGAL::write_points(output_filename, points, CGAL::parameters::stream_precision(17))) + if(!CGAL::IO::write_points(output_filename, points, CGAL::parameters::stream_precision(17))) return EXIT_FAILURE; return EXIT_SUCCESS; diff --git a/Point_set_processing_3/examples/Point_set_processing_3/read_las_example.cpp b/Point_set_processing_3/examples/Point_set_processing_3/read_las_example.cpp index 8cf2f1be534..7296f39637d 100644 --- a/Point_set_processing_3/examples/Point_set_processing_3/read_las_example.cpp +++ b/Point_set_processing_3/examples/Point_set_processing_3/read_las_example.cpp @@ -21,14 +21,14 @@ int main(int argc, char*argv[]) // Reads a .las point set file with normal vectors and colors std::ifstream in(fname, std::ios_base::binary); std::vector points; // store points - if(!CGAL::read_LAS_with_properties(in, std::back_inserter (points), - CGAL::make_las_point_reader(CGAL::First_of_pair_property_map()), - std::make_tuple(CGAL::Second_of_pair_property_map(), - CGAL::Construct_array(), - CGAL::LAS_property::R(), - CGAL::LAS_property::G(), - CGAL::LAS_property::B(), - CGAL::LAS_property::I()))) + if(!CGAL::IO::read_LAS_with_properties(in, std::back_inserter (points), + CGAL::IO::make_las_point_reader(CGAL::First_of_pair_property_map()), + std::make_tuple(CGAL::Second_of_pair_property_map(), + CGAL::Construct_array(), + CGAL::LAS_property::R(), + CGAL::LAS_property::G(), + CGAL::LAS_property::B(), + CGAL::LAS_property::I()))) { std::cerr << "Error: cannot read file " << fname << std::endl; return EXIT_FAILURE; diff --git a/Point_set_processing_3/examples/Point_set_processing_3/read_ply_points_with_colors_example.cpp b/Point_set_processing_3/examples/Point_set_processing_3/read_ply_points_with_colors_example.cpp index 347ac0aecf4..9d3fad1476d 100644 --- a/Point_set_processing_3/examples/Point_set_processing_3/read_ply_points_with_colors_example.cpp +++ b/Point_set_processing_3/examples/Point_set_processing_3/read_ply_points_with_colors_example.cpp @@ -28,15 +28,15 @@ int main(int argc, char*argv[]) // Reads a .ply point set file with normal vectors and colors std::vector points; // store points std::ifstream in(fname); - if(!CGAL::read_PLY_with_properties(in, std::back_inserter(points), - CGAL::make_ply_point_reader(Point_map()), - std::make_pair(Intensity_map(), CGAL::PLY_property("intensity")), - std::make_tuple(Color_map(), - CGAL::Construct_array(), - CGAL::PLY_property("red"), - CGAL::PLY_property("green"), - CGAL::PLY_property("blue")), - CGAL::make_ply_normal_reader(Normal_map()))) + if(!CGAL::IO::read_PLY_with_properties(in, std::back_inserter(points), + CGAL::make_ply_point_reader(Point_map()), + std::make_pair(Intensity_map(), CGAL::PLY_property("intensity")), + std::make_tuple(Color_map(), + CGAL::Construct_array(), + CGAL::IO::PLY_property("red"), + CGAL::IO::PLY_property("green"), + CGAL::IO::PLY_property("blue")), + CGAL::IO::make_ply_normal_reader(Normal_map()))) { std::cerr << "Error: cannot read file " << fname << std::endl; return EXIT_FAILURE; diff --git a/Point_set_processing_3/examples/Point_set_processing_3/read_write_xyz_point_set_example.cpp b/Point_set_processing_3/examples/Point_set_processing_3/read_write_xyz_point_set_example.cpp index 33e49442e6c..ae628ced81e 100644 --- a/Point_set_processing_3/examples/Point_set_processing_3/read_write_xyz_point_set_example.cpp +++ b/Point_set_processing_3/examples/Point_set_processing_3/read_write_xyz_point_set_example.cpp @@ -26,10 +26,10 @@ int main(int argc, char*argv[]) // over points and as well as property maps to access each // point position and normal. std::vector points; - if(!CGAL::read_XYZ(fname, - std::back_inserter(points), - CGAL::parameters::point_map(CGAL::First_of_pair_property_map()) - .normal_map(CGAL::Second_of_pair_property_map()))) + if(!CGAL::IO::read_XYZ(fname, + std::back_inserter(points), + CGAL::parameters::point_map(CGAL::First_of_pair_property_map()) + .normal_map(CGAL::Second_of_pair_property_map()))) { std::cerr << "Error: cannot read file " << fname << std::endl; return EXIT_FAILURE; @@ -38,10 +38,10 @@ int main(int argc, char*argv[]) // Saves point set. // Note: write_XYZ() requires property maps to access each // point position and normal. - if(!CGAL::write_XYZ("oni_copy.xyz", points, - CGAL::parameters::point_map(CGAL::First_of_pair_property_map()) - .normal_map(CGAL::Second_of_pair_property_map()) - .stream_precision(17))) + if(!CGAL::IO::write_XYZ("oni_copy.xyz", points, + CGAL::parameters::point_map(CGAL::First_of_pair_property_map()) + .normal_map(CGAL::Second_of_pair_property_map()) + .stream_precision(17))) return EXIT_FAILURE; return EXIT_SUCCESS; diff --git a/Point_set_processing_3/examples/Point_set_processing_3/registration_with_OpenGR.cpp b/Point_set_processing_3/examples/Point_set_processing_3/registration_with_OpenGR.cpp index 983d5b5b811..b14e5527e28 100644 --- a/Point_set_processing_3/examples/Point_set_processing_3/registration_with_OpenGR.cpp +++ b/Point_set_processing_3/examples/Point_set_processing_3/registration_with_OpenGR.cpp @@ -26,17 +26,17 @@ int main(int argc, const char** argv) const char* fname2 = (argc>2) ? argv[2] : "data/hippo2.ply"; std::vector pwns1, pwns2; - if(!CGAL::read_points(fname1, std::back_inserter(pwns1), - CGAL::parameters::point_map(CGAL::First_of_pair_property_map()) - .normal_map(Normal_map()))) + if(!CGAL::IO::read_points(fname1, std::back_inserter(pwns1), + CGAL::parameters::point_map(CGAL::First_of_pair_property_map()) + .normal_map(Normal_map()))) { std::cerr << "Error: cannot read file " << fname1 << std::endl; return EXIT_FAILURE; } - if(!CGAL::read_points(fname2, std::back_inserter(pwns2), - CGAL::parameters::point_map(Point_map()) - .normal_map(Normal_map()))) + if(!CGAL::IO::read_points(fname2, std::back_inserter(pwns2), + CGAL::parameters::point_map(Point_map()) + .normal_map(Normal_map()))) { std::cerr << "Error: cannot read file " << fname2 << std::endl; return EXIT_FAILURE; @@ -64,10 +64,10 @@ int main(int argc, const char** argv) params::point_map(Point_map()) .normal_map(Normal_map())); - if(!CGAL::write_points("pwns2_aligned.ply", pwns2, - CGAL::parameters::point_map(Point_map()) - .normal_map(Normal_map()) - .stream_precision(17))) + if(!CGAL::IO::write_points("pwns2_aligned.ply", pwns2, + CGAL::parameters::point_map(Point_map()) + .normal_map(Normal_map()) + .stream_precision(17))) return EXIT_FAILURE; std::cout << "Registration score: " << score << ".\n" diff --git a/Point_set_processing_3/examples/Point_set_processing_3/registration_with_opengr_pointmatcher_pipeline.cpp b/Point_set_processing_3/examples/Point_set_processing_3/registration_with_opengr_pointmatcher_pipeline.cpp index a26cb3e4dcc..f3988aaf24f 100644 --- a/Point_set_processing_3/examples/Point_set_processing_3/registration_with_opengr_pointmatcher_pipeline.cpp +++ b/Point_set_processing_3/examples/Point_set_processing_3/registration_with_opengr_pointmatcher_pipeline.cpp @@ -29,17 +29,17 @@ int main(int argc, const char** argv) const char* fname2 = (argc>2) ? argv[2] : "data/hippo2.ply"; std::vector pwns1, pwns2; - if(!CGAL::read_points(fname1, std::back_inserter(pwns1), - CGAL::parameters::point_map(CGAL::First_of_pair_property_map()) - .normal_map (Normal_map()))) + if(!CGAL::IO::read_points(fname1, std::back_inserter(pwns1), + CGAL::parameters::point_map(CGAL::First_of_pair_property_map()) + .normal_map (Normal_map()))) { std::cerr << "Error: cannot read file " << fname1 << std::endl; return EXIT_FAILURE; } - if(!CGAL::read_points(fname2, std::back_inserter(pwns2), - CGAL::parameters::point_map(Point_map()) - .normal_map(Normal_map()))) + if(!CGAL::IO::read_points(fname2, std::back_inserter(pwns2), + CGAL::parameters::point_map(Point_map()) + .normal_map(Normal_map()))) { std::cerr << "Error: cannot read file " << fname2 << std::endl; return EXIT_FAILURE; @@ -64,9 +64,9 @@ int main(int argc, const char** argv) params::point_map(Point_map()).normal_map(Normal_map()), params::point_map(Point_map()).normal_map(Normal_map()).transformation(res)); - if(!CGAL::write_points("pwns2_aligned.ply", pwns2, - CGAL::parameters::point_map(Point_map()) - .normal_map(Normal_map()))) + if(!CGAL::IO::write_points("pwns2_aligned.ply", pwns2, + CGAL::parameters::point_map(Point_map()) + .normal_map(Normal_map()))) { return EXIT_FAILURE; } diff --git a/Point_set_processing_3/examples/Point_set_processing_3/registration_with_pointmatcher.cpp b/Point_set_processing_3/examples/Point_set_processing_3/registration_with_pointmatcher.cpp index cfbb6463d16..1d78d67f9a1 100644 --- a/Point_set_processing_3/examples/Point_set_processing_3/registration_with_pointmatcher.cpp +++ b/Point_set_processing_3/examples/Point_set_processing_3/registration_with_pointmatcher.cpp @@ -29,17 +29,17 @@ int main(int argc, const char** argv) const char* fname2 = (argc>2)?argv[2]:"data/hippo2.ply"; std::vector pwns1, pwns2; - if(!CGAL::read_points(fname1, std::back_inserter(pwns1), - CGAL::parameters::point_map(CGAL::First_of_pair_property_map()) - .normal_map(Normal_map()))) + if(!CGAL::IO::read_points(fname1, std::back_inserter(pwns1), + CGAL::parameters::point_map(CGAL::First_of_pair_property_map()) + .normal_map(Normal_map()))) { std::cerr << "Error: cannot read file " << fname1 << std::endl; return EXIT_FAILURE; } - if(!CGAL::read_points(fname2, std::back_inserter(pwns2), - CGAL::parameters::point_map(Point_map()) - .normal_map(Normal_map()))) + if(!CGAL::IO::read_points(fname2, std::back_inserter(pwns2), + CGAL::parameters::point_map(Point_map()) + .normal_map(Normal_map()))) { std::cerr << "Error: cannot read file " << fname2 << std::endl; return EXIT_FAILURE; @@ -139,8 +139,8 @@ int main(int argc, const char** argv) } while (!converged); - if(!CGAL::write_points("pwns2_aligned.ply", pwns2, - CGAL::parameters::point_map(Point_map()).normal_map(Normal_map()))) + if(!CGAL::IO::write_points("pwns2_aligned.ply", pwns2, + CGAL::parameters::point_map(Point_map()).normal_map(Normal_map()))) return EXIT_FAILURE; std::cout << "Transformed version of " << fname2 << " written to pwn2_aligned.ply.\n"; diff --git a/Point_set_processing_3/examples/Point_set_processing_3/remove_outliers_example.cpp b/Point_set_processing_3/examples/Point_set_processing_3/remove_outliers_example.cpp index 777fb38828e..9ef2280fef9 100644 --- a/Point_set_processing_3/examples/Point_set_processing_3/remove_outliers_example.cpp +++ b/Point_set_processing_3/examples/Point_set_processing_3/remove_outliers_example.cpp @@ -20,8 +20,8 @@ int main(int argc, char*argv[]) // Reads a point set file in points[]. // The Identity_property_map property map can be omitted here as it is the default value. std::vector points; - if(!CGAL::read_points(fname, std::back_inserter(points), - CGAL::parameters::point_map(CGAL::Identity_property_map()))) + if(!CGAL::IO::read_points(fname, std::back_inserter(points), + CGAL::parameters::point_map(CGAL::Identity_property_map()))) { std::cerr << "Error: cannot read file " << fname << std::endl; return EXIT_FAILURE; diff --git a/Point_set_processing_3/examples/Point_set_processing_3/scale_estimation_example.cpp b/Point_set_processing_3/examples/Point_set_processing_3/scale_estimation_example.cpp index 094de32e4aa..da20e6caf5f 100644 --- a/Point_set_processing_3/examples/Point_set_processing_3/scale_estimation_example.cpp +++ b/Point_set_processing_3/examples/Point_set_processing_3/scale_estimation_example.cpp @@ -27,7 +27,7 @@ int main (int argc, char** argv) // read input std::vector points; - if(!CGAL::read_points(fname, std::back_inserter(points))) + if(!CGAL::IO::read_points(fname, std::back_inserter(points))) { std::cerr << "Error: can't read input file" << std::endl; return EXIT_FAILURE; diff --git a/Point_set_processing_3/examples/Point_set_processing_3/structuring_example.cpp b/Point_set_processing_3/examples/Point_set_processing_3/structuring_example.cpp index 11ce92c5aac..d53aa1a27d8 100644 --- a/Point_set_processing_3/examples/Point_set_processing_3/structuring_example.cpp +++ b/Point_set_processing_3/examples/Point_set_processing_3/structuring_example.cpp @@ -32,9 +32,9 @@ int main (int argc, char** argv) // Loading point set from a file. - if(!CGAL::read_points(filename, std::back_inserter(points), - CGAL::parameters::point_map(Point_map()) - .normal_map(Normal_map()))) + if(!CGAL::IO::read_points(filename, std::back_inserter(points), + CGAL::parameters::point_map(Point_map()) + .normal_map(Normal_map()))) { std::cerr << "Error: cannot read file cube.pwn" << std::endl; return EXIT_FAILURE; @@ -64,10 +64,10 @@ int main (int argc, char** argv) std::cerr << structured_pts.size () << " structured point(s) generated." << std::endl; - CGAL::write_points("out.pwn", structured_pts, - CGAL::parameters::point_map(Point_map()) - .normal_map(Normal_map()) - .stream_precision(17)); + CGAL::IO::write_points("out.pwn", structured_pts, + CGAL::parameters::point_map(Point_map()) + .normal_map(Normal_map()) + .stream_precision(17)); return EXIT_SUCCESS; } diff --git a/Point_set_processing_3/examples/Point_set_processing_3/wlop_simplify_and_regularize_point_set_example.cpp b/Point_set_processing_3/examples/Point_set_processing_3/wlop_simplify_and_regularize_point_set_example.cpp index 524c080051b..a4cb0104130 100644 --- a/Point_set_processing_3/examples/Point_set_processing_3/wlop_simplify_and_regularize_point_set_example.cpp +++ b/Point_set_processing_3/examples/Point_set_processing_3/wlop_simplify_and_regularize_point_set_example.cpp @@ -23,7 +23,7 @@ int main(int argc, char** argv) // Reads a .xyz point set file in points[] std::vector points; - if(!CGAL::read_points(input_filename, std::back_inserter(points))) + if(!CGAL::IO::read_points(input_filename, std::back_inserter(points))) { std::cerr << "Error: cannot read file " << input_filename << std::endl; return EXIT_FAILURE; @@ -40,7 +40,7 @@ int main(int argc, char** argv) CGAL::parameters::select_percentage(retain_percentage). neighbor_radius (neighbor_radius)); - if(!CGAL::write_points(output_filename, output, CGAL::parameters::stream_precision(17))) + if(!CGAL::IO::write_points(output_filename, output, CGAL::parameters::stream_precision(17))) return EXIT_FAILURE; return EXIT_SUCCESS; diff --git a/Point_set_processing_3/examples/Point_set_processing_3/write_ply_points_example.cpp b/Point_set_processing_3/examples/Point_set_processing_3/write_ply_points_example.cpp index 6542eb28ee6..a0397cb22ba 100644 --- a/Point_set_processing_3/examples/Point_set_processing_3/write_ply_points_example.cpp +++ b/Point_set_processing_3/examples/Point_set_processing_3/write_ply_points_example.cpp @@ -56,14 +56,14 @@ int main(int, char**) std::ofstream f("out.ply", std::ios::binary); CGAL::set_binary_mode(f); // The PLY file will be written in the binary format - CGAL::write_PLY_with_properties(f, points, - CGAL::make_ply_point_writer (Point_map()), - std::make_tuple(Color_map(), - CGAL::PLY_property("red"), - CGAL::PLY_property("green"), - CGAL::PLY_property("blue"), - CGAL::PLY_property("alpha")), - std::make_pair(Intensity_map(), CGAL::PLY_property("intensity"))); + CGAL::IO::write_PLY_with_properties(f, points, + CGAL::make_ply_point_writer (Point_map()), + std::make_tuple(Color_map(), + CGAL::IO::PLY_property("red"), + CGAL::IO::PLY_property("green"), + CGAL::IO::PLY_property("blue"), + CGAL::IO::PLY_property("alpha")), + std::make_pair(Intensity_map(), CGAL::IO::PLY_property("intensity"))); return EXIT_SUCCESS; } diff --git a/Point_set_processing_3/include/CGAL/IO/read_las_points.h b/Point_set_processing_3/include/CGAL/IO/read_las_points.h index 1a907e6d002..81148189230 100644 --- a/Point_set_processing_3/include/CGAL/IO/read_las_points.h +++ b/Point_set_processing_3/include/CGAL/IO/read_las_points.h @@ -125,6 +125,8 @@ typedef Base I; } /// \endcond +namespace IO { + /** \ingroup PkgPointSetProcessing3IOLas @@ -572,10 +574,14 @@ bool read_LAS(const std::string& fname, OutputIterator output) /// \endcond +} // namespace IO + #ifndef CGAL_NO_DEPRECATED_CODE /// \cond SKIP_IN_MANUAL +using IO::make_las_point_reader; + template @@ -612,7 +618,7 @@ CGAL_DEPRECATED bool read_las_points_with_properties(std::istream& is, OutputIterator output, PropertyHandler&& ... properties) { - return read_LAS_with_properties(is, output, std::forward(properties)...); + return IO::read_LAS_with_properties(is, output, std::forward(properties)...); } /// \cond SKIP_IN_MANUAL @@ -623,7 +629,7 @@ CGAL_DEPRECATED bool read_las_points_with_properties(std::istream& is, OutputIterator output, PropertyHandler&& ... properties) { - return read_LAS_with_properties::type>(is, output, std::forward(properties)...); + return IO::read_LAS_with_properties::type>(is, output, std::forward(properties)...); } /// \endcond @@ -646,7 +652,7 @@ CGAL_DEPRECATED bool read_las_points(std::istream& is, typename CGAL::GetPointMap, CGAL_BGL_NP_CLASS>::type point_map = choose_parameter, CGAL_BGL_NP_CLASS>::type>(get_parameter(np, internal_np::point_map)); - return read_LAS(is, output, make_las_point_reader(point_map)); + return IO::read_LAS(is, output, make_las_point_reader(point_map)); } /// \cond SKIP_IN_MANUAL @@ -655,21 +661,21 @@ CGAL_DEPRECATED bool read_las_points(std::istream& is, template CGAL_DEPRECATED bool read_las_points(std::istream& is, OutputIterator output) { - return read_LAS(is, output, CGAL::parameters::all_default()); + return IO::read_LAS(is, output, CGAL::parameters::all_default()); } // variant with default output iterator value type template CGAL_DEPRECATED bool read_las_points(std::istream& is, OutputIterator output, const CGAL_BGL_NP_CLASS& np) { - return read_LAS::type>(is, output, np); + return IO::read_LAS::type>(is, output, np); } // variant with default NP and output iterator value type template CGAL_DEPRECATED bool read_las_points(std::istream& is, OutputIterator output) { - return read_LAS::type>(is, output, CGAL::parameters::all_default()); + return IO::read_LAS::type>(is, output, CGAL::parameters::all_default()); } /// \endcond diff --git a/Point_set_processing_3/include/CGAL/IO/read_off_points.h b/Point_set_processing_3/include/CGAL/IO/read_off_points.h index 5c06ffcefdc..8c966bc236a 100644 --- a/Point_set_processing_3/include/CGAL/IO/read_off_points.h +++ b/Point_set_processing_3/include/CGAL/IO/read_off_points.h @@ -40,6 +40,8 @@ namespace CGAL { +namespace IO { + /** \ingroup PkgPointSetProcessing3IOOff @@ -248,7 +250,7 @@ bool read_OFF(const std::string& fname, ) { std::ifstream is(fname); - return read_OFF(is, output, np); + return read_OFF(is, output, np); } /// \cond SKIP_IN_MANUAL @@ -303,6 +305,8 @@ bool read_OFF(const std::string& fname, OutputIterator output, /// \endcond +} // namespace IO + #ifndef CGAL_NO_DEPRECATED_CODE /// \cond SKIP_IN_MANUAL @@ -319,10 +323,10 @@ bool read_off_points_and_normals(std::istream& is, ///< input stream. NormalPMap normal_map, ///< property map: value_type of OutputIterator -> Vector_3. const Kernel& /*kernel*/) ///< geometric traits. { - return read_OFF(is, output, - parameters::point_map(point_map) - .normal_map(normal_map) - .geom_traits(Kernel())); + return IO::read_OFF(is, output, + parameters::point_map(point_map) + .normal_map(normal_map) + .geom_traits(Kernel())); } template Vector_3. const Kernel& kernel) ///< geometric traits. { - return read_OFF::type>(is, output, - parameters::point_map(point_map) - .normal_map(normal_map) - .geom_traits(kernel)); + return IO::read_OFF::type>(is, output, + parameters::point_map(point_map) + .normal_map(normal_map) + .geom_traits(kernel)); } template Point_3. NormalPMap normal_map) ///< property map: value_type of OutputIterator -> Vector_3. { - return read_OFF(is, output, parameters::point_map(point_map) + return IO::read_OFF(is, output, parameters::point_map(point_map) .normal_map(normal_map)); } @@ -365,9 +369,9 @@ bool read_off_points_and_normals(std::istream& is, ///< input stream. PointPMap point_map, ///< property map: value_type of OutputIterator -> Point_3. NormalPMap normal_map) ///< property map: value_type of OutputIterator -> Vector_3. { - return read_OFF::type>(is, output, - parameters::point_map(point_map) - .normal_map(normal_map)); + return IO::read_OFF::type>(is, output, + parameters::point_map(point_map) + .normal_map(normal_map)); } template Vector_3. { - return read_OFF(is, output, parameters::normal_map(normal_map)); + return IO::read_OFF(is, output, parameters::normal_map(normal_map)); } template Vector_3. { - return read_OFF::type>(is, output, parameters::normal_map(normal_map)); + return IO::read_OFF::type>(is, output, parameters::normal_map(normal_map)); } template CGAL_DEPRECATED bool read_off_points(std::istream& is, OutputIterator output) { - return read_OFF(is, output); + return IO::read_OFF(is, output); } // variant with default output iterator value type template CGAL_DEPRECATED bool read_off_points(std::istream& is, OutputIterator output, const CGAL_BGL_NP_CLASS& np) { - return read_OFF(is, output, np); + return IO::read_OFF(is, output, np); } // variant with default NP and output iterator value type template CGAL_DEPRECATED bool read_off_points(std::istream& is, OutputIterator output) { - return read_OFF(is, output, CGAL::parameters::all_default()); + return IO::read_OFF(is, output, CGAL::parameters::all_default()); } /// \endcond diff --git a/Point_set_processing_3/include/CGAL/IO/read_ply_points.h b/Point_set_processing_3/include/CGAL/IO/read_ply_points.h index 6cf449e48e6..4afebdf219b 100644 --- a/Point_set_processing_3/include/CGAL/IO/read_ply_points.h +++ b/Point_set_processing_3/include/CGAL/IO/read_ply_points.h @@ -43,6 +43,8 @@ namespace CGAL { +namespace IO { + #ifdef DOXYGEN_RUNNING // Document some parts from Stream_support here for convenience /** \ingroup PkgPointSetProcessing3IOPly @@ -398,6 +400,8 @@ bool read_PLY(const std::string& fname, OutputIterator output, /// \endcond +} // namespace IO + #ifndef CGAL_NO_DEPRECATED_CODE /// \cond SKIP_IN_MANUAL @@ -412,7 +416,7 @@ bool read_ply_points_and_normals(std::istream& is, ///< input stream. PointMap point_map, ///< property map: value_type of OutputIterator -> Point_3. NormalMap normal_map) ///< property map: value_type of OutputIterator -> Vector_3. { - return read_PLY(is, output, parameters::point_map(point_map) + return IO::read_PLY(is, output, parameters::point_map(point_map) .normal_map(normal_map)); } @@ -425,7 +429,7 @@ bool read_ply_points_and_normals(std::istream& is, ///< input stream. PointMap point_map, ///< property map: value_type of OutputIterator -> Point_3. NormalMap normal_map) ///< property map: value_type of OutputIterator -> Vector_3. { - return read_PLY::type>(is, output, parameters::point_map(point_map) + return IO::read_PLY::type>(is, output, parameters::point_map(point_map) .normal_map(normal_map)); } @@ -437,7 +441,7 @@ bool read_ply_points_and_normals(std::istream& is, ///< input stream. OutputIterator output, ///< output iterator over points. NormalMap normal_map) ///< property map: value_type of OutputIterator -> Vector_3. { - return read_PLY(is, output, parameters::normal_map(normal_map)); + return IO::read_PLY(is, output, parameters::normal_map(normal_map)); } template @@ -446,7 +450,7 @@ bool read_ply_points_and_normals(std::istream& is, ///< input stream. OutputIterator output, ///< output iterator over points. NormalMap normal_map) ///< property map: value_type of OutputIterator -> Vector_3. { - return read_PLY::type>(is, output, parameters::normal_map(normal_map)); + return IO::read_PLY::type>(is, output, parameters::normal_map(normal_map)); } template Point_3. { - return read_PLY(is, output, parameters::point_map(point_map)); + return IO::read_PLY(is, output, parameters::point_map(point_map)); } template Point_3. { - return read_PLY::type>(is, output, parameters::point_map(point_map)); + return IO::read_PLY::type>(is, output, parameters::point_map(point_map)); } /// \endcond @@ -481,7 +485,7 @@ bool read_ply_points(std::istream& is, ///< input stream. template CGAL_DEPRECATED bool read_ply_points_with_properties(std::istream& is, OutputIterator output, PropertyHandler&& ... properties) { - return read_PLY_with_properties(is, output, std::forward(properties)...); + return IO::read_PLY_with_properties(is, output, std::forward(properties)...); } /** @@ -493,7 +497,7 @@ CGAL_DEPRECATED bool read_ply_points_with_properties(std::istream& is, OutputIte template CGAL_DEPRECATED bool read_ply_points(std::istream& is, OutputIterator output, const CGAL_BGL_NP_CLASS& np) { - return read_PLY(is, output, np); + return IO::read_PLY(is, output, np); } /// \cond SKIP_IN_MANUAL @@ -502,14 +506,14 @@ template CGAL_DEPRECATED bool read_ply_points_with_properties(std::istream& is, OutputIterator output, PropertyHandler&& ... properties) { - return read_PLY_with_properties::type>(is, output, std::forward(properties)...); + return IO::read_PLY_with_properties::type>(is, output, std::forward(properties)...); } template CGAL_DEPRECATED bool read_ply_points(std::istream& is, OutputIterator output) { - return read_PLY(is, output, parameters::all_default()); + return IO::read_PLY(is, output, parameters::all_default()); } // variant with default output iterator value type @@ -517,14 +521,14 @@ template CGAL_DEPRECATED bool read_ply_points(std::istream& is, OutputIterator output, const CGAL_BGL_NP_CLASS& np) { - return read_PLY::type>(is, output, np); + return IO::read_PLY::type>(is, output, np); } // variant with default NP and output iterator value type template CGAL_DEPRECATED bool read_ply_points(std::istream& is, OutputIterator output) { - return read_PLY::type>(is, output, parameters::all_default()); + return IO::read_PLY::type>(is, output, parameters::all_default()); } /// \endcond diff --git a/Point_set_processing_3/include/CGAL/IO/read_points.h b/Point_set_processing_3/include/CGAL/IO/read_points.h index 4b4a8eee0f6..6dec414fccc 100644 --- a/Point_set_processing_3/include/CGAL/IO/read_points.h +++ b/Point_set_processing_3/include/CGAL/IO/read_points.h @@ -28,6 +28,8 @@ namespace CGAL { +namespace IO { + /** \ingroup PkgPointSetProcessing3IO @@ -128,6 +130,6 @@ bool read_points(const std::string& fname, OutputIterator output) /// \endcond -} // namespace CGAL +} } // namespace CGAL::IO #endif // CGAL_POINT_SET_PROCESSING_READ_POINTS_H diff --git a/Point_set_processing_3/include/CGAL/IO/read_xyz_points.h b/Point_set_processing_3/include/CGAL/IO/read_xyz_points.h index 00f64422095..0fe8b27888f 100644 --- a/Point_set_processing_3/include/CGAL/IO/read_xyz_points.h +++ b/Point_set_processing_3/include/CGAL/IO/read_xyz_points.h @@ -37,6 +37,8 @@ namespace CGAL { +namespace IO { + /** \ingroup PkgPointSetProcessing3IOXyz @@ -228,7 +230,7 @@ bool read_XYZ(const std::string& fname, const CGAL_BGL_NP_CLASS& np) { std::ifstream is(fname); - return read_XYZ(is, output, np); + return read_XYZ(is, output, np); } /// \cond SKIP_IN_MANUAL @@ -275,6 +277,8 @@ bool read_XYZ(const std::string& fname, OutputIterator output) return read_XYZ::type>(fname, output, parameters::all_default()); } +} // namespace IO + /// \endcond #ifndef CGAL_NO_DEPRECATED_CODE @@ -293,10 +297,10 @@ bool read_xyz_points_and_normals(std::istream& is, ///< input stream. NormalPMap normal_map, ///< property map: value_type of OutputIterator -> Vector_3. const Kernel& /*kernel*/) ///< geometric traits. { - return read_XYZ(is, output, - parameters::point_map(point_map) - .normal_map(normal_map) - .geom_traits(Kernel())); + return IO::read_XYZ(is, output, + parameters::point_map(point_map) + .normal_map(normal_map) + .geom_traits(Kernel())); } template Vector_3. const Kernel& kernel) ///< geometric traits. { - return read_XYZ::type>(is, output, - parameters::point_map(point_map) - .normal_map(normal_map) - .geom_traits(kernel)); + return IO::read_XYZ::type>(is, output, + parameters::point_map(point_map) + .normal_map(normal_map) + .geom_traits(kernel)); } template Point_3. NormalPMap normal_map) ///< property map: value_type of OutputIterator -> Vector_3. { - return read_XYZ(is, output, - parameters::point_map(point_map) - .normal_map(normal_map)); + return IO::read_XYZ(is, output, + parameters::point_map(point_map) + .normal_map(normal_map)); } template Point_3. NormalPMap normal_map) ///< property map: value_type of OutputIterator -> Vector_3. { - return read_XYZ::type>(is, output, - parameters::point_map(point_map) - .normal_map(normal_map)); + return IO::read_XYZ::type>(is, output, + parameters::point_map(point_map) + .normal_map(normal_map)); } template Vector_3. { - return read_XYZ(is, output, parameters::normal_map(normal_map)); + return IO::read_XYZ(is, output, parameters::normal_map(normal_map)); } template Vector_3. { - return read_XYZ::type>(is, output, - parameters::normal_map(normal_map)); + return IO::read_XYZ::type>(is, output, + parameters::normal_map(normal_map)); } template Point_3. const Kernel& kernel) ///< geometric traits. { - return read_XYZ(is, output, - parameters::point_map(point_map) - .geom_traits(kernel)); + return IO::read_XYZ(is, output, + parameters::point_map(point_map) + .geom_traits(kernel)); } template Point_3. const Kernel& kernel) ///< geometric traits. { - return read_XYZ::type>(is, output, - parameters::point_map(point_map) - .geom_traits(kernel)); + return IO::read_XYZ::type>(is, output, + parameters::point_map(point_map) + .geom_traits(kernel)); } template Point_3. { - return read_XYZ(is, output, parameters::point_map(point_map)); + return IO::read_XYZ(is, output, parameters::point_map(point_map)); } template Point_3. { - return read_XYZ::type>(is, output, - parameters::point_map(point_map)); + return IO::read_XYZ::type>(is, output, + parameters::point_map(point_map)); } /// \endcond @@ -435,7 +439,7 @@ CGAL_DEPRECATED bool read_xyz_points(std::istream& is, OutputIterator output, const CGAL_BGL_NP_CLASS& np) { - return read_XYZ(is, output, np); + return IO::read_XYZ(is, output, np); } /// \cond SKIP_IN_MANUAL @@ -445,7 +449,7 @@ template (is, output, parameters::all_default()); + return IO::read_XYZ(is, output, parameters::all_default()); } template ::type>(is, output, np); + return IO::read_XYZ::type>(is, output, np); } template CGAL_DEPRECATED bool read_xyz_points(std::istream& is, OutputIterator output) { - return read_XYZ::type>(is, output, parameters::all_default()); + return IO::read_XYZ::type>(is, output, parameters::all_default()); } /// \endcond diff --git a/Point_set_processing_3/include/CGAL/IO/write_las_points.h b/Point_set_processing_3/include/CGAL/IO/write_las_points.h index fc54662f2b8..56bd3144229 100644 --- a/Point_set_processing_3/include/CGAL/IO/write_las_points.h +++ b/Point_set_processing_3/include/CGAL/IO/write_las_points.h @@ -66,6 +66,8 @@ namespace CGAL { +namespace IO { + /** \ingroup PkgPointSetProcessing3IOLas @@ -286,7 +288,7 @@ bool write_LAS(std::ostream& os, const PointRange& points, const CGAL_BGL_NP_CLASS& np #ifndef DOXYGEN_RUNNING - , typename boost::enable_if >::type* = nullptr + , typename boost::enable_if >::type* = nullptr #endif ) { @@ -341,7 +343,7 @@ bool write_LAS(const std::string& filename, const PointRange& points, const CGAL_BGL_NP_CLASS& np #ifndef DOXYGEN_RUNNING - , typename boost::enable_if >::type* = nullptr + , typename boost::enable_if >::type* = nullptr #endif ) { @@ -355,14 +357,14 @@ bool write_LAS(const std::string& filename, // variant with default NP template bool write_LAS(std::ostream& os, const PointRange& points, - typename boost::enable_if >::type* = nullptr) + typename boost::enable_if >::type* = nullptr) { return write_LAS(os, points, CGAL::Point_set_processing_3::parameters::all_default(points)); } template bool write_LAS(const std::string& filename, const PointRange& points, - typename boost::enable_if >::type* = nullptr) + typename boost::enable_if >::type* = nullptr) { std::ofstream os(filename, std::ios::binary); CGAL::set_mode(os, CGAL::IO::BINARY); @@ -371,8 +373,12 @@ bool write_LAS(const std::string& filename, const PointRange& points, /// \endcond +} // namespace IO + #ifndef CGAL_NO_DEPRECATED_CODE +using IO::make_las_point_writer; + /// \cond SKIP_IN_MANUAL template Point_3. { CGAL::Iterator_range points (first, beyond); - return write_LAS(os, points, parameters::point_map(point_map)); + return IO::write_LAS(os, points, parameters::point_map(point_map)); } template @@ -394,7 +400,7 @@ bool write_las_points(std::ostream& os, ///< output stream. ForwardIterator beyond) ///< past-the-end input point. { CGAL::Iterator_range points (first, beyond); - return write_LAS(os, points); + return IO::write_LAS(os, points); } /// \endcond @@ -415,7 +421,7 @@ CGAL_DEPRECATED bool write_las_points_with_properties(std::ostream& os, LAS_property::Z> point_property, PropertyHandler&& ... properties) { - return write_LAS_with_properties(os, points, point_property, std::forward(properties)...); + return IO::write_LAS_with_properties(os, points, point_property, std::forward(properties)...); } /** @@ -426,7 +432,7 @@ CGAL_DEPRECATED bool write_las_points_with_properties(std::ostream& os, template bool write_las_points(std::ostream& os, const PointRange& points, const CGAL_BGL_NP_CLASS& np) { - return write_LAS(os, points, np); + return IO::write_LAS(os, points, np); } #endif //CGAL_NO_DEPRECATED_CODE diff --git a/Point_set_processing_3/include/CGAL/IO/write_off_points.h b/Point_set_processing_3/include/CGAL/IO/write_off_points.h index ab5a9169338..5b7b59d5d6e 100644 --- a/Point_set_processing_3/include/CGAL/IO/write_off_points.h +++ b/Point_set_processing_3/include/CGAL/IO/write_off_points.h @@ -89,6 +89,8 @@ bool write_OFF_PSP(std::ostream& os, } // namespace internal } // namespace Point_set_processing_3 +namespace IO { + /** \ingroup PkgPointSetProcessing3IOOff @@ -135,7 +137,7 @@ bool write_OFF(std::ostream& os, const PointRange& points, const CGAL_BGL_NP_CLASS& np #ifndef DOXYGEN_RUNNING - , typename boost::enable_if >::type* = nullptr + , typename boost::enable_if >::type* = nullptr #endif ) { @@ -146,7 +148,7 @@ bool write_OFF(std::ostream& os, template bool write_OFF(std::ostream& os, const PointRange& points, - typename boost::enable_if >::type* = nullptr) + typename boost::enable_if >::type* = nullptr) { return write_OFF(os, points, parameters::all_default()); } @@ -202,7 +204,7 @@ bool write_OFF(const std::string& filename, const PointRange& points, const CGAL_BGL_NP_CLASS& np #ifndef DOXYGEN_RUNNING - , typename boost::enable_if >::type* = nullptr + , typename boost::enable_if >::type* = nullptr #endif ) { @@ -215,7 +217,7 @@ bool write_OFF(const std::string& filename, template bool write_OFF(const std::string& filename, const PointRange& points, - typename boost::enable_if >::type* = nullptr) + typename boost::enable_if >::type* = nullptr) { std::ofstream os(filename); return write_OFF(os, points, parameters::all_default()); @@ -223,6 +225,8 @@ bool write_OFF(const std::string& filename, const PointRange& points, /// \endcond +} // IO namespace + #ifndef CGAL_NO_DEPRECATED_CODE /// \cond SKIP_IN_MANUAL @@ -325,7 +329,7 @@ bool write_off_points(std::ostream& os, ///< output stream. template CGAL_DEPRECATED bool write_off_points(std::ostream& os, const PointRange& points, const CGAL_BGL_NP_CLASS& np) { - return write_OFF(os, points, np); + return IO::write_OFF(os, points, np); } /// \cond SKIP_IN_MANUAL @@ -334,7 +338,7 @@ CGAL_DEPRECATED bool write_off_points(std::ostream& os, const PointRange& points template CGAL_DEPRECATED bool write_off_points(std::ostream& os, const PointRange& points) { - return write_OFF(os, points, parameters::all_default()); + return IO::write_OFF(os, points, parameters::all_default()); } /// \endcond diff --git a/Point_set_processing_3/include/CGAL/IO/write_ply_points.h b/Point_set_processing_3/include/CGAL/IO/write_ply_points.h index 14cf9256949..994e6ccfcfa 100644 --- a/Point_set_processing_3/include/CGAL/IO/write_ply_points.h +++ b/Point_set_processing_3/include/CGAL/IO/write_ply_points.h @@ -40,6 +40,8 @@ namespace CGAL { +namespace IO { + #ifdef DOXYGEN_RUNNING // Document some parts from Stream_support here for convenience /** \ingroup PkgPointSetProcessing3IOPly @@ -189,7 +191,7 @@ bool write_PLY(std::ostream& os, const PointRange& points, const CGAL_BGL_NP_CLASS& np #ifndef DOXYGEN_RUNNING - , typename boost::enable_if >::type* = nullptr + , typename boost::enable_if >::type* = nullptr #endif ) { @@ -226,7 +228,7 @@ bool write_PLY(std::ostream& os, template bool write_PLY(std::ostream& os, const PointRange& points, - typename boost::enable_if >::type* = nullptr) + typename boost::enable_if >::type* = nullptr) { return write_PLY(os, points, parameters::all_default()); } @@ -288,7 +290,7 @@ bool write_PLY(const std::string& filename, const PointRange& points, const CGAL_BGL_NP_CLASS& np #ifndef DOXYGEN_RUNNING - , typename boost::enable_if >::type* = nullptr + , typename boost::enable_if >::type* = nullptr #endif ) { @@ -311,13 +313,15 @@ bool write_PLY(const std::string& filename, template bool write_PLY(const std::string& filename, const PointRange& points, - typename boost::enable_if >::type* = nullptr) + typename boost::enable_if >::type* = nullptr) { return write_PLY(filename, points, parameters::all_default()); } /// \endcond +} // namespace IO + #ifndef CGAL_NO_DEPRECATED_CODE /// \cond SKIP_IN_MANUAL @@ -333,7 +337,7 @@ bool write_ply_points_and_normals(std::ostream& os, ///< output stream. VectorMap normal_map) ///< property map: value_type of OutputIterator -> Vector_3. { CGAL::Iterator_range points (first, beyond); - return write_PLY(os, points, parameters::point_map(point_map) + return IO::write_PLY(os, points, parameters::point_map(point_map) .normal_map(normal_map)); } @@ -346,7 +350,7 @@ bool write_ply_points_and_normals(std::ostream& os, ///< output stream. VectorMap normal_map) ///< property map: value_type of OutputIterator -> Vector_3. { CGAL::Iterator_range points(first, beyond); - return write_PLY(os, points, parameters::normal_map (normal_map)); + return IO::write_PLY(os, points, parameters::normal_map (normal_map)); } template Point_3. { CGAL::Iterator_range points(first, beyond); - return write_PLY(os, points, parameters::point_map(point_map)); + return IO::write_PLY(os, points, parameters::point_map(point_map)); } template @@ -368,7 +372,7 @@ bool write_ply_points(std::ostream& os, ///< output stream. ForwardIterator beyond) ///< past-the-end input point. { CGAL::Iterator_range points (first, beyond); - return write_PLY(os, points); + return IO::write_PLY(os, points); } /// \endcond @@ -385,7 +389,7 @@ CGAL_DEPRECATED bool write_ply_points_with_properties(std::ostream& os, ///< out const PointRange& points, ///< input point range. PropertyHandler&& ... properties) ///< parameter pack of property handlers { - return write_PLY_with_properties(os, points, std::forward(properties)...); + return IO::write_PLY_with_properties(os, points, std::forward(properties)...); } /** @@ -397,7 +401,7 @@ CGAL_DEPRECATED bool write_ply_points_with_properties(std::ostream& os, ///< out template CGAL_DEPRECATED bool write_ply_points(std::ostream& os, const PointRange& points, const CGAL_BGL_NP_CLASS& np) { - return write_PLY(os, points, np); + return IO::write_PLY(os, points, np); } /// \cond SKIP_IN_MANUAL @@ -405,7 +409,7 @@ CGAL_DEPRECATED bool write_ply_points(std::ostream& os, const PointRange& points template CGAL_DEPRECATED bool write_ply_points(std::ostream& os, const PointRange& points) { - return write_PLY(os, points, parameters::all_default()); + return IO::write_PLY(os, points, parameters::all_default()); } /// \endcond diff --git a/Point_set_processing_3/include/CGAL/IO/write_points.h b/Point_set_processing_3/include/CGAL/IO/write_points.h index e663fbe318f..faccb3b08b1 100644 --- a/Point_set_processing_3/include/CGAL/IO/write_points.h +++ b/Point_set_processing_3/include/CGAL/IO/write_points.h @@ -33,6 +33,8 @@ namespace CGAL { +namespace IO { + /** \ingroup PkgPointSetProcessing3IO @@ -96,7 +98,7 @@ bool write_points(const std::string& fname, const PointRange& points, const CGAL_BGL_NP_CLASS& np, #ifndef DOXYGEN_RUNNING - typename boost::enable_if >::type* = nullptr + typename boost::enable_if >::type* = nullptr #endif ) { @@ -120,13 +122,13 @@ bool write_points(const std::string& fname, template bool write_points(const std::string& fname,const PointRange& points, - typename boost::enable_if >::type* = nullptr) + typename boost::enable_if >::type* = nullptr) { return write_points(fname, points, parameters::all_default()); } /// \endcond -} // namespace CGAL +} } // namespace CGAL::IO #endif // CGAL_POINT_SET_PROCESSING_WRITE_POINTS_H diff --git a/Point_set_processing_3/include/CGAL/IO/write_xyz_points.h b/Point_set_processing_3/include/CGAL/IO/write_xyz_points.h index 5ccfa93d943..a3d3babb2a1 100644 --- a/Point_set_processing_3/include/CGAL/IO/write_xyz_points.h +++ b/Point_set_processing_3/include/CGAL/IO/write_xyz_points.h @@ -86,6 +86,8 @@ bool write_XYZ_PSP(std::ostream& os, } // namespace internal } // Point_set_processing_3 +namespace IO { + /** \ingroup PkgPointSetProcessing3IOXyz @@ -132,7 +134,7 @@ bool write_XYZ(std::ostream& os, const PointRange& points, const CGAL_BGL_NP_CLASS& np #ifndef DOXYGEN_RUNNING - , typename boost::enable_if >::type* = nullptr + , typename boost::enable_if >::type* = nullptr #endif ) { @@ -143,7 +145,7 @@ bool write_XYZ(std::ostream& os, template bool write_XYZ(std::ostream& os, const PointRange& points, - typename boost::enable_if >::type* = nullptr) + typename boost::enable_if >::type* = nullptr) { return write_XYZ(os, points, parameters::all_default()); } @@ -196,7 +198,7 @@ bool write_XYZ(const std::string& filename, const PointRange& points, const CGAL_BGL_NP_CLASS& np #ifndef DOXYGEN_RUNNING - , typename boost::enable_if >::type* = nullptr + , typename boost::enable_if >::type* = nullptr #endif ) { @@ -208,7 +210,7 @@ bool write_XYZ(const std::string& filename, template bool write_XYZ(const std::string& filename, const PointRange& points, - typename boost::enable_if >::type* = nullptr) + typename boost::enable_if >::type* = nullptr) { std::ofstream os(filename); return write_XYZ(os, points, parameters::all_default()); @@ -216,6 +218,8 @@ bool write_XYZ(const std::string& filename, const PointRange& points, /// \endcond +} // namespace IO + #ifndef CGAL_NO_DEPRECATED_CODE /// \cond SKIP_IN_MANUAL @@ -233,10 +237,10 @@ bool write_xyz_points_and_normals(std::ostream& os, ///< output stream. const Kernel& /*kernel*/) ///< geometric traits. { CGAL::Iterator_range points(first, beyond); - return write_XYZ(os, points, - parameters::point_map(point_map) - .normal_map(normal_map) - .geom_traits(Kernel())); + return IO::write_XYZ(os, points, + parameters::point_map(point_map) + .normal_map(normal_map) + .geom_traits(Kernel())); } template Vector_3. { CGAL::Iterator_range points (first, beyond); - return write_XYZ(os, points, - parameters::point_map(point_map) - .normal_map(normal_map)); + return IO::write_XYZ(os, points, + parameters::point_map(point_map) + .normal_map(normal_map)); } template Vector_3. { CGAL::Iterator_range points(first, beyond); - return write_XYZ(os, points, parameters::normal_map(normal_map)); + return IO::write_XYZ(os, points, parameters::normal_map(normal_map)); } template points (first, beyond); - return write_XYZ(os, points, parameters::point_map(point_map) + return IO::write_XYZ(os, points, parameters::point_map(point_map) .geom_traits (kernel)); } @@ -292,7 +296,7 @@ bool write_xyz_points(std::ostream& os, ///< output stream. PointMap point_map) ///< property map: value_type of OutputIterator -> Point_3. { CGAL::Iterator_range points(first, beyond); - return write_XYZ(os, points, parameters::point_map(point_map)); + return IO::write_XYZ(os, points, parameters::point_map(point_map)); } template @@ -302,7 +306,7 @@ bool write_xyz_points(std::ostream& os, ///< output stream. ForwardIterator beyond) ///< past-the-end input point. { CGAL::Iterator_range points (first, beyond); - return write_XYZ(os, points); + return IO::write_XYZ(os, points); } /// \endcond @@ -316,7 +320,7 @@ bool write_xyz_points(std::ostream& os, ///< output stream. template CGAL_DEPRECATED bool write_xyz_points(std::ostream& os, const PointRange& points, const CGAL_BGL_NP_CLASS& np) { - return write_XYZ(os, points, np); + return IO::write_XYZ(os, points, np); } /// \cond SKIP_IN_MANUAL @@ -324,7 +328,7 @@ CGAL_DEPRECATED bool write_xyz_points(std::ostream& os, const PointRange& points template CGAL_DEPRECATED bool write_xyz_points(std::ostream& os, const PointRange& points) { - return write_XYZ(os, points, parameters::all_default(points)); + return IO::write_XYZ(os, points, parameters::all_default(points)); } /// \endcond diff --git a/Point_set_processing_3/test/Point_set_processing_3/analysis_test.cpp b/Point_set_processing_3/test/Point_set_processing_3/analysis_test.cpp index 5745b19fbb3..0912829311c 100644 --- a/Point_set_processing_3/test/Point_set_processing_3/analysis_test.cpp +++ b/Point_set_processing_3/test/Point_set_processing_3/analysis_test.cpp @@ -99,7 +99,7 @@ int main(int argc, char * argv[]) std::cerr << "Open " << argv[i] << " for reading..." << std::endl; // If XYZ file format: - if(CGAL::read_points(argv[i], std::back_inserter(points))) + if(CGAL::IO::read_points(argv[i], std::back_inserter(points))) { std::cerr << "ok (" << points.size() << " points)" << std::endl; } diff --git a/Point_set_processing_3/test/Point_set_processing_3/bilateral_smoothing_test.cpp b/Point_set_processing_3/test/Point_set_processing_3/bilateral_smoothing_test.cpp index 45dad2baa51..479dc82fd93 100644 --- a/Point_set_processing_3/test/Point_set_processing_3/bilateral_smoothing_test.cpp +++ b/Point_set_processing_3/test/Point_set_processing_3/bilateral_smoothing_test.cpp @@ -108,10 +108,10 @@ int main(int argc, char * argv[]) std::cerr << "Opening " << argv[i] << " for reading..." << std::endl; // If XYZ file format: - if(CGAL::read_points(argv[i], - std::back_inserter(points), - CGAL::parameters::point_map(CGAL::First_of_pair_property_map()) - .normal_map(CGAL::Second_of_pair_property_map()))) + if(CGAL::IO::read_points(argv[i], + std::back_inserter(points), + CGAL::parameters::point_map(CGAL::First_of_pair_property_map()) + .normal_map(CGAL::Second_of_pair_property_map()))) { std::cerr << "ok (" << points.size() << " points)" << std::endl; } diff --git a/Point_set_processing_3/test/Point_set_processing_3/edge_aware_upsample_test.cpp b/Point_set_processing_3/test/Point_set_processing_3/edge_aware_upsample_test.cpp index c6279fbeb48..efd939f928b 100644 --- a/Point_set_processing_3/test/Point_set_processing_3/edge_aware_upsample_test.cpp +++ b/Point_set_processing_3/test/Point_set_processing_3/edge_aware_upsample_test.cpp @@ -118,10 +118,10 @@ int main(int argc, char * argv[]) std::cerr << "Opening " << argv[i] << " for reading..." << std::endl; // If XYZ file format: - if(CGAL::read_points(argv[i], - std::back_inserter(points), - CGAL::parameters::point_map(CGAL::First_of_pair_property_map()) - .normal_map(CGAL::Second_of_pair_property_map()))) + if(CGAL::IO::read_points(argv[i], + std::back_inserter(points), + CGAL::parameters::point_map(CGAL::First_of_pair_property_map()) + .normal_map(CGAL::Second_of_pair_property_map()))) { std::cerr << "ok (" << points.size() << " points)" << std::endl; } diff --git a/Point_set_processing_3/test/Point_set_processing_3/normal_estimation_test.cpp b/Point_set_processing_3/test/Point_set_processing_3/normal_estimation_test.cpp index cd011c9b71f..a2af205fa05 100644 --- a/Point_set_processing_3/test/Point_set_processing_3/normal_estimation_test.cpp +++ b/Point_set_processing_3/test/Point_set_processing_3/normal_estimation_test.cpp @@ -310,10 +310,10 @@ int main(int argc, char * argv[]) { std::ifstream stream(input_filename.c_str()); success = stream && - CGAL::read_OFF(stream, - std::back_inserter(points), - CGAL::parameters::normal_map - (CGAL::make_normal_of_point_with_normal_map(PointList::value_type())) + CGAL::IO::read_OFF(stream, + std::back_inserter(points), + CGAL::parameters::normal_map + (CGAL::make_normal_of_point_with_normal_map(PointList::value_type())) ); } // If XYZ file format @@ -321,9 +321,9 @@ int main(int argc, char * argv[]) extension == ".pwn" || extension == ".PWN") { std::ifstream stream(input_filename.c_str()); - success = stream && CGAL::read_XYZ(stream, - std::back_inserter(points), - CGAL::parameters::normal_map(CGAL::make_normal_of_point_with_normal_map(PointList::value_type()))); + success = stream && CGAL::IO::read_XYZ(stream, + std::back_inserter(points), + CGAL::parameters::normal_map(CGAL::make_normal_of_point_with_normal_map(PointList::value_type()))); } if (success) { diff --git a/Point_set_processing_3/test/Point_set_processing_3/read_test.cpp b/Point_set_processing_3/test/Point_set_processing_3/read_test.cpp index e4dacad400d..1f3217ca8c4 100644 --- a/Point_set_processing_3/test/Point_set_processing_3/read_test.cpp +++ b/Point_set_processing_3/test/Point_set_processing_3/read_test.cpp @@ -17,33 +17,33 @@ typedef std::pair PointVectorPair; bool read(std::string s) { std::vector pv_pairs; - return CGAL::read_points(s, back_inserter(pv_pairs), - CGAL::parameters::point_map(CGAL::First_of_pair_property_map()) - .normal_map(CGAL::Second_of_pair_property_map())); + return CGAL::IO::read_points(s, back_inserter(pv_pairs), + CGAL::parameters::point_map(CGAL::First_of_pair_property_map()) + .normal_map(CGAL::Second_of_pair_property_map())); } bool read(std::string s, std::vector& pv_pairs) { - return CGAL::read_points(s, back_inserter(pv_pairs), - CGAL::parameters::point_map(CGAL::First_of_pair_property_map()) - .normal_map(CGAL::Second_of_pair_property_map())); + return CGAL::IO::read_points(s, back_inserter(pv_pairs), + CGAL::parameters::point_map(CGAL::First_of_pair_property_map()) + .normal_map(CGAL::Second_of_pair_property_map())); } bool read_off(std::string s, std::vector& pv_pairs) { - return CGAL::read_OFF(s, back_inserter(pv_pairs), - CGAL::parameters::point_map(CGAL::First_of_pair_property_map()) - .normal_map(CGAL::Second_of_pair_property_map())); + return CGAL::IO::read_OFF(s, back_inserter(pv_pairs), + CGAL::parameters::point_map(CGAL::First_of_pair_property_map()) + .normal_map(CGAL::Second_of_pair_property_map())); } bool read_ply(std::string s, std::vector& pv_pairs) { - return CGAL::read_PLY(s, back_inserter(pv_pairs), - CGAL::parameters::point_map(CGAL::First_of_pair_property_map()) - .normal_map(CGAL::Second_of_pair_property_map())); + return CGAL::IO::read_PLY(s, back_inserter(pv_pairs), + CGAL::parameters::point_map(CGAL::First_of_pair_property_map()) + .normal_map(CGAL::Second_of_pair_property_map())); } int main() diff --git a/Point_set_processing_3/test/Point_set_processing_3/read_test_with_different_pmaps.cpp b/Point_set_processing_3/test/Point_set_processing_3/read_test_with_different_pmaps.cpp index 316e832db0d..93585569d14 100644 --- a/Point_set_processing_3/test/Point_set_processing_3/read_test_with_different_pmaps.cpp +++ b/Point_set_processing_3/test/Point_set_processing_3/read_test_with_different_pmaps.cpp @@ -77,7 +77,7 @@ bool test_no_deduction_points_and_normals_xyz(const char* file_name) // read with custom output iterator type dummy_counter::counter = 0; std::ifstream input(file_name); - CGAL::read_XYZ( + CGAL::IO::read_XYZ( input, back_inserter(indices), CGAL::parameters::point_map (points). normal_map (normals). @@ -87,7 +87,7 @@ bool test_no_deduction_points_and_normals_xyz(const char* file_name) input.clear(); input.close(); input.open(file_name); - CGAL::read_XYZ( + CGAL::IO::read_XYZ( input, back_inserter(pv_pairs), CGAL::parameters::point_map(CGAL::First_of_pair_property_map()). normal_map(CGAL::Second_of_pair_property_map()). @@ -107,7 +107,7 @@ bool test_no_deduction_points_and_normals_off(const char* file_name) // read with custom output iterator type dummy_counter::counter = 0; std::ifstream input(file_name); - CGAL::read_OFF( + CGAL::IO::read_OFF( input, back_inserter(indices), CGAL::parameters::point_map(points). normal_map(normals). @@ -117,7 +117,7 @@ bool test_no_deduction_points_and_normals_off(const char* file_name) input.clear(); input.close(); input.open(file_name); - CGAL::read_OFF( + CGAL::IO::read_OFF( input, back_inserter(pv_pairs), CGAL::parameters::point_map(CGAL::First_of_pair_property_map()). normal_map(CGAL::Second_of_pair_property_map()). @@ -136,7 +136,7 @@ bool test_no_deduction_points_xyz(const char* file_name) // read with custom output iterator type dummy_counter::counter = 0; std::ifstream input(file_name); - CGAL::read_XYZ( + CGAL::IO::read_XYZ( input, back_inserter(indices), CGAL::parameters::point_map(points_1).geom_traits(Kernel())); @@ -144,7 +144,7 @@ bool test_no_deduction_points_xyz(const char* file_name) input.clear(); input.close(); input.open(file_name); - CGAL::read_XYZ( + CGAL::IO::read_XYZ( input, back_inserter(points_2), CGAL::parameters::point_map(CGAL::Identity_property_map()). geom_traits(Kernel())); @@ -162,7 +162,7 @@ bool test_no_deduction_points_off(const char* file_name) // read with custom output iterator type dummy_counter::counter = 0; std::ifstream input(file_name); - CGAL::read_OFF( + CGAL::IO::read_OFF( input, back_inserter(indices), CGAL::parameters::point_map(points_1). geom_traits(Kernel())); @@ -171,7 +171,7 @@ bool test_no_deduction_points_off(const char* file_name) input.clear(); input.close(); input.open(file_name); - CGAL::read_OFF( + CGAL::IO::read_OFF( input, back_inserter(points_2), CGAL::parameters::point_map(CGAL::Identity_property_map()). geom_traits(Kernel())); @@ -186,14 +186,14 @@ void compile_test() { std::ifstream input; input.open("data/read_test/simple.xyz"); - CGAL::read_XYZ( + CGAL::IO::read_XYZ( input, std::front_inserter(points)); input.clear(); input.close(); input.open("data/read_test/simple.xyz"); - CGAL::read_XYZ( + CGAL::IO::read_XYZ( input, std::front_inserter(points), CGAL::parameters::point_map(CGAL::Identity_property_map())); @@ -201,7 +201,7 @@ void compile_test() { input.close(); input.open("data/read_test/simple.xyz"); - CGAL::read_XYZ( + CGAL::IO::read_XYZ( input, std::front_inserter(points), CGAL::parameters::point_map(CGAL::Identity_property_map()). @@ -211,21 +211,21 @@ void compile_test() { // this will span all OutputIteratorValueType versions input.open("data/read_test/simple.xyz"); - CGAL::read_XYZ( + CGAL::IO::read_XYZ( input, std::front_inserter(points)); input.clear(); input.close(); //----------------------------------------------------------------------- input.open("data/read_test/simple.off"); - CGAL::read_OFF( + CGAL::IO::read_OFF( input, std::front_inserter(points)); input.clear(); input.close(); input.open("data/read_test/simple.off"); - CGAL::read_OFF( + CGAL::IO::read_OFF( input, std::front_inserter(points), CGAL::parameters::point_map(CGAL::Identity_property_map())); @@ -233,7 +233,7 @@ void compile_test() { input.close(); input.open("data/read_test/simple.off"); - CGAL::read_OFF( + CGAL::IO::read_OFF( input, std::front_inserter(points), CGAL::parameters::point_map(CGAL::Identity_property_map()). @@ -243,14 +243,14 @@ void compile_test() { // this will span all OutputIteratorValueType versions input.open("data/read_test/simple.off"); - CGAL::read_OFF( + CGAL::IO::read_OFF( input, std::front_inserter(points)); input.clear(); input.close(); //----------------------------------------------------------------------- input.open("data/read_test/simple.xyz"); - CGAL::read_XYZ( + CGAL::IO::read_XYZ( input, std::front_inserter(points), CGAL::parameters::normal_map(boost::dummy_property_map())); @@ -258,7 +258,7 @@ void compile_test() { input.close(); input.open("data/read_test/simple.xyz"); - CGAL::read_XYZ( + CGAL::IO::read_XYZ( input, std::front_inserter(pv_pairs), CGAL::parameters::point_map(CGAL::First_of_pair_property_map()). @@ -267,7 +267,7 @@ void compile_test() { input.close(); input.open("data/read_test/simple.xyz"); - CGAL::read_XYZ( + CGAL::IO::read_XYZ( input, std::front_inserter(pv_pairs), CGAL::parameters::point_map(CGAL::First_of_pair_property_map()). @@ -277,7 +277,7 @@ void compile_test() { input.close(); input.open("data/read_test/simple.xyz"); - CGAL::read_XYZ( + CGAL::IO::read_XYZ( input, std::front_inserter(points), CGAL::parameters::normal_map(boost::dummy_property_map())); @@ -285,7 +285,7 @@ void compile_test() { input.close(); //----------------------------------------------------------------------- input.open("data/read_test/simple.off"); - CGAL::read_OFF( + CGAL::IO::read_OFF( input, std::front_inserter(points), CGAL::parameters::normal_map(boost::dummy_property_map())); @@ -293,7 +293,7 @@ void compile_test() { input.close(); input.open("data/read_test/simple.off"); - CGAL::read_OFF( + CGAL::IO::read_OFF( input, std::front_inserter(pv_pairs), CGAL::parameters::point_map(CGAL::First_of_pair_property_map()). @@ -302,7 +302,7 @@ void compile_test() { input.close(); input.open("data/read_test/simple.off"); - CGAL::read_OFF( + CGAL::IO::read_OFF( input, std::front_inserter(pv_pairs), CGAL::parameters::point_map(CGAL::First_of_pair_property_map()). @@ -312,7 +312,7 @@ void compile_test() { input.close(); input.open("data/read_test/simple.off"); - CGAL::read_OFF( + CGAL::IO::read_OFF( input, std::front_inserter(points), CGAL::parameters::normal_map(boost::dummy_property_map())); diff --git a/Point_set_processing_3/test/Point_set_processing_3/remove_outliers_test.cpp b/Point_set_processing_3/test/Point_set_processing_3/remove_outliers_test.cpp index 4f2966d2717..ff8b079ac9e 100644 --- a/Point_set_processing_3/test/Point_set_processing_3/remove_outliers_test.cpp +++ b/Point_set_processing_3/test/Point_set_processing_3/remove_outliers_test.cpp @@ -114,7 +114,7 @@ int main(int argc, char * argv[]) std::cerr << "Open " << argv[i] << " for reading..." << std::endl; // If XYZ file format: - if(CGAL::read_points(argv[i], std::back_inserter(points))) + if(CGAL::IO::read_points(argv[i], std::back_inserter(points))) { std::cerr << "ok (" << points.size() << " points)" << std::endl; } diff --git a/Point_set_processing_3/test/Point_set_processing_3/smoothing_test.cpp b/Point_set_processing_3/test/Point_set_processing_3/smoothing_test.cpp index 30ba51e94ff..0c9f141c13d 100644 --- a/Point_set_processing_3/test/Point_set_processing_3/smoothing_test.cpp +++ b/Point_set_processing_3/test/Point_set_processing_3/smoothing_test.cpp @@ -101,7 +101,7 @@ int main(int argc, char * argv[]) std::cerr << "Open " << argv[i] << " for reading..." << std::endl; // If XYZ file format: - if(CGAL::read_points(argv[i], std::back_inserter(points))) + if(CGAL::IO::read_points(argv[i], std::back_inserter(points))) { std::cerr << "ok (" << points.size() << " points)" << std::endl; } diff --git a/Point_set_processing_3/test/Point_set_processing_3/test_read_write_point_set.cpp b/Point_set_processing_3/test/Point_set_processing_3/test_read_write_point_set.cpp index 9b41a439b14..102a45aac3a 100644 --- a/Point_set_processing_3/test/Point_set_processing_3/test_read_write_point_set.cpp +++ b/Point_set_processing_3/test/Point_set_processing_3/test_read_write_point_set.cpp @@ -86,14 +86,14 @@ bool test_points_with_np(std::string s) points.push_back(std::make_pair(Point_3(0,0,1), Vector_3(0,0,1))); points.push_back(std::make_pair(Point_3(1,1,1), Vector_3(1,1,1))); - bool ok = CGAL::write_points(s, points, - CGAL::parameters::point_map(CGAL::First_of_pair_property_map()) - .normal_map(CGAL::Second_of_pair_property_map())); + bool ok = CGAL::IO::write_points(s, points, + CGAL::parameters::point_map(CGAL::First_of_pair_property_map()) + .normal_map(CGAL::Second_of_pair_property_map())); assert(ok); std::vector pv_pairs; - ok = CGAL::read_points(s, std::back_inserter(pv_pairs), - CGAL::parameters::point_map(CGAL::First_of_pair_property_map()) - .normal_map(CGAL::Second_of_pair_property_map())); + ok = CGAL::IO::read_points(s, std::back_inserter(pv_pairs), + CGAL::parameters::point_map(CGAL::First_of_pair_property_map()) + .normal_map(CGAL::Second_of_pair_property_map())); assert(ok); assert(pv_pairs[0] == std::make_pair(Point_3(0,0,0), Vector_3(0,0,0))); assert(pv_pairs[1] == std::make_pair(Point_3(1,0,0), Vector_3(1,0,0))); @@ -109,47 +109,47 @@ void test_##TYPE(const std::string& s) { \ std::cout << "Test Point_set_3: " << s << " extension: " << #TYPE << std::endl; \ CGAL::Point_set_3 ps; \ - bool ok = CGAL::read_##TYPE(s, ps); \ + bool ok = CGAL::IO::read_##TYPE(s, ps); \ assert(ok); \ ps.clear(); \ - ok = CGAL::read_##TYPE(s.c_str(), ps); \ + ok = CGAL::IO::read_##TYPE(s.c_str(), ps); \ assert(ok); \ ps.clear(); \ std::ifstream in(s); \ - ok = CGAL::read_##TYPE(in, ps); \ + ok = CGAL::IO::read_##TYPE(in, ps); \ assert(ok); \ const char* ext = type; \ std::string fname = "tmp."; \ fname.append(ext); \ - ok = CGAL::write_##TYPE(fname, ps); \ + ok = CGAL::IO::write_##TYPE(fname, ps); \ assert(ok); \ - ok = CGAL::write_##TYPE(fname, ps, CGAL::parameters::stream_precision(10)); \ + ok = CGAL::IO::write_##TYPE(fname, ps, CGAL::parameters::stream_precision(10)); \ assert(ok); \ - ok = CGAL::write_##TYPE(fname.c_str(), ps); \ + ok = CGAL::IO::write_##TYPE(fname.c_str(), ps); \ assert(ok); \ - ok = CGAL::write_##TYPE(fname.c_str(), ps, CGAL::parameters::stream_precision(10)); \ + ok = CGAL::IO::write_##TYPE(fname.c_str(), ps, CGAL::parameters::stream_precision(10)); \ assert(ok); \ std::ofstream out(fname); \ - ok = CGAL::write_##TYPE(out, ps); \ + ok = CGAL::IO::write_##TYPE(out, ps); \ assert(ok); \ std::ofstream out2(fname); \ - ok = CGAL::write_##TYPE(out2, ps, CGAL::parameters::stream_precision(10)); \ + ok = CGAL::IO::write_##TYPE(out2, ps, CGAL::parameters::stream_precision(10)); \ assert(ok); \ CGAL::Point_set_3 ps2; \ std::ifstream is(fname); \ - ok = CGAL::read_##TYPE(is, ps2); \ + ok = CGAL::IO::read_##TYPE(is, ps2); \ assert(ok); \ assert(ps_are_equal(ps, ps2)); \ - ok = CGAL::write_point_set(fname, ps2); \ + ok = CGAL::IO::write_point_set(fname, ps2); \ assert(ok); \ - ok = CGAL::write_point_set(fname, ps2, CGAL::parameters::stream_precision(10)); \ + ok = CGAL::IO::write_point_set(fname, ps2, CGAL::parameters::stream_precision(10)); \ assert(ok); \ - ok = CGAL::write_point_set(fname.c_str(), ps2); \ + ok = CGAL::IO::write_point_set(fname.c_str(), ps2); \ assert(ok); \ - ok = CGAL::write_point_set(fname.c_str(), ps2, CGAL::parameters::stream_precision(10)); \ + ok = CGAL::IO::write_point_set(fname.c_str(), ps2, CGAL::parameters::stream_precision(10)); \ assert(ok); \ ps2.clear(); \ - ok = CGAL::read_point_set(fname, ps2); \ + ok = CGAL::IO::read_point_set(fname, ps2); \ assert(ok); \ assert(ps_are_equal(ps, ps2)); \ } @@ -162,44 +162,44 @@ void test_LAS(const std::string& s) { std::cout << "Test Point_set_3: " << s << " extension: las" < ps; - bool ok = CGAL::read_LAS(s, ps); + bool ok = CGAL::IO::read_LAS(s, ps); assert(ok); ps.clear(); - ok = CGAL::read_LAS(s.c_str(), ps); + ok = CGAL::IO::read_LAS(s.c_str(), ps); assert(ok); ps.clear(); std::ifstream in(s, std::ios::binary); CGAL::set_mode(in, CGAL::IO::BINARY); - ok = CGAL::read_LAS(in, ps); + ok = CGAL::IO::read_LAS(in, ps); assert(ok); const char* ext = "las"; std::string fname = "tmp."; fname.append(ext); - ok = CGAL::write_LAS(fname, ps); + ok = CGAL::IO::write_LAS(fname, ps); assert(ok); - ok = CGAL::write_LAS(fname.c_str(), ps); + ok = CGAL::IO::write_LAS(fname.c_str(), ps); assert(ok); std::ofstream out(fname, std::ios::binary); CGAL::set_mode(out, CGAL::IO::BINARY); - ok = CGAL::write_LAS(out, ps); + ok = CGAL::IO::write_LAS(out, ps); assert(ok); CGAL::Point_set_3 ps2; std::ifstream is(fname, std::ios::binary); CGAL::set_mode(is, CGAL::IO::BINARY); - ok = CGAL::read_LAS(is, ps2); + ok = CGAL::IO::read_LAS(is, ps2); assert(ok); assert(ps_are_equal(ps, ps2)); - ok = CGAL::write_point_set(fname, ps2); + ok = CGAL::IO::write_point_set(fname, ps2); assert(ok); - ok = CGAL::write_point_set(fname, ps2, CGAL::parameters::stream_precision(10)); + ok = CGAL::IO::write_point_set(fname, ps2, CGAL::parameters::stream_precision(10)); assert(ok); - ok = CGAL::write_point_set(fname.c_str(), ps2); + ok = CGAL::IO::write_point_set(fname.c_str(), ps2); assert(ok); - ok = CGAL::write_point_set(fname.c_str(), ps2, CGAL::parameters::stream_precision(10)); + ok = CGAL::IO::write_point_set(fname.c_str(), ps2, CGAL::parameters::stream_precision(10)); assert(ok); ps2.clear(); - ok = CGAL::read_point_set(fname, ps2); + ok = CGAL::IO::read_point_set(fname, ps2); assert(ok); assert(ps_are_equal(ps, ps2)); } @@ -212,41 +212,41 @@ void test_points_##TYPE(const std::string& s) { \ std::cout << "Test points: " << s << " extension: " << #TYPE << std::endl; \ std::vector ps; \ - bool ok = CGAL::read_##TYPE(s, std::back_inserter(ps)); \ + bool ok = CGAL::IO::read_##TYPE(s, std::back_inserter(ps)); \ assert(ok); \ ps.clear(); \ - ok = CGAL::read_##TYPE(s.c_str(), std::back_inserter(ps)); \ + ok = CGAL::IO::read_##TYPE(s.c_str(), std::back_inserter(ps)); \ assert(ok); \ ps.clear(); \ std::ifstream in(s); \ - ok = CGAL::read_##TYPE(in, std::back_inserter(ps)); \ + ok = CGAL::IO::read_##TYPE(in, std::back_inserter(ps)); \ assert(ok); \ const char* ext = type; \ std::string fname = "tmp."; \ fname.append(ext); \ - ok = CGAL::write_##TYPE(fname, ps); \ + ok = CGAL::IO::write_##TYPE(fname, ps); \ assert(ok); \ - ok = CGAL::write_##TYPE(fname, ps, CGAL::parameters::stream_precision(10)); \ + ok = CGAL::IO::write_##TYPE(fname, ps, CGAL::parameters::stream_precision(10)); \ assert(ok); \ - ok = CGAL::write_##TYPE(fname.c_str(), ps); \ + ok = CGAL::IO::write_##TYPE(fname.c_str(), ps); \ assert(ok); \ - ok = CGAL::write_##TYPE(fname.c_str(), ps, CGAL::parameters::stream_precision(10)); \ + ok = CGAL::IO::write_##TYPE(fname.c_str(), ps, CGAL::parameters::stream_precision(10)); \ assert(ok); \ std::ofstream out(fname); \ - ok = CGAL::write_##TYPE(out, ps); \ + ok = CGAL::IO::write_##TYPE(out, ps); \ assert(ok); \ std::ofstream out2(fname); \ - ok = CGAL::write_##TYPE(out2, ps, CGAL::parameters::stream_precision(10)); \ + ok = CGAL::IO::write_##TYPE(out2, ps, CGAL::parameters::stream_precision(10)); \ assert(ok); \ std::vector ps2; \ std::ifstream is(fname); \ - ok = CGAL::read_##TYPE(is, std::back_inserter(ps2)); \ + ok = CGAL::IO::read_##TYPE(is, std::back_inserter(ps2)); \ assert(ok); \ assert(points_are_equal(ps, ps2)); \ - ok = CGAL::write_points(fname, ps2); \ + ok = CGAL::IO::write_points(fname, ps2); \ assert(ok); \ ps2.clear(); \ - ok = CGAL::read_points(fname, std::back_inserter(ps2)); \ + ok = CGAL::IO::read_points(fname, std::back_inserter(ps2)); \ assert(ok); \ assert(points_are_equal(ps, ps2)); \ } @@ -259,41 +259,41 @@ void test_points_LAS(const std::string& s) { std::cout << "Test points: " << s << " extension: LAS "<< std::endl; std::vector ps; - bool ok = CGAL::read_LAS(s, std::back_inserter(ps)); + bool ok = CGAL::IO::read_LAS(s, std::back_inserter(ps)); assert(ok); ps.clear(); - ok = CGAL::read_LAS(s.c_str(), std::back_inserter(ps)); + ok = CGAL::IO::read_LAS(s.c_str(), std::back_inserter(ps)); assert(ok); ps.clear(); std::ifstream in(s, std::ios::binary); - ok = CGAL::read_LAS(in, std::back_inserter(ps)); + ok = CGAL::IO::read_LAS(in, std::back_inserter(ps)); assert(ok); const char* ext = "las"; std::string fname = "tmp."; fname.append(ext); - ok = CGAL::write_LAS(fname, ps); + ok = CGAL::IO::write_LAS(fname, ps); assert(ok); - ok = CGAL::write_LAS(fname, ps, CGAL::parameters::stream_precision(10)); + ok = CGAL::IO::write_LAS(fname, ps, CGAL::parameters::stream_precision(10)); assert(ok); - ok = CGAL::write_LAS(fname.c_str(), ps); + ok = CGAL::IO::write_LAS(fname.c_str(), ps); assert(ok); - ok = CGAL::write_LAS(fname.c_str(), ps, CGAL::parameters::stream_precision(10)); + ok = CGAL::IO::write_LAS(fname.c_str(), ps, CGAL::parameters::stream_precision(10)); assert(ok); std::ofstream out(fname, std::ios::binary); - ok = CGAL::write_LAS(out, ps); + ok = CGAL::IO::write_LAS(out, ps); assert(ok); std::ofstream out2(fname, std::ios::binary); - ok = CGAL::write_LAS(out2, ps, CGAL::parameters::stream_precision(10)); + ok = CGAL::IO::write_LAS(out2, ps, CGAL::parameters::stream_precision(10)); assert(ok); std::vector ps2; std::ifstream is(fname, std::ios::binary); - ok = CGAL::read_LAS(is, std::back_inserter(ps2)); + ok = CGAL::IO::read_LAS(is, std::back_inserter(ps2)); assert(ok); assert(points_are_equal(ps, ps2)); - ok = CGAL::write_points(fname, ps2); + ok = CGAL::IO::write_points(fname, ps2); assert(ok); ps2.clear(); - ok = CGAL::read_points(fname, std::back_inserter(ps2)); + ok = CGAL::IO::read_points(fname, std::back_inserter(ps2)); assert(ok); assert(points_are_equal(ps, ps2)); } diff --git a/Point_set_processing_3/test/Point_set_processing_3/vcm_all_test.cpp b/Point_set_processing_3/test/Point_set_processing_3/vcm_all_test.cpp index f746d972b16..d9df3d8e0ff 100644 --- a/Point_set_processing_3/test/Point_set_processing_3/vcm_all_test.cpp +++ b/Point_set_processing_3/test/Point_set_processing_3/vcm_all_test.cpp @@ -33,9 +33,9 @@ std::cout << "=== test_fandisk ===\n"; points.reserve(nb_points); cov.reserve(nb_points); - if(!CGAL::read_points("data/fandisk.off", - std::back_inserter(points), - CGAL::parameters::point_map(pmap))) + if(!CGAL::IO::read_points("data/fandisk.off", + std::back_inserter(points), + CGAL::parameters::point_map(pmap))) { std::cerr << "Error: cannot read file data/fandisk.off" << std::endl; return false; diff --git a/Point_set_processing_3/test/Point_set_processing_3/wlop_simplify_and_regularize_test.cpp b/Point_set_processing_3/test/Point_set_processing_3/wlop_simplify_and_regularize_test.cpp index 5b5611ed0eb..da4ab598335 100644 --- a/Point_set_processing_3/test/Point_set_processing_3/wlop_simplify_and_regularize_test.cpp +++ b/Point_set_processing_3/test/Point_set_processing_3/wlop_simplify_and_regularize_test.cpp @@ -122,7 +122,7 @@ int main(int argc, char * argv[]) std::cerr << "Opening " << argv[i] << " for reading..." << std::endl; // If XYZ file format: - if(CGAL::read_points(argv[i], std::back_inserter(points))) + if(CGAL::IO::read_points(argv[i], std::back_inserter(points))) { std::cerr << "ok (" << points.size() << " points)" << std::endl; } From fb6f703b55fa9826392cfe7c8a1b692cccbd5d01 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?S=C3=A9bastien=20Loriot?= Date: Tue, 4 May 2021 14:07:49 +0200 Subject: [PATCH 114/171] IO namespace for files in IO directories --- .../AABB_tree/AABB_cached_bbox_example.cpp | 2 +- .../AABB_tree/AABB_ray_shooting_example.cpp | 2 +- .../reconstruction_structured.cpp | 6 +- .../Arrangement_on_surface_2/arr_bench.cpp | 4 +- .../CGAL/Arr_triangulation_point_location.h | 2 +- BGL/doc/BGL/PackageDescription.txt | 4 +- BGL/examples/BGL_LCC/copy_lcc.cpp | 2 +- BGL/examples/BGL_LCC/distance_lcc.cpp | 2 +- .../BGL_LCC/incident_vertices_lcc.cpp | 2 +- BGL/examples/BGL_LCC/normals_lcc.cpp | 2 +- BGL/examples/BGL_LCC/range_lcc.cpp | 2 +- .../BGL_LCC/transform_iterator_lcc.cpp | 2 +- BGL/examples/BGL_OpenMesh/TriMesh.cpp | 4 +- ...lection_borders_regularization_example.cpp | 2 +- .../BGL_surface_mesh/connected_components.cpp | 2 +- BGL/examples/BGL_surface_mesh/prim.cpp | 2 +- BGL/examples/BGL_surface_mesh/seam_mesh.cpp | 2 +- .../BGL_surface_mesh/surface_mesh_dual.cpp | 2 +- .../surface_mesh_partition.cpp | 4 +- BGL/examples/BGL_surface_mesh/write_inp.cpp | 2 +- BGL/include/CGAL/boost/graph/IO/3MF.h | 6 +- BGL/include/CGAL/boost/graph/IO/GOCAD.h | 33 +- .../graph/IO/Generic_facegraph_builder.h | 2 +- .../graph/IO/Generic_facegraph_printer.h | 6 +- BGL/include/CGAL/boost/graph/IO/INP.h | 4 +- BGL/include/CGAL/boost/graph/IO/OBJ.h | 23 +- BGL/include/CGAL/boost/graph/IO/OFF.h | 62 +-- BGL/include/CGAL/boost/graph/IO/PLY.h | 69 ++-- BGL/include/CGAL/boost/graph/IO/STL.h | 7 +- BGL/include/CGAL/boost/graph/IO/VTK.h | 25 +- BGL/include/CGAL/boost/graph/IO/WRL.h | 10 +- .../CGAL/boost/graph/IO/polygon_mesh_io.h | 10 +- BGL/include/CGAL/draw_face_graph.h | 6 +- ..._from_stream_vs_add_face_and_add_faces.cpp | 6 +- BGL/test/BGL/test_3mf_to_sm.cpp | 10 +- BGL/test/BGL/test_Collapse_edge.cpp | 2 +- BGL/test/BGL/test_Euler_operations.cpp | 6 +- BGL/test/BGL/test_Prefix.h | 2 +- BGL/test/BGL/test_bgl_read_write.cpp | 356 +++++++++--------- BGL/test/BGL/test_clear.cpp | 2 +- BGL/test/BGL/test_deprecated_io.cpp | 2 +- .../Classification/example_classification.cpp | 12 +- .../example_cluster_classification.cpp | 6 +- .../example_ethz_random_forest.cpp | 2 +- .../Classification/example_feature.cpp | 6 +- .../example_mesh_classification.cpp | 6 +- .../example_opencv_random_forest.cpp | 2 +- .../Classification/gis_tutorial_example.cpp | 24 +- .../Classification/Feature/Color_channel.h | 2 +- .../include/CGAL/Classification/Label.h | 8 +- .../include/CGAL/Classification/Label_set.h | 58 +-- .../Point_set_feature_generator.h | 2 +- .../test_classification_point_set.cpp | 6 +- .../Convex_hull_3/extreme_indices_3.cpp | 2 +- .../Convex_hull_3/extreme_points_3_sm.cpp | 2 +- .../examples/Convex_hull_3/graph_hull_3.cpp | 2 +- .../examples/Convex_hull_3/quickhull_OM_3.cpp | 2 +- .../Convex_hull_3/test_ch_3_ambiguity.cpp | 2 +- Geomview/TODO | 2 +- Geomview/demo/Geomview/gv_terrain.cpp | 6 +- Geomview/demo/Geomview/kernel.cpp | 2 +- .../demo/Alpha_shapes_2/Alpha_shapes_2.cpp | 2 +- .../Apollonius_graph_2/Apollonius_graph_2.cpp | 4 +- .../Bounding_volumes/Bounding_volumes.cpp | 4 +- .../Circular_kernel_2/Circular_kernel_2.cpp | 2 +- .../L1_voronoi_diagram_2.cpp | 4 +- .../Periodic_2_Delaunay_triangulation_2.cpp | 4 +- GraphicsView/demo/Polygon/Polygon_2.cpp | 4 +- .../Segment_voronoi_2.cpp | 4 +- .../Segment_voronoi_linf_2.cpp | 6 +- .../demo/Snap_rounding_2/Snap_rounding_2.cpp | 4 +- .../Spatial_searching_2.cpp | 2 +- .../demo/Stream_lines_2/Stream_lines_2.cpp | 4 +- .../Constrained_Delaunay_triangulation_2.cpp | 10 +- .../Delaunay_triangulation_2.cpp | 4 +- .../Regular_triangulation_2.cpp | 4 +- GraphicsView/include/CGAL/Buffer_for_vao.h | 18 +- .../include/CGAL/Qt/Basic_viewer_qt.h | 26 +- .../Qt/SegmentDelaunayGraphGraphicsItem.h | 4 +- .../Qt/SegmentDelaunayGraphLinfGraphicsItem.h | 2 +- .../doc/HalfedgeDS/CGAL/HalfedgeDS_items_2.h | 4 +- .../examples/HalfedgeDS/hds_prog_color.cpp | 10 +- .../examples/Heat_method_3/heat_method.cpp | 2 +- .../heat_method_surface_mesh.cpp | 2 +- .../heat_method_surface_mesh_direct.cpp | 2 +- .../ht2_example_color.cpp | 6 +- Installation/CHANGES.md | 2 +- .../Interpolation/interpolation_2_demo.cpp | 6 +- .../demo/Interpolation/surface_voronoi.cpp | 8 +- .../demo/Linear_cell_complex/MainWindow.cpp | 16 +- .../demo/Linear_cell_complex/Viewer.h | 12 +- .../demo/Linear_cell_complex/typedefs.h | 10 +- .../Linear_cell_complex/basic_viewer.h | 16 +- .../include/CGAL/draw_linear_cell_complex.h | 14 +- Mesh_2/include/CGAL/IO/write_vtu.h | 2 +- .../applications/Distribution_displayer.h | 4 +- Mesh_3/archive/applications/Gd_displayer.cpp | 4 +- Mesh_3/archive/applications/Gd_displayer.h | 6 +- .../applications/Qt_widget_displayer.cpp | 4 +- .../applications/Qt_widget_displayer.h | 4 +- .../applications/display_distribution.cpp | 6 +- Mesh_3/archive/applications/distribution.cpp | 4 +- .../applications/lanteri_process_results.cpp | 2 +- .../output_distribution_to_stdout.cpp | 6 +- Mesh_3/include/CGAL/IO/File_tetgen.h | 2 +- Mesh_3/include/CGAL/IO/output_to_vtu.h | 14 +- Nef_3/archive/include/CGAL/Nef_3/Visualizor.h | 12 +- Nef_3/include/CGAL/Nef_3/OGL_helper.h | 12 +- Nef_3/include/CGAL/Nef_3/SM_visualizor.h | 4 +- Nef_3/include/CGAL/Nef_3/SNC_SM_visualizor.h | 4 +- Nef_3/include/CGAL/draw_nef_3.h | 8 +- Nef_S2/include/CGAL/Nef_S2/SM_visualizor.h | 4 +- .../include/CGAL/Nef_S2/Sphere_geometry_OGL.h | 30 +- .../Optimal_bounding_box/bench_obb.cpp | 2 +- .../Optimal_bounding_box/obb_example.cpp | 2 +- .../obb_with_point_maps_example.cpp | 2 +- .../rotated_aabb_tree_example.cpp | 2 +- .../Periodic_2_triangulation_2.txt | 2 +- .../p2t2_colored_vertices.cpp | 4 +- .../CGAL/draw_periodic_2_triangulation_2.h | 20 +- .../Periodic_3_mesh_3/PackageDescription.txt | 2 +- .../Periodic_3_mesh_3/Periodic_3_mesh_3.txt | 2 +- .../mesh_implicit_multi_domain.cpp | 6 +- .../Periodic_3_mesh_3/mesh_implicit_shape.cpp | 2 +- .../mesh_implicit_shape_with_features.cpp | 4 +- .../mesh_implicit_shape_with_optimizers.cpp | 6 +- .../mesh_implicit_shape_with_subdomains.cpp | 2 +- .../CGAL/Periodic_3_mesh_3/IO/File_medit.h | 8 + .../test_implicit_shapes_bunch.cpp | 2 +- .../test_implicit_shapes_with_features.cpp | 6 +- .../test_triply_periodic_minimal_surfaces.cpp | 2 +- .../Periodic_3_triangulation_3/README | 2 +- .../colored_vertices.cpp | 4 +- .../doc/Point_set_3/PackageDescription.txt | 4 +- .../examples/Point_set_3/draw_point_set_3.cpp | 2 +- .../Point_set_3/point_set_advanced.cpp | 2 +- .../Point_set_3/point_set_read_ply.cpp | 6 +- .../Point_set_3/point_set_read_xyz.cpp | 4 +- Point_set_3/include/CGAL/Point_set_3/IO.h | 4 +- Point_set_3/include/CGAL/Point_set_3/IO/LAS.h | 4 +- Point_set_3/include/CGAL/Point_set_3/IO/OFF.h | 8 +- Point_set_3/include/CGAL/Point_set_3/IO/PLY.h | 14 +- Point_set_3/include/CGAL/Point_set_3/IO/XYZ.h | 4 +- .../test/Point_set_3/point_set_test.cpp | 2 +- .../include/CGAL/IO/read_las_points.h | 4 +- .../include/CGAL/IO/read_off_points.h | 2 +- .../include/CGAL/IO/read_ply_points.h | 4 +- .../include/CGAL/IO/read_xyz_points.h | 2 +- .../include/CGAL/IO/write_las_points.h | 4 +- .../include/CGAL/IO/write_off_points.h | 2 +- .../include/CGAL/IO/write_ply_points.h | 4 +- .../poisson_reconstruction.cpp | 6 +- .../poisson_reconstruction_example.cpp | 2 +- .../poisson_reconstruction_function.cpp | 6 +- .../tutorial_example.cpp | 2 +- .../poisson_and_parallel_mesh_3.cpp | 2 +- .../poisson_reconstruction_test.cpp | 2 +- Polygon/include/CGAL/draw_polygon_2.h | 2 +- .../include/CGAL/draw_polygon_with_holes_2.h | 2 +- .../PackageDescription.txt | 2 +- .../Polygon_mesh_processing.txt | 2 +- .../compute_normals_example.cpp | 2 +- .../compute_normals_example_Polyhedron.cpp | 2 +- .../connected_components_example.cpp | 2 +- .../corefinement_LCC.cpp | 6 +- .../corefinement_SM.cpp | 6 +- .../corefinement_consecutive_bool_op.cpp | 4 +- .../corefinement_difference_remeshed.cpp | 6 +- .../corefinement_mesh_union.cpp | 4 +- ...refinement_mesh_union_and_intersection.cpp | 6 +- ...orefinement_mesh_union_with_attributes.cpp | 4 +- .../corefinement_polyhedron_union.cpp | 2 +- .../detect_features_example.cpp | 2 +- .../face_filtered_graph_example.cpp | 2 +- .../hole_filling_example.cpp | 2 +- .../hole_filling_example_LCC.cpp | 4 +- .../hole_filling_example_SM.cpp | 4 +- .../isotropic_remeshing_example.cpp | 2 +- .../isotropic_remeshing_of_patch_example.cpp | 4 +- .../manifoldness_repair_example.cpp | 2 +- .../mesh_slicer_example.cpp | 2 +- .../mesh_smoothing_example.cpp | 4 +- .../orient_polygon_soup_example.cpp | 2 +- .../orientation_pipeline_example.cpp | 4 +- .../point_inside_example.cpp | 2 +- .../polyhedral_envelope_of_triangle_soup.cpp | 2 +- .../random_perturbation_SM_example.cpp | 4 +- .../refine_fair_example.cpp | 2 +- .../self_intersections_example.cpp | 2 +- .../shape_smoothing_example.cpp | 4 +- .../stitch_borders_example.cpp | 4 +- .../surface_mesh_intersection.cpp | 2 +- .../triangulate_faces_example.cpp | 4 +- ...riangulate_faces_split_visitor_example.cpp | 2 +- .../volume_connected_components.cpp | 2 +- .../IO/polygon_mesh_io.h | 9 +- .../repair_degeneracies.h | 6 +- .../repair_self_intersections.h | 6 +- .../include/CGAL/Polyhedral_envelope.h | 3 + .../autorefinement_sm.cpp | 8 +- .../surface_intersection_sm_poly.cpp | 4 +- .../test_corefinement_bool_op.cpp | 8 +- .../test_is_polygon_soup_a_polygon_mesh.cpp | 2 +- .../test_merging_border_vertices.cpp | 2 +- .../test_pmp_distance.cpp | 2 +- .../test_pmp_non_conforming_snapping.cpp | 2 +- .../test_pmp_polyhedral_envelope.cpp | 2 +- .../test_pmp_read_polygon_mesh.cpp | 14 +- .../test_remove_caps_needles.cpp | 2 +- .../triangulate_hole_with_cdt_2_test.cpp | 4 +- ...olyfit_example_model_complexty_control.cpp | 16 +- .../polyfit_example_user_provided_planes.cpp | 12 +- .../polyfit_example_with_region_growing.cpp | 6 +- .../polyfit_example_without_input_planes.cpp | 8 +- ...al_surface_reconstruction_test_framework.h | 41 +- .../Classification/Cluster_classification.cpp | 10 +- .../Classification/Cluster_classification.h | 2 +- .../Classification/Item_classification_base.h | 2 +- .../Point_set_item_classification.cpp | 10 +- .../Point_set_item_classification.h | 2 +- .../Surface_mesh_item_classification.cpp | 22 +- .../Surface_mesh_item_classification.h | 4 +- .../Display/Display_property_plugin.cpp | 40 +- .../Polyhedron/Plugins/IO/3mf_io_plugin.cpp | 30 +- .../Polyhedron/Plugins/IO/GOCAD_io_plugin.cpp | 4 +- .../Polyhedron/Plugins/IO/LAS_io_plugin.cpp | 4 +- .../Polyhedron/Plugins/IO/OFF_io_plugin.cpp | 4 +- .../Polyhedron/Plugins/IO/PLY_io_plugin.cpp | 14 +- .../Polyhedron/Plugins/IO/STL_io_plugin.cpp | 4 +- .../Polyhedron/Plugins/IO/VTK_io_plugin.cpp | 2 +- .../Polyhedron/Plugins/IO/WKT_io_plugin.cpp | 4 +- .../Plugins/PMP/Orient_soup_plugin.cpp | 16 +- .../Surface_mesh_approximation_plugin.cpp | 6 +- .../Scene_edit_polyhedron_item.cpp | 4 +- .../demo/Polyhedron/Scene_c3t3_item.cpp | 6 +- .../Scene_points_with_normal_item.cpp | 12 +- .../Polyhedron/Scene_polygon_soup_item.cpp | 26 +- .../demo/Polyhedron/Scene_polygon_soup_item.h | 10 +- .../demo/Polyhedron/Scene_polylines_item.cpp | 2 +- .../demo/Polyhedron/Scene_spheres_item.cpp | 4 +- .../demo/Polyhedron/Scene_spheres_item.h | 4 +- .../Polyhedron/Scene_surface_mesh_item.cpp | 62 +-- .../Polyhedron/CGAL/IO/Polyhedron_iostream.h | 4 +- Polyhedron/doc/Polyhedron/Polyhedron.txt | 2 +- .../Polyhedron/polyhedron_prog_color.cpp | 4 +- .../polyhedron_prog_vertex_color.cpp | 4 +- .../include/CGAL/IO/Polyhedron_OFF_iostream.h | 14 +- .../include/CGAL/IO/Polyhedron_scan_OFF.h | 2 +- .../test/Polyhedron/test_polyhedron_io.cpp | 2 +- .../Polyline_simplification_2.cpp | 2 +- .../points_and_vertices.cpp | 2 +- .../Polyline_simplification_2/simplify.cpp | 2 +- .../simplify_polygon.cpp | 4 +- .../simplify_polyline.cpp | 2 +- .../examples/Ridges_3/Ridges_Umbilics_LCC.cpp | 2 +- .../scale_space.cpp | 2 +- .../scale_space_advancing_front.cpp | 2 +- .../scale_space_incremental.cpp | 2 +- .../scale_space_manifold.cpp | 2 +- ...icient_RANSAC_and_plane_regularization.cpp | 2 +- .../efficient_RANSAC_basic.cpp | 2 +- .../efficient_RANSAC_with_callback.cpp | 2 +- .../efficient_RANSAC_with_custom_shape.cpp | 6 +- .../efficient_RANSAC_with_parameters.cpp | 2 +- .../efficient_RANSAC_with_point_access.cpp | 2 +- .../region_growing_on_point_set_2.cpp | 2 +- .../region_growing_on_polygon_mesh.cpp | 2 +- .../shape_detection_basic_deprecated.cpp | 8 +- .../test_efficient_RANSAC_scene.cpp | 2 +- .../test_validity_sampled_data.cpp | 2 +- .../searching_surface_mesh_vertices.cpp | 2 +- .../include/CGAL/IO/Dxf_stream.h | 32 +- .../include/CGAL/draw_straight_skeleton_2.h | 14 +- .../test/Straight_skeleton_2/test_sls.cpp | 13 +- .../File_formats/Supported_file_formats.txt | 124 +++--- .../doc/Stream_support/IOstream.txt | 2 +- .../doc/Stream_support/PackageDescription.txt | 6 +- .../Stream_support/Linestring_WKT.cpp | 4 +- .../examples/Stream_support/Point_WKT.cpp | 2 +- .../examples/Stream_support/Polygon_WKT.cpp | 4 +- .../examples/Stream_support/read_WKT.cpp | 2 +- Stream_support/include/CGAL/IO/3MF.h | 10 +- Stream_support/include/CGAL/IO/3MF/read_3mf.h | 2 +- Stream_support/include/CGAL/IO/Color.h | 17 + Stream_support/include/CGAL/IO/GOCAD.h | 20 +- Stream_support/include/CGAL/IO/OBJ.h | 25 +- Stream_support/include/CGAL/IO/OFF.h | 43 +-- .../include/CGAL/IO/OFF/File_scanner_OFF.h | 310 +++++++-------- Stream_support/include/CGAL/IO/PLY.h | 145 +++---- .../include/CGAL/IO/PLY/PLY_reader.h | 13 +- Stream_support/include/CGAL/IO/STL.h | 34 +- .../include/CGAL/IO/STL/STL_reader.h | 4 +- Stream_support/include/CGAL/IO/VTK.h | 21 +- Stream_support/include/CGAL/IO/WKT.h | 41 +- Stream_support/include/CGAL/IO/io.h | 6 +- .../include/CGAL/IO/polygon_soup_io.h | 8 +- .../test/Stream_support/test_GOCAD.cpp | 16 +- .../test/Stream_support/test_OBJ.cpp | 16 +- .../test/Stream_support/test_OFF.cpp | 16 +- .../test/Stream_support/test_PLY.cpp | 16 +- .../test/Stream_support/test_STL.cpp | 18 +- .../test/Stream_support/test_WKT.cpp | 36 +- Surface_mesh/benchmark/lcc_performance_2.h | 2 +- .../benchmark/surface_mesh_performance.h | 6 +- .../Surface_mesh/draw_surface_mesh.cpp | 2 +- .../draw_surface_mesh_small_faces.h | 4 +- Surface_mesh/examples/Surface_mesh/sm_bgl.cpp | 2 +- .../examples/Surface_mesh/sm_do_intersect.cpp | 2 +- .../Surface_mesh/sm_draw_small_faces.cpp | 2 +- .../examples/Surface_mesh/sm_join.cpp | 4 +- .../examples/Surface_mesh/sm_kruskal.cpp | 2 +- Surface_mesh/include/CGAL/Surface_mesh/IO.h | 8 +- .../include/CGAL/Surface_mesh/IO/3MF.h | 18 +- .../include/CGAL/Surface_mesh/IO/OFF.h | 71 ++-- .../include/CGAL/Surface_mesh/IO/PLY.h | 105 +++--- .../include/CGAL/Surface_mesh/Surface_mesh.h | 4 +- Surface_mesh/test/Surface_mesh/SM_common.h | 2 +- .../test/Surface_mesh/sm_open_colored_off.cpp | 18 +- Surface_mesh/test/Surface_mesh/sm_ply_io.cpp | 6 +- .../vsa_approximation_2_example.cpp | 2 +- .../vsa_approximation_example.cpp | 2 +- .../vsa_class_interface_example.cpp | 2 +- .../vsa_isotropic_metric_example.cpp | 2 +- .../vsa_segmentation_example.cpp | 2 +- .../vsa_simple_approximation_example.cpp | 2 +- .../all_roi_assign_example_Surface_mesh.cpp | 2 +- ...ring_roi_translate_rotate_Surface_mesh.cpp | 2 +- .../discrete_authalic.cpp | 2 +- .../Surface_mesh_parameterization/lscm.cpp | 2 +- .../orbifold.cpp | 2 +- .../simple_parameterization.cpp | 2 +- ...extract_segmentation_into_mesh_example.cpp | 2 +- ...gmentation_from_sdf_values_LCC_example.cpp | 2 +- ...egmentation_from_sdf_values_SM_example.cpp | 2 +- .../shortest_path_sequence.cpp | 2 +- .../shortest_path_with_locate.cpp | 2 +- .../shortest_paths.cpp | 2 +- .../shortest_paths_multiple_sources.cpp | 2 +- .../edge_collapse_bounded_normal_change.cpp | 2 +- ...llapse_constrained_border_surface_mesh.cpp | 2 +- .../edge_collapse_garland_heckbert.cpp | 2 +- .../edge_collapse_linear_cell_complex.cpp | 4 +- .../edge_collapse_surface_mesh.cpp | 2 +- .../edge_collapse_visitor_surface_mesh.cpp | 2 +- .../MCF_Skeleton_LCC_example.cpp | 2 +- .../simple_mcfskel_LCC_example.cpp | 2 +- .../Surface_mesh_topology/draw_facewidth.h | 14 +- .../edgewidth_surface_mesh.cpp | 2 +- .../path_homotopy_with_sm_and_polyhedron.cpp | 4 +- .../unsew_edgewidth_repeatedly.cpp | 12 +- .../include/CGAL/draw_face_graph_with_paths.h | 10 +- .../tetrahedral_remeshing_from_mesh.cpp | 4 +- .../examples/Triangulation_2/colored_face.cpp | 6 +- .../include/CGAL/draw_triangulation_2.h | 4 +- .../demo/Triangulation_3/Scene.cpp | 14 +- .../Triangulation_3_color_demo.cpp | 6 +- .../Triangulation_3_demo.cpp | 2 +- .../Triangulation_3_remove_demo.cpp | 2 +- .../Triangulation_3_voronoi_demo.cpp | 4 +- .../examples/Triangulation_3/color.cpp | 4 +- .../segment_cell_traverser_3.cpp | 2 +- .../segment_simplex_traverser_3.cpp | 2 +- .../include/CGAL/draw_triangulation_3.h | 6 +- .../test_simplex_iterator_3.cpp | 2 +- .../triang_on_sphere.cpp | 2 +- .../triang_on_sphere_geo.cpp | 2 +- .../triang_on_sphere_proj.cpp | 2 +- .../triang_on_sphere_range.cpp | 2 +- .../CGAL/Triangulation_on_sphere_2/IO/OFF.h | 4 +- .../Triangulation_on_sphere_2/test_dtos.cpp | 2 +- .../test_dtos_dual.cpp | 2 +- .../include/CGAL/draw_voronoi_diagram_2.h | 10 +- 372 files changed, 1802 insertions(+), 1716 deletions(-) diff --git a/AABB_tree/examples/AABB_tree/AABB_cached_bbox_example.cpp b/AABB_tree/examples/AABB_tree/AABB_cached_bbox_example.cpp index dc81b53098d..6b2fc21e603 100644 --- a/AABB_tree/examples/AABB_tree/AABB_cached_bbox_example.cpp +++ b/AABB_tree/examples/AABB_tree/AABB_cached_bbox_example.cpp @@ -27,7 +27,7 @@ void triangle_mesh(const char* fname) typedef CGAL::AABB_tree Tree; TriangleMesh tmesh; - if(!CGAL::read_polygon_mesh(fname, tmesh) || CGAL::is_triangle_mesh(tmesh)) + if(!CGAL::IO::read_polygon_mesh(fname, tmesh) || CGAL::is_triangle_mesh(tmesh)) { std::cerr << "Invalid input." << std::endl; return; diff --git a/AABB_tree/examples/AABB_tree/AABB_ray_shooting_example.cpp b/AABB_tree/examples/AABB_tree/AABB_ray_shooting_example.cpp index 2a8bfbec29b..f1d983eccf1 100644 --- a/AABB_tree/examples/AABB_tree/AABB_ray_shooting_example.cpp +++ b/AABB_tree/examples/AABB_tree/AABB_ray_shooting_example.cpp @@ -47,7 +47,7 @@ int main(int argc, char* argv[]) const char* filename = (argc > 1) ? argv[1] : "data/tetrahedron.off"; Mesh mesh; - if(!CGAL::read_polygon_mesh(filename, mesh)) + if(!CGAL::IO::read_polygon_mesh(filename, mesh)) { std::cerr << "Invalid input." << std::endl; return 1; diff --git a/Advancing_front_surface_reconstruction/examples/Advancing_front_surface_reconstruction/reconstruction_structured.cpp b/Advancing_front_surface_reconstruction/examples/Advancing_front_surface_reconstruction/reconstruction_structured.cpp index c0aedf6974b..8dda55c4597 100644 --- a/Advancing_front_surface_reconstruction/examples/Advancing_front_surface_reconstruction/reconstruction_structured.cpp +++ b/Advancing_front_surface_reconstruction/examples/Advancing_front_surface_reconstruction/reconstruction_structured.cpp @@ -114,9 +114,9 @@ int main (int argc, char* argv[]) const char* fname = (argc>1) ? argv[1] : "data/cube.pwn"; // Loading point set from a file. - if (!CGAL::read_points(fname, std::back_inserter(points), - CGAL::parameters::point_map(Point_map()). - normal_map(Normal_map()))) + if (!CGAL::IO::read_points(fname, std::back_inserter(points), + CGAL::parameters::point_map(Point_map()). + normal_map(Normal_map()))) { std::cerr << "Error: cannot read file" << std::endl; return EXIT_FAILURE; diff --git a/Arrangement_on_surface_2/benchmark/Arrangement_on_surface_2/arr_bench.cpp b/Arrangement_on_surface_2/benchmark/Arrangement_on_surface_2/arr_bench.cpp index 391544b48e3..ed93820690c 100644 --- a/Arrangement_on_surface_2/benchmark/Arrangement_on_surface_2/arr_bench.cpp +++ b/Arrangement_on_surface_2/benchmark/Arrangement_on_surface_2/arr_bench.cpp @@ -277,11 +277,11 @@ inline std::ostream & operator<<(std::ostream & os, const Arr::Vertex & vertex) inline Window_stream & operator<<(Window_stream & ws, Arr & arr) { Arr::Edge_iterator ei; - ws << CGAL::blue(); + ws << CGAL::IO::blue(); for (ei = arr.edges_begin(); ei != arr.edges_end(); ++ei) ws << (*ei).curve(); Arr::Vertex_iterator vi; - ws << CGAL::red(); + ws << CGAL::IO::red(); for (vi = arr.vertices_begin(); vi != arr.vertices_end(); ++vi) ws << (*vi).point(); return ws; diff --git a/Arrangement_on_surface_2/include/CGAL/Arr_triangulation_point_location.h b/Arrangement_on_surface_2/include/CGAL/Arr_triangulation_point_location.h index 0203f0466bd..e3f5c3565ff 100644 --- a/Arrangement_on_surface_2/include/CGAL/Arr_triangulation_point_location.h +++ b/Arrangement_on_surface_2/include/CGAL/Arr_triangulation_point_location.h @@ -80,7 +80,7 @@ public: typedef Triangulation_vertex_base_with_info_2 Vbb; typedef Triangulation_hierarchy_vertex_base_2 Vb; - //typedef Triangulation_face_base_with_info_2 Fbt; + //typedef Triangulation_face_base_with_info_2 Fbt; typedef Constrained_triangulation_face_base_2 Fb; typedef Triangulation_data_structure_2 TDS; typedef Exact_predicates_tag Itag; diff --git a/BGL/doc/BGL/PackageDescription.txt b/BGL/doc/BGL/PackageDescription.txt index cf7e059049b..d74834a3c19 100644 --- a/BGL/doc/BGL/PackageDescription.txt +++ b/BGL/doc/BGL/PackageDescription.txt @@ -756,8 +756,8 @@ user might encounter. - `CGAL::alpha_expansion_graphcut()` \cgalCRPSection{I/O Functions} -- `CGAL::read_polygon_mesh()` -- `CGAL::write_polygon_mesh()` +- `CGAL::IO::read_polygon_mesh()` +- `CGAL::IO::write_polygon_mesh()` - \link PkgBGLIoFuncsSTL I/O for STL files \endlink - \link PkgBGLIoFuncsPLY I/O for PLY files \endlink - \link PkgBGLIoFuncsOBJ I/O for OBJ files \endlink diff --git a/BGL/examples/BGL_LCC/copy_lcc.cpp b/BGL/examples/BGL_LCC/copy_lcc.cpp index 65086dfeb7f..4d317edc099 100644 --- a/BGL/examples/BGL_LCC/copy_lcc.cpp +++ b/BGL/examples/BGL_LCC/copy_lcc.cpp @@ -39,7 +39,7 @@ int main(int argc, char* argv[]) Target1 T1; { CGAL::copy_face_graph(S, T1); - CGAL::write_OFF("lcc.off", T1); + CGAL::IO::write_OFF("lcc.off", T1); } S.clear(); diff --git a/BGL/examples/BGL_LCC/distance_lcc.cpp b/BGL/examples/BGL_LCC/distance_lcc.cpp index afc32287a34..73dd211644c 100644 --- a/BGL/examples/BGL_LCC/distance_lcc.cpp +++ b/BGL/examples/BGL_LCC/distance_lcc.cpp @@ -20,7 +20,7 @@ typedef boost::graph_traits::vertex_iterator vertex_iterator; int main(int argc, char** argv) { LCC lcc; - CGAL::read_polygon_mesh((argc>1)?argv[1]:"cube.off", lcc); + CGAL::IO::read_polygon_mesh((argc>1)?argv[1]:"cube.off", lcc); // This is the vector where the distance gets written to std::vector distance(lcc.vertex_attributes().size()); diff --git a/BGL/examples/BGL_LCC/incident_vertices_lcc.cpp b/BGL/examples/BGL_LCC/incident_vertices_lcc.cpp index fdffd6121a5..09cf04839e5 100644 --- a/BGL/examples/BGL_LCC/incident_vertices_lcc.cpp +++ b/BGL/examples/BGL_LCC/incident_vertices_lcc.cpp @@ -51,7 +51,7 @@ OutputIterator adjacent_vertices_V2(const LCC& g, int main(int argc, char** argv) { LCC lcc; - CGAL::read_polygon_mesh((argc>1)?argv[1]:"cube.off", lcc); + CGAL::IO::read_polygon_mesh((argc>1)?argv[1]:"cube.off", lcc); GraphTraits::vertex_iterator vi = vertices(lcc).first; std::list V; diff --git a/BGL/examples/BGL_LCC/normals_lcc.cpp b/BGL/examples/BGL_LCC/normals_lcc.cpp index 7487e1876a0..38e98f63cc6 100644 --- a/BGL/examples/BGL_LCC/normals_lcc.cpp +++ b/BGL/examples/BGL_LCC/normals_lcc.cpp @@ -70,7 +70,7 @@ int main(int argc, char** argv) Face_index_map; LCC lcc; - CGAL::read_polygon_mesh((argc>1)?argv[1]:"cube.off", lcc); + CGAL::IO::read_polygon_mesh((argc>1)?argv[1]:"cube.off", lcc); // Ad hoc property_map to store normals. Face_index_map is used to // map face_descriptors to a contiguous range of indices. See diff --git a/BGL/examples/BGL_LCC/range_lcc.cpp b/BGL/examples/BGL_LCC/range_lcc.cpp index ad261980311..fa9220127ba 100644 --- a/BGL/examples/BGL_LCC/range_lcc.cpp +++ b/BGL/examples/BGL_LCC/range_lcc.cpp @@ -52,7 +52,7 @@ void fct(const LCC& lcc) int main(int argc, char** argv) { LCC lcc; - CGAL::read_polygon_mesh((argc>1)?argv[1]:"cube.off", lcc); + CGAL::IO::read_polygon_mesh((argc>1)?argv[1]:"cube.off", lcc); fct(lcc); return 0; diff --git a/BGL/examples/BGL_LCC/transform_iterator_lcc.cpp b/BGL/examples/BGL_LCC/transform_iterator_lcc.cpp index 12533a4ed0d..299edae306d 100644 --- a/BGL/examples/BGL_LCC/transform_iterator_lcc.cpp +++ b/BGL/examples/BGL_LCC/transform_iterator_lcc.cpp @@ -43,7 +43,7 @@ struct Source { int main(int argc, char** argv) { LCC lcc; - CGAL::read_polygon_mesh((argc>1)?argv[1]:"cube.off", lcc); + CGAL::IO::read_polygon_mesh((argc>1)?argv[1]:"cube.off", lcc); GraphTraits::vertex_descriptor vd = *(vertices(lcc).first); typedef boost::transform_iterator,halfedge_around_target_iterator> adjacent_vertex_iterator; diff --git a/BGL/examples/BGL_OpenMesh/TriMesh.cpp b/BGL/examples/BGL_OpenMesh/TriMesh.cpp index 126ba82744f..df325b56457 100644 --- a/BGL/examples/BGL_OpenMesh/TriMesh.cpp +++ b/BGL/examples/BGL_OpenMesh/TriMesh.cpp @@ -28,13 +28,13 @@ int main(int argc, char** argv ) std::vector V; const char* filename = (argc>1)?argv[1]:"in.off"; const char* outname= (argc>2)?argv[2]:"out.off"; - CGAL::read_polygon_mesh(filename, mesh); + CGAL::IO::read_polygon_mesh(filename, mesh); for(vertex_descriptor vd : vertices(mesh)){ for(halfedge_descriptor hd : CGAL::halfedges_around_target(vd,mesh)){ if(! CGAL::is_border(edge(hd,mesh),mesh)){ CGAL::Euler::flip_edge(hd,mesh); - CGAL::write_polygon_mesh(outname, mesh); + CGAL::IO::write_polygon_mesh(outname, mesh); return 0; } } diff --git a/BGL/examples/BGL_graphcut/face_selection_borders_regularization_example.cpp b/BGL/examples/BGL_graphcut/face_selection_borders_regularization_example.cpp index 9904bfffecc..ab5875e1184 100644 --- a/BGL/examples/BGL_graphcut/face_selection_borders_regularization_example.cpp +++ b/BGL/examples/BGL_graphcut/face_selection_borders_regularization_example.cpp @@ -21,7 +21,7 @@ int main(int argc, char** argv) } Mesh mesh; - CGAL::read_OFF (in, mesh); + CGAL::IO::read_OFF (in, mesh); boost::unordered_map is_selected_map; diff --git a/BGL/examples/BGL_surface_mesh/connected_components.cpp b/BGL/examples/BGL_surface_mesh/connected_components.cpp index e76fe3c31f7..d078cb5e64c 100644 --- a/BGL/examples/BGL_surface_mesh/connected_components.cpp +++ b/BGL/examples/BGL_surface_mesh/connected_components.cpp @@ -17,7 +17,7 @@ int main(int argc, char* argv[]) const char* filename = (argc > 1) ? argv[1] : "data/prim.off"; Mesh sm; - if(!CGAL::read_polygon_mesh(filename, sm)) + if(!CGAL::IO::read_polygon_mesh(filename, sm)) { std::cerr << "Invalid input." << std::endl; return 1; diff --git a/BGL/examples/BGL_surface_mesh/prim.cpp b/BGL/examples/BGL_surface_mesh/prim.cpp index c98b0b4a582..2e55814270d 100644 --- a/BGL/examples/BGL_surface_mesh/prim.cpp +++ b/BGL/examples/BGL_surface_mesh/prim.cpp @@ -17,7 +17,7 @@ int main(int argc, char* argv[]) const char* filename = (argc>1) ? argv[1] : "data/prim.off"; Mesh P; - if(!CGAL::read_polygon_mesh(filename, P)) + if(!CGAL::IO::read_polygon_mesh(filename, P)) { std::cerr << "Invalid input." << std::endl; return 1; diff --git a/BGL/examples/BGL_surface_mesh/seam_mesh.cpp b/BGL/examples/BGL_surface_mesh/seam_mesh.cpp index 92e446a0ee7..ab524cabdcc 100644 --- a/BGL/examples/BGL_surface_mesh/seam_mesh.cpp +++ b/BGL/examples/BGL_surface_mesh/seam_mesh.cpp @@ -36,7 +36,7 @@ int main(int argc, char* argv[]) const char* filename = (argc>1) ? argv[1] : "data/cube.off"; Mesh sm; - if(!CGAL::read_polygon_mesh(filename, sm)) + if(!CGAL::IO::read_polygon_mesh(filename, sm)) { std::cerr << "Invalid input." << std::endl; return 1; diff --git a/BGL/examples/BGL_surface_mesh/surface_mesh_dual.cpp b/BGL/examples/BGL_surface_mesh/surface_mesh_dual.cpp index fd5535d0ea7..d278a383cab 100644 --- a/BGL/examples/BGL_surface_mesh/surface_mesh_dual.cpp +++ b/BGL/examples/BGL_surface_mesh/surface_mesh_dual.cpp @@ -40,7 +40,7 @@ int main(int argc, char* argv[]) const char* filename = (argc > 1) ? argv[1] : "data/prim.off"; Mesh primal; - if(!CGAL::read_polygon_mesh(filename, primal)) + if(!CGAL::IO::read_polygon_mesh(filename, primal)) { std::cerr << "Invalid input." << std::endl; return 1; diff --git a/BGL/examples/BGL_surface_mesh/surface_mesh_partition.cpp b/BGL/examples/BGL_surface_mesh/surface_mesh_partition.cpp index 629fddfb640..1bc03831e72 100644 --- a/BGL/examples/BGL_surface_mesh/surface_mesh_partition.cpp +++ b/BGL/examples/BGL_surface_mesh/surface_mesh_partition.cpp @@ -17,7 +17,7 @@ int main(int argc, char** argv) int number_of_parts = (argc>2) ? atoi(argv[2]) : 8; SM sm; - if(!CGAL::read_polygon_mesh(filename, sm)) + if(!CGAL::IO::read_polygon_mesh(filename, sm)) { std::cerr << "Invalid input." << std::endl; return 1; @@ -44,7 +44,7 @@ int main(int argc, char** argv) CGAL::copy_face_graph(filtered_sm, part_sm); // Output the mesh extracted from subpart n°0 - CGAL::write_polygon_mesh("sm_part_0.off", part_sm, CGAL::parameters::stream_precision(17)); + CGAL::IO::write_polygon_mesh("sm_part_0.off", part_sm, CGAL::parameters::stream_precision(17)); // Output all the vertices that are in the part n°0 std::ofstream outxyz("out.xyz"); diff --git a/BGL/examples/BGL_surface_mesh/write_inp.cpp b/BGL/examples/BGL_surface_mesh/write_inp.cpp index 71c86535874..7554bed208d 100644 --- a/BGL/examples/BGL_surface_mesh/write_inp.cpp +++ b/BGL/examples/BGL_surface_mesh/write_inp.cpp @@ -22,7 +22,7 @@ int main() std::ofstream out("out.inp"); out.precision(17); - CGAL::write_INP(out, "out.inp", "S4R", sm); + CGAL::IO::write_INP(out, "out.inp", "S4R", sm); return EXIT_SUCCESS; } diff --git a/BGL/include/CGAL/boost/graph/IO/3MF.h b/BGL/include/CGAL/boost/graph/IO/3MF.h index ebc47bc0e49..664551c9af2 100644 --- a/BGL/include/CGAL/boost/graph/IO/3MF.h +++ b/BGL/include/CGAL/boost/graph/IO/3MF.h @@ -28,6 +28,8 @@ namespace CGAL { +namespace IO { + //////////////////////////////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////////////////////////////// // Write @@ -58,7 +60,7 @@ bool write_3MF(const std::string& filename, const std::vector& names #ifndef DOXYGEN_RUNNING , typename boost::disable_if< - IO::internal::is_Point_set_or_Range_or_Iterator< + internal::is_Point_set_or_Range_or_Iterator< typename boost::range_value::type> >::type* = nullptr #endif ) @@ -114,7 +116,7 @@ bool write_3MF(const std::string& filename, return write_3MF(filename, all_points, all_triangles, names); } -} // namespace CGAL +} } // namespace CGAL::IO #endif // defined(CGAL_LINKED_WITH_3MF) || defined(DOXYGEN_RUNNING) diff --git a/BGL/include/CGAL/boost/graph/IO/GOCAD.h b/BGL/include/CGAL/boost/graph/IO/GOCAD.h index 966e4f4219d..9bdeea347d3 100644 --- a/BGL/include/CGAL/boost/graph/IO/GOCAD.h +++ b/BGL/include/CGAL/boost/graph/IO/GOCAD.h @@ -76,7 +76,6 @@ public: }; } // namespace internal -} // namespace IO /// \ingroup PkgBGLIoFuncsGOCAD /// @@ -120,14 +119,14 @@ bool read_GOCAD(std::istream& is, Graph& g, const CGAL_BGL_NP_CLASS& np #ifndef DOXYGEN_RUNNING - , typename boost::disable_if >::type* = nullptr + , typename boost::disable_if >::type* = nullptr #endif ) { typedef typename CGAL::GetVertexPointMap::type VPM; typedef typename boost::property_traits::value_type Point; - IO::internal::GOCAD_builder builder(is); + internal::GOCAD_builder builder(is); if(!builder(g, np)) return false; @@ -141,14 +140,14 @@ bool read_GOCAD(std::istream& is, template bool read_GOCAD(std::istream& is, std::pair& name_and_color, Graph& g, - typename boost::disable_if >::type* = nullptr) + typename boost::disable_if >::type* = nullptr) { return read_GOCAD(is, name_and_color, g, parameters::all_default()); } template bool read_GOCAD(std::istream& is, Graph& g, const CGAL_BGL_NP_CLASS& np, - typename boost::disable_if >::type* = nullptr) + typename boost::disable_if >::type* = nullptr) { std::pair dummy; return read_GOCAD(is, dummy, g, np); @@ -156,7 +155,7 @@ bool read_GOCAD(std::istream& is, Graph& g, const CGAL_BGL_NP_CLASS& np, template bool read_GOCAD(std::istream& is, Graph& g, - typename boost::disable_if >::type* = nullptr) + typename boost::disable_if >::type* = nullptr) { return read_GOCAD(is, g, parameters::all_default()); } @@ -207,7 +206,7 @@ bool read_GOCAD(const std::string& fname, Graph& g, const CGAL_BGL_NP_CLASS& np #ifndef DOXYGEN_RUNNING - , typename boost::disable_if >::type* = nullptr + , typename boost::disable_if >::type* = nullptr #endif ) { @@ -220,14 +219,14 @@ bool read_GOCAD(const std::string& fname, template bool read_GOCAD(const std::string& fname, std::pair& name_and_color, Graph& g, - typename boost::disable_if >::type* = nullptr) + typename boost::disable_if >::type* = nullptr) { return read_GOCAD(fname, name_and_color, g, parameters::all_default()); } template bool read_GOCAD(const std::string& fname, Graph& g, const CGAL_BGL_NP_CLASS& np, - typename boost::disable_if >::type* = nullptr) + typename boost::disable_if >::type* = nullptr) { std::pair dummy; return read_GOCAD(fname, dummy, g, np); @@ -235,7 +234,7 @@ bool read_GOCAD(const std::string& fname, Graph& g, const CGAL_BGL_NP_CLASS& np, template bool read_GOCAD(const std::string& fname, Graph& g, - typename boost::disable_if >::type* = nullptr) + typename boost::disable_if >::type* = nullptr) { return read_GOCAD(fname, g, parameters::all_default()); } @@ -284,7 +283,7 @@ bool write_GOCAD(std::ostream& os, const Graph& g, const CGAL_BGL_NP_CLASS& np #ifndef DOXYGEN_RUNNING - , typename boost::disable_if >::type* = nullptr + , typename boost::disable_if >::type* = nullptr #endif ) { @@ -346,7 +345,7 @@ bool write_GOCAD(std::ostream& os, template bool write_GOCAD(std::ostream& os, const char* name, const Graph& g, - typename boost::disable_if >::type* = nullptr) + typename boost::disable_if >::type* = nullptr) { return write_GOCAD(os, name, g, parameters::all_default()); } @@ -391,7 +390,7 @@ bool write_GOCAD(std::ostream& os, const Graph& g, const CGAL_BGL_NP_CLASS& np #ifndef DOXYGEN_RUNNING - , typename boost::disable_if >::type* = nullptr + , typename boost::disable_if >::type* = nullptr #endif ) { @@ -402,7 +401,7 @@ bool write_GOCAD(std::ostream& os, template bool write_GOCAD(std::ostream& os, const Graph& g, - typename boost::disable_if >::type* = nullptr) + typename boost::disable_if >::type* = nullptr) { return write_GOCAD(os, g, parameters::all_default()); } @@ -447,7 +446,7 @@ bool write_GOCAD(const std::string& fname, const Graph& g, const CGAL_BGL_NP_CLASS& np #ifndef DOXYGEN_RUNNING - , typename boost::disable_if >::type* = nullptr + , typename boost::disable_if >::type* = nullptr #endif ) { @@ -461,13 +460,13 @@ bool write_GOCAD(const std::string& fname, template bool write_GOCAD(const std::string& fname, const Graph& g, - typename boost::disable_if >::type* = nullptr) + typename boost::disable_if >::type* = nullptr) { return write_GOCAD(fname, g, parameters::all_default()); } /// \endcond -} // namespace CGAL +}} // namespace CGAL::IO #endif // CGAL_BGL_IO_GOCAD_H diff --git a/BGL/include/CGAL/boost/graph/IO/Generic_facegraph_builder.h b/BGL/include/CGAL/boost/graph/IO/Generic_facegraph_builder.h index 3f1d724fae3..b78d97f5af8 100644 --- a/BGL/include/CGAL/boost/graph/IO/Generic_facegraph_builder.h +++ b/BGL/include/CGAL/boost/graph/IO/Generic_facegraph_builder.h @@ -44,7 +44,7 @@ public: typedef typename GetK::Kernel Kernel; typedef typename Kernel::Vector_3 Vector; typedef typename Kernel::Point_2 Texture; - typedef CGAL::Color Color; + typedef CGAL::IO::Color Color; typedef typename CGAL::GetVertexPointMap::type VPM; diff --git a/BGL/include/CGAL/boost/graph/IO/Generic_facegraph_printer.h b/BGL/include/CGAL/boost/graph/IO/Generic_facegraph_printer.h index 5fb75be5363..c78861a855d 100644 --- a/BGL/include/CGAL/boost/graph/IO/Generic_facegraph_printer.h +++ b/BGL/include/CGAL/boost/graph/IO/Generic_facegraph_printer.h @@ -95,7 +95,7 @@ public: typedef typename GetVertexPointMap::const_type VPM; typedef typename boost::property_traits::reference Point_ref; - typedef CGAL::Color Color; + typedef CGAL::IO::Color Color; typedef typename internal_np::Lookup_named_param_def< internal_np::vertex_color_map_t, NamedParameters, @@ -153,7 +153,7 @@ public: if(has_vertex_colors) { - const CGAL::Color& vc = get(vcm, v); + const CGAL::IO::Color& vc = get(vcm, v); m_writer.write_vertex_color(vc.red(), vc.green(), vc.blue()); // @fixme correct? } @@ -182,7 +182,7 @@ public: if(has_face_colors) { - const CGAL::Color& fc = get(fcm, f); + const CGAL::IO::Color& fc = get(fcm, f); m_writer.write_face_color(fc.red(), fc.green(), fc.blue()); } diff --git a/BGL/include/CGAL/boost/graph/IO/INP.h b/BGL/include/CGAL/boost/graph/IO/INP.h index fbc15b04d96..61d2ea7409e 100644 --- a/BGL/include/CGAL/boost/graph/IO/INP.h +++ b/BGL/include/CGAL/boost/graph/IO/INP.h @@ -23,6 +23,8 @@ namespace CGAL { +namespace IO { + /// \cond SKIP_IN_MANUAL template @@ -98,6 +100,6 @@ bool write_INP(const std::string& fname, const std::string& type, const Graph& g /// \endcond -} // namespace CGAL +}} // namespace CGAL::IO #endif // CGAL_BGL_IO_INP_H diff --git a/BGL/include/CGAL/boost/graph/IO/OBJ.h b/BGL/include/CGAL/boost/graph/IO/OBJ.h index 7d733c9f8b4..a21c92a9a94 100644 --- a/BGL/include/CGAL/boost/graph/IO/OBJ.h +++ b/BGL/include/CGAL/boost/graph/IO/OBJ.h @@ -68,7 +68,6 @@ public: }; } // namespace internal -} // namespace IO /*! \ingroup PkgBGLIoFuncsOBJ @@ -115,14 +114,14 @@ bool read_OBJ(std::istream& is, Graph& g, const CGAL_BGL_NP_CLASS& np #ifndef DOXYGEN_RUNNING - , typename boost::disable_if >::type* = nullptr + , typename boost::disable_if >::type* = nullptr #endif ) { typedef typename CGAL::GetVertexPointMap::type VPM; typedef typename boost::property_traits::value_type Point; - IO::internal::OBJ_builder builder(is); + internal::OBJ_builder builder(is); return builder(g, np); } @@ -130,7 +129,7 @@ bool read_OBJ(std::istream& is, template bool read_OBJ(std::istream& is, Graph& g, - typename boost::disable_if >::type* = nullptr) + typename boost::disable_if >::type* = nullptr) { return read_OBJ(is, g, parameters::all_default()); } @@ -182,7 +181,7 @@ bool read_OBJ(const std::string& fname, Graph& g, const CGAL_BGL_NP_CLASS& np #ifndef DOXYGEN_RUNNING - , typename boost::disable_if >::type* = nullptr + , typename boost::disable_if >::type* = nullptr #endif ) { @@ -195,7 +194,7 @@ bool read_OBJ(const std::string& fname, template bool read_OBJ(const std::string& fname, Graph& g, - typename boost::disable_if >::type* = nullptr) + typename boost::disable_if >::type* = nullptr) { return read_OBJ(fname, g, parameters::all_default()); } @@ -245,11 +244,11 @@ bool write_OBJ(std::ostream& os, const Graph& g, const CGAL_BGL_NP_CLASS& np #ifndef DOXYGEN_RUNNING - , typename boost::disable_if >::type* = nullptr + , typename boost::disable_if >::type* = nullptr #endif ) { - IO::internal::Generic_facegraph_printer printer(os); + internal::Generic_facegraph_printer printer(os); return printer(g, np); } @@ -257,7 +256,7 @@ bool write_OBJ(std::ostream& os, template bool write_OBJ(std::ostream& os, const Graph& g, - typename boost::disable_if >::type* = nullptr) + typename boost::disable_if >::type* = nullptr) { return write_OBJ(os, g, parameters::all_default()); } @@ -302,7 +301,7 @@ bool write_OBJ(const std::string& fname, const Graph& g, const CGAL_BGL_NP_CLASS& np #ifndef DOXYGEN_RUNNING - , typename boost::disable_if >::type* = nullptr + , typename boost::disable_if >::type* = nullptr #endif ) { @@ -315,13 +314,13 @@ bool write_OBJ(const std::string& fname, template bool write_OBJ(const std::string& fname, const Graph& g, - typename boost::disable_if >::type* = nullptr) + typename boost::disable_if >::type* = nullptr) { return write_OBJ(fname, g, parameters::all_default()); } /// \endcond -} // namespace CGAL +}} // namespace CGAL::IO #endif // CGAL_BGL_IO_OBJ_H diff --git a/BGL/include/CGAL/boost/graph/IO/OFF.h b/BGL/include/CGAL/boost/graph/IO/OFF.h index 57685046e79..997d9f96ef0 100644 --- a/BGL/include/CGAL/boost/graph/IO/OFF.h +++ b/BGL/include/CGAL/boost/graph/IO/OFF.h @@ -78,12 +78,11 @@ bool read_OFF_BGL(std::istream& is, typedef typename CGAL::GetVertexPointMap::type VPM; typedef typename boost::property_traits::value_type Point; - IO::internal::OFF_builder builder(is); + internal::OFF_builder builder(is); return builder(g, np); } } // namespace internal -} // namespace IO /*! \ingroup PkgBGLIoFuncsOFF @@ -127,7 +126,7 @@ bool read_OFF_BGL(std::istream& is, \cgalParamNBegin{vertex_color_map} \cgalParamDescription{a property map associating colors to the vertices of `g`} \cgalParamType{a class model of `WritablePropertyMap` with `boost::graph_traits::%vertex_descriptor` - as key type and `CGAL::Color` as value type} + as key type and `CGAL::IO::Color` as value type} \cgalParamDefault{vertex colors that may exist in the input will be ignored} \cgalParamNEnd @@ -141,7 +140,7 @@ bool read_OFF_BGL(std::istream& is, \cgalParamNBegin{face_color_map} \cgalParamDescription{a property map associating colors to the faces of `g`} \cgalParamType{a class model of `WritablePropertyMap` with `boost::graph_traits::%face_descriptor` - as key type and `CGAL::Color` as value type} + as key type and `CGAL::IO::Color` as value type} \cgalParamDefault{face colors that may exist in the input will be ignored} \cgalParamNEnd @@ -162,18 +161,18 @@ bool read_OFF(std::istream& is, Graph& g, const CGAL_BGL_NP_CLASS& np #ifndef DOXYGEN_RUNNING - , typename boost::disable_if >::type* = nullptr + , typename boost::disable_if >::type* = nullptr #endif ) { - return IO::internal::read_OFF_BGL(is, g, np); + return internal::read_OFF_BGL(is, g, np); } /// \cond SKIP_IN_MANUAL template bool read_OFF(std::istream& is, Graph& g, - typename boost::disable_if >::type* = nullptr) + typename boost::disable_if >::type* = nullptr) { return read_OFF(is, g, parameters::all_default()); } @@ -222,7 +221,7 @@ bool read_OFF(std::istream& is, Graph& g, \cgalParamNBegin{vertex_color_map} \cgalParamDescription{a property map associating colors to the vertices of `g`} \cgalParamType{a class model of `WritablePropertyMap` with `boost::graph_traits::%vertex_descriptor` - as key type and `CGAL::Color` as value type} + as key type and `CGAL::IO::Color` as value type} \cgalParamDefault{vertex colors that may exist in the input will be ignored} \cgalParamNEnd @@ -236,7 +235,7 @@ bool read_OFF(std::istream& is, Graph& g, \cgalParamNBegin{face_color_map} \cgalParamDescription{a property map associating colors to the faces of `g`} \cgalParamType{a class model of `WritablePropertyMap` with `boost::graph_traits::%face_descriptor` - as key type and `CGAL::Color` as value type} + as key type and `CGAL::IO::Color` as value type} \cgalParamDefault{face colors that may exist in the input will be ignored} \cgalParamNEnd @@ -257,7 +256,7 @@ bool read_OFF(const std::string& fname, Graph& g, const CGAL_BGL_NP_CLASS& np #ifndef DOXYGEN_RUNNING - , typename boost::disable_if >::type* = nullptr + , typename boost::disable_if >::type* = nullptr #endif ) { @@ -269,35 +268,37 @@ bool read_OFF(const std::string& fname, template bool read_OFF(const std::string& fname, Graph& g, - typename boost::disable_if >::type* = nullptr) + typename boost::disable_if >::type* = nullptr) { return read_OFF(fname, g, parameters::all_default()); } /// \endcond +} // namespace IO + #ifndef CGAL_NO_DEPRECATED_CODE /*! \ingroup PkgBGLIOFctDeprecated - \deprecated This function is deprecated since \cgal 5.2, `CGAL::read_OFF()` should be used instead. + \deprecated This function is deprecated since \cgal 5.2, `CGAL::IO::read_OFF()` should be used instead. */ template CGAL_DEPRECATED bool read_off(std::istream& is, Graph& g, const CGAL_BGL_NP_CLASS& np) { - return read_OFF(is, g, np); + return IO::read_OFF(is, g, np); } /*! \ingroup PkgBGLIOFctDeprecated -\deprecated This function is deprecated since \cgal 5.2, `CGAL::read_OFF()` should be used instead. +\deprecated This function is deprecated since \cgal 5.2, `CGAL::IO::read_OFF()` should be used instead. */ template CGAL_DEPRECATED bool read_off(const char* fname, Graph& g, const CGAL_BGL_NP_CLASS& np) { - return read_OFF(fname, g, np); + return IO::read_OFF(fname, g, np); } template @@ -326,12 +327,11 @@ bool write_OFF_BGL(std::ostream& os, const Graph& g, const CGAL_BGL_NP_CLASS& np) { - IO::internal::Generic_facegraph_printer printer(os); + internal::Generic_facegraph_printer printer(os); return printer(g, np); } } // namespace internal -} // namespace IO /*! \ingroup PkgBGLIoFuncsOFF @@ -365,7 +365,7 @@ bool write_OFF_BGL(std::ostream& os, \cgalParamNBegin{vertex_color_map} \cgalParamDescription{a property map associating colors to the vertices of `g`} \cgalParamType{a class model of `ReadablePropertyMap` with `boost::graph_traits::%vertex_descriptor` - as key type and `CGAL::Color` as value type} + as key type and `CGAL::IO::Color` as value type} \cgalParamDefault{no vertex colors in the output} \cgalParamNEnd @@ -379,7 +379,7 @@ bool write_OFF_BGL(std::ostream& os, \cgalParamNBegin{face_color_map} \cgalParamDescription{a property map associating colors to the faces of `g`} \cgalParamType{a class model of `ReadablePropertyMap` with `boost::graph_traits::%face_descriptor` - as key type and `CGAL::Color` as value type} + as key type and `CGAL::IO::Color` as value type} \cgalParamDefault{no face colors in the output} \cgalParamNEnd @@ -400,18 +400,18 @@ bool write_OFF(std::ostream& os, const Graph& g, const CGAL_BGL_NP_CLASS& np #ifndef DOXYGEN_RUNNING - , typename boost::disable_if >::type* = nullptr + , typename boost::disable_if >::type* = nullptr #endif ) { - return IO::internal::write_OFF_BGL(os, g, np); + return internal::write_OFF_BGL(os, g, np); } /// \cond SKIP_IN_MANUAL template bool write_OFF(std::ostream& os, const Graph& g, - typename boost::disable_if >::type* = nullptr) + typename boost::disable_if >::type* = nullptr) { return write_OFF(os, g, parameters::all_default()); } @@ -450,7 +450,7 @@ bool write_OFF(std::ostream& os, const Graph& g, \cgalParamNBegin{vertex_color_map} \cgalParamDescription{a property map associating colors to the vertices of `g`} \cgalParamType{a class model of `ReadablePropertyMap` with `boost::graph_traits::%vertex_descriptor` - as key type and `CGAL::Color` as value type} + as key type and `CGAL::IO::Color` as value type} \cgalParamDefault{no vertex colors in the output} \cgalParamNEnd @@ -464,7 +464,7 @@ bool write_OFF(std::ostream& os, const Graph& g, \cgalParamNBegin{face_color_map} \cgalParamDescription{a property map associating colors to the faces of `g`} \cgalParamType{a class model of `ReadablePropertyMap` with `boost::graph_traits::%face_descriptor` - as key type and `CGAL::Color` as value type} + as key type and `CGAL::IO::Color` as value type} \cgalParamDefault{no face colors in the output} \cgalParamNEnd @@ -485,7 +485,7 @@ bool write_OFF(const std::string& fname, const Graph& g, const CGAL_BGL_NP_CLASS& np #ifndef DOXYGEN_RUNNING - , typename boost::disable_if >::type* = nullptr + , typename boost::disable_if >::type* = nullptr #endif ) { @@ -503,24 +503,26 @@ bool write_OFF(const std::string& fname, template bool write_OFF(const std::string& fname, const Graph& g, - typename boost::disable_if >::type* = nullptr) + typename boost::disable_if >::type* = nullptr) { return write_OFF(fname, g, parameters::all_default()); } /// \endcond +} // namespace IO + #ifndef CGAL_NO_DEPRECATED_CODE /*! \ingroup PkgBGLIOFctDeprecated - \deprecated This function is deprecated since \cgal 5.2, `CGAL::write_OFF()` should be used instead. + \deprecated This function is deprecated since \cgal 5.2, `CGAL::IO::write_OFF()` should be used instead. */ template CGAL_DEPRECATED bool write_off(std::ostream& os, const Graph& g, const CGAL_BGL_NP_CLASS& np) { - return write_OFF(os, g, np); + return IO::write_OFF(os, g, np); } template @@ -531,12 +533,12 @@ CGAL_DEPRECATED bool write_off(std::ostream& os, const Graph& g) /*! \ingroup PkgBGLIOFctDeprecated -\deprecated This function is deprecated since \cgal 5.2, `CGAL::write_OFF()` should be used instead. +\deprecated This function is deprecated since \cgal 5.2, `CGAL::IO::write_OFF()` should be used instead. */ template CGAL_DEPRECATED bool write_off(const char* fname, const Graph& g, const CGAL_BGL_NP_CLASS& np) { - return write_OFF(fname, g, np); + return IO::write_OFF(fname, g, np); } template diff --git a/BGL/include/CGAL/boost/graph/IO/PLY.h b/BGL/include/CGAL/boost/graph/IO/PLY.h index c571c07d629..d06a141baa0 100644 --- a/BGL/include/CGAL/boost/graph/IO/PLY.h +++ b/BGL/include/CGAL/boost/graph/IO/PLY.h @@ -71,12 +71,11 @@ bool read_PLY_BGL(std::istream& is, typedef typename CGAL::GetVertexPointMap::type VPM; typedef typename boost::property_traits::value_type Point; - IO::internal::PLY_builder builder(is); + internal::PLY_builder builder(is); return builder(g, np); } } // namespace internal -} // namespace IO /*! \ingroup PkgBGLIoFuncsPLY @@ -114,14 +113,14 @@ bool read_PLY_BGL(std::istream& is, \cgalParamNBegin{vertex_color_map} \cgalParamDescription{a property map associating colors to the vertices of `g`} \cgalParamType{a class model of `WritablePropertyMap` with `boost::graph_traits::%vertex_descriptor` - as key type and `CGAL::Color` as value type} + as key type and `CGAL::IO::Color` as value type} \cgalParamDefault{vertex colors that may exist in the input will be ignored} \cgalParamNEnd \cgalParamNBegin{face_color_map} \cgalParamDescription{a property map associating colors to the faces of `g`} \cgalParamType{a class model of `WritablePropertyMap` with `boost::graph_traits::%face_descriptor` - as key type and `CGAL::Color` as value type} + as key type and `CGAL::IO::Color` as value type} \cgalParamDefault{face colors that may exist in the input will be ignored} \cgalParamNEnd @@ -142,20 +141,20 @@ bool read_PLY(std::istream& is, Graph& g, const CGAL_BGL_NP_CLASS& np #ifndef DOXYGEN_RUNNING - , typename boost::disable_if >::type* = nullptr + , typename boost::disable_if >::type* = nullptr #endif ) { - return IO::internal::read_PLY_BGL(is, g, np); + return internal::read_PLY_BGL(is, g, np); } /// \cond SKIP_IN_MANUAL template bool read_PLY(std::istream& is, Graph& g, - typename boost::disable_if >::type* = nullptr) + typename boost::disable_if >::type* = nullptr) { - return IO::internal::read_PLY_BGL(is, g, parameters::all_default()); + return internal::read_PLY_BGL(is, g, parameters::all_default()); } /// \endcond @@ -200,14 +199,14 @@ bool read_PLY(std::istream& is, Graph& g, \cgalParamNBegin{vertex_color_map} \cgalParamDescription{a property map associating colors to the vertices of `g`} \cgalParamType{a class model of `WritablePropertyMap` with `boost::graph_traits::%vertex_descriptor` - as key type and `CGAL::Color` as value type} + as key type and `CGAL::IO::Color` as value type} \cgalParamDefault{vertex colors that may exist in the input will be ignored} \cgalParamNEnd \cgalParamNBegin{face_color_map} \cgalParamDescription{a property map associating colors to the faces of `g`} \cgalParamType{a class model of `WritablePropertyMap` with `boost::graph_traits::%face_descriptor` - as key type and `CGAL::Color` as value type} + as key type and `CGAL::IO::Color` as value type} \cgalParamDefault{face colors that may exist in the input will be ignored} \cgalParamNEnd @@ -228,7 +227,7 @@ bool read_PLY(const std::string& fname, Graph& g, const CGAL_BGL_NP_CLASS& np #ifndef DOXYGEN_RUNNING - , typename boost::disable_if >::type* = nullptr + , typename boost::disable_if >::type* = nullptr #endif ) { @@ -237,13 +236,13 @@ bool read_PLY(const std::string& fname, { std::ifstream is(fname, std::ios::binary); CGAL::set_mode(is, CGAL::IO::BINARY); - return IO::internal::read_PLY_BGL(is, g, np); + return internal::read_PLY_BGL(is, g, np); } else { std::ifstream is(fname); CGAL::set_mode(is, CGAL::IO::ASCII); - return IO::internal::read_PLY_BGL(is, g, np); + return internal::read_PLY_BGL(is, g, np); } } @@ -251,7 +250,7 @@ bool read_PLY(const std::string& fname, template bool read_PLY(const std::string& fname, Graph& g, - typename boost::disable_if >::type* = nullptr) + typename boost::disable_if >::type* = nullptr) { return read_PLY(fname, g, parameters::all_default()); } @@ -297,14 +296,14 @@ bool read_PLY(const std::string& fname, Graph& g, \cgalParamNBegin{vertex_color_map} \cgalParamDescription{a property map associating colors to the vertices of `g`} \cgalParamType{a class model of `WritablePropertyMap` with `boost::graph_traits::%vertex_descriptor` - as key type and `CGAL::Color` as value type} + as key type and `CGAL::IO::Color` as value type} \cgalParamDefault{vertex colors that may exist in the input will be ignored} \cgalParamNEnd \cgalParamNBegin{face_color_map} \cgalParamDescription{a property map associating colors to the faces of `g`} \cgalParamType{a class model of `WritablePropertyMap` with `boost::graph_traits::%face_descriptor` - as key type and `CGAL::Color` as value type} + as key type and `CGAL::IO::Color` as value type} \cgalParamDefault{face colors that may exist in the input will be ignored} \cgalParamNEnd @@ -324,7 +323,7 @@ bool write_PLY(std::ostream& os, const std::string& comments, const CGAL_BGL_NP_CLASS& np #ifndef DOXYGEN_RUNNING - , typename boost::disable_if >::type* = nullptr + , typename boost::disable_if >::type* = nullptr #endif ) { @@ -335,7 +334,7 @@ bool write_PLY(std::ostream& os, typedef typename CGAL::GetInitializedVertexIndexMap::const_type VIMap; typedef typename GetVertexPointMap::const_type Vpm; typedef typename boost::property_traits::reference Point_3; - typedef CGAL::Color Color; + typedef CGAL::IO::Color Color; typedef typename internal_np::Lookup_named_param_def< internal_np::vertex_color_map_t, CGAL_BGL_NP_CLASS, @@ -365,7 +364,7 @@ bool write_PLY(std::ostream& os, // Write header os << "ply" << std::endl - << ((get_mode(os) == IO::BINARY) ? "format binary_little_endian 1.0" : "format ascii 1.0") << std::endl + << ((get_mode(os) == BINARY) ? "format binary_little_endian 1.0" : "format ascii 1.0") << std::endl << "comment Generated by the CGAL library" << std::endl; if(comments != std::string()) @@ -380,7 +379,7 @@ bool write_PLY(std::ostream& os, } os << "element vertex " << vertices(g).size() << std::endl; - IO::internal::output_property_header(os, make_ply_point_writer (CGAL::Identity_property_map())); + internal::output_property_header(os, make_ply_point_writer (CGAL::Identity_property_map())); //if vcm is not default add v:color property if(has_vcolor) { @@ -391,7 +390,7 @@ bool write_PLY(std::ostream& os, } os << "element face " << faces(g).size() << std::endl; - IO::internal::output_property_header( + internal::output_property_header( os, std::make_pair(CGAL::Identity_property_map >(), PLY_property >("vertex_indices"))); //if fcm is not default add f:color property @@ -407,10 +406,10 @@ bool write_PLY(std::ostream& os, for(vertex_descriptor vd : vertices(g)) { Point_3 p = get(vpm, vd); - IO::internal::output_properties(os, &p, make_ply_point_writer (CGAL::Identity_property_map())); + internal::output_properties(os, &p, make_ply_point_writer (CGAL::Identity_property_map())); if(has_vcolor) { - const CGAL::Color& c = get(vcm, vd); + const CGAL::IO::Color& c = get(vcm, vd); if(get_mode(os) == CGAL::IO::ASCII) os << c << std::endl; else @@ -425,12 +424,12 @@ bool write_PLY(std::ostream& os, for(halfedge_descriptor hd : halfedges_around_face(halfedge(fd, g), g)) polygon.push_back(get(vim, target(hd,g))); - IO::internal::output_properties(os, &polygon, + internal::output_properties(os, &polygon, std::make_pair(CGAL::Identity_property_map >(), PLY_property >("vertex_indices"))); if(has_fcolor) { - const CGAL::Color& c = get(fcm, fd); + const CGAL::IO::Color& c = get(fcm, fd); if(get_mode(os) == CGAL::IO::ASCII) os << c << std::endl; else @@ -447,21 +446,21 @@ bool write_PLY(std::ostream& os, template bool write_PLY(std::ostream& os, const Graph& g, const std::string& comments, - typename boost::disable_if >::type* = nullptr) + typename boost::disable_if >::type* = nullptr) { return write_PLY(os, g, comments, parameters::all_default()); } template bool write_PLY(std::ostream& os, const Graph& g, const CGAL_BGL_NP_CLASS& np, - typename boost::disable_if >::type* = nullptr) + typename boost::disable_if >::type* = nullptr) { return write_PLY(os, g, std::string(), np); } template bool write_PLY(std::ostream& os, const Graph& g, - typename boost::disable_if >::type* = nullptr) + typename boost::disable_if >::type* = nullptr) { return write_PLY(os, g, std::string(), parameters::all_default()); } @@ -507,14 +506,14 @@ bool write_PLY(std::ostream& os, const Graph& g, \cgalParamNBegin{vertex_color_map} \cgalParamDescription{a property map associating colors to the vertices of `g`} \cgalParamType{a class model of `ReadablePropertyMap` with `boost::graph_traits::%vertex_descriptor` - as key type and `CGAL::Color` as value type} + as key type and `CGAL::IO::Color` as value type} \cgalParamDefault{no vertex color in the output} \cgalParamNEnd \cgalParamNBegin{face_color_map} \cgalParamDescription{a property map associating colors to the faces of `g`} \cgalParamType{a class model of `ReadablePropertyMap` with `boost::graph_traits::%face_descriptor` - as key type and `CGAL::Color` as value type} + as key type and `CGAL::IO::Color` as value type} \cgalParamDefault{no face color in the output} \cgalParamNEnd @@ -534,7 +533,7 @@ bool write_PLY(const std::string& fname, const std::string& comments, const CGAL_BGL_NP_CLASS& np #ifndef DOXYGEN_RUNNING - , typename boost::disable_if >::type* = nullptr + , typename boost::disable_if >::type* = nullptr #endif ) { @@ -558,27 +557,27 @@ bool write_PLY(const std::string& fname, template bool write_PLY(const std::string& fname, const Graph& g, const std::string comments, - typename boost::disable_if >::type* = nullptr) + typename boost::disable_if >::type* = nullptr) { return write_PLY(fname, g, comments, parameters::all_default()); } template bool write_PLY(const std::string& fname, const Graph& g, const CGAL_BGL_NP_CLASS& np, - typename boost::disable_if >::type* = nullptr) + typename boost::disable_if >::type* = nullptr) { return write_PLY(fname, g, std::string(), np); } template bool write_PLY(const std::string& fname, const Graph& g, - typename boost::disable_if >::type* = nullptr) + typename boost::disable_if >::type* = nullptr) { return write_PLY(fname, g, std::string(), parameters::all_default()); } /// \endcond -} // namespace CGAL +} } // namespace CGAL::IO #endif // CGAL_BGL_IO_PLY_H diff --git a/BGL/include/CGAL/boost/graph/IO/STL.h b/BGL/include/CGAL/boost/graph/IO/STL.h index 78bd1fcb588..d9bf634012e 100644 --- a/BGL/include/CGAL/boost/graph/IO/STL.h +++ b/BGL/include/CGAL/boost/graph/IO/STL.h @@ -63,7 +63,6 @@ public: }; } // namespace internal -} // namespace IO /*! \ingroup PkgBGLIoFuncsSTL @@ -113,7 +112,7 @@ bool read_STL(std::istream& is, typedef typename boost::property_traits::value_type Point; if(!is.good()) return false; - IO::internal::STL_builder builder(is); + internal::STL_builder builder(is); return builder(g, np); } @@ -264,7 +263,7 @@ bool write_STL(std::ostream& os, set_stream_precision_from_NP(os, np); - if(get_mode(os) == IO::BINARY) + if(get_mode(os) == BINARY) { os << "FileType: Binary "; const boost::uint32_t N32 = static_cast(faces(g).size()); @@ -385,6 +384,6 @@ bool write_STL(const std::string& fname, const Graph& g) { return write_STL(fnam /// \endcond -} // namespace CGAL +}} // namespace CGAL::IO #endif // CGAL_BGL_IO_STL_H diff --git a/BGL/include/CGAL/boost/graph/IO/VTK.h b/BGL/include/CGAL/boost/graph/IO/VTK.h index 894b3598b09..5aa8d565965 100644 --- a/BGL/include/CGAL/boost/graph/IO/VTK.h +++ b/BGL/include/CGAL/boost/graph/IO/VTK.h @@ -113,7 +113,6 @@ bool vtkPointSet_to_polygon_mesh(vtkPointSet* poly_data, } } // namespace internal -} // namespace IO /*! * \ingroup PkgBGLIoFuncsVTP @@ -160,13 +159,13 @@ bool read_VTP(const std::string& fname, } test.close(); vtkSmartPointer data; - vtkSmartPointer obs = - vtkSmartPointer::New(); + vtkSmartPointer obs = + vtkSmartPointer::New(); - data = vtkPolyData::SafeDownCast(IO::internal::read_vtk_file(fname, obs)->GetOutput()); + data = vtkPolyData::SafeDownCast(internal::read_vtk_file(fname, obs)->GetOutput()); if (obs->GetError()) return false; - return IO::internal::vtkPointSet_to_polygon_mesh(data, g, np); + return internal::vtkPointSet_to_polygon_mesh(data, g, np); } /// \cond SKIP_IN_MANUAL @@ -180,7 +179,6 @@ bool read_VTP(const std::string& fname, Graph& g) { return read_VTP(fname, g, pa //////////////////////////////////////////////////////////////////////////////////////////////////// // Write -namespace IO { namespace internal { // writes the polys appended data at the end of the .vtp file @@ -381,7 +379,6 @@ void write_polys_points(std::ostream& os, } } // namespace internal -} // namespace IO /*! \ingroup PkgBGLIoFuncsVTP * @@ -465,16 +462,16 @@ bool write_VTP(std::ostream& os, std::size_t offset = 0; const bool binary = choose_parameter(get_parameter(np, internal_np::use_binary_mode), true); - IO::internal::write_points_tag(os, g, binary, offset, np); - IO::internal::write_polys_tag(os, g, binary, offset, np); + internal::write_points_tag(os, g, binary, offset, np); + internal::write_polys_tag(os, g, binary, offset, np); os << " \n" << " \n"; if(binary) { os << "\n_"; - IO::internal::write_polys_points(os, g, np); - IO::internal::write_polys(os, g, np); + internal::write_polys_points(os, g, np); + internal::write_polys(os, g, np); } os << "" << std::endl; @@ -551,17 +548,19 @@ bool write_VTP(const std::string& fname, const Graph& g) { return write_VTP(fnam /// \endcond +} // namespace IO + #ifndef CGAL_NO_DEPRECATED_CODE /*! \ingroup PkgBGLIOFctDeprecated - \deprecated This function is deprecated since \cgal 5.2, `CGAL::write_VTP()` should be used instead. + \deprecated This function is deprecated since \cgal 5.2, `CGAL::IO::write_VTP()` should be used instead. */ template CGAL_DEPRECATED bool write_vtp(std::ostream& os, const Graph& g, const CGAL_BGL_NP_CLASS& np) { - return write_VTP(os, g, np); + return IO::write_VTP(os, g, np); } template diff --git a/BGL/include/CGAL/boost/graph/IO/WRL.h b/BGL/include/CGAL/boost/graph/IO/WRL.h index dc8186862c7..3c19ef09642 100644 --- a/BGL/include/CGAL/boost/graph/IO/WRL.h +++ b/BGL/include/CGAL/boost/graph/IO/WRL.h @@ -30,6 +30,8 @@ namespace CGAL { +namespace IO { + //////////////////////////////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////////////////////////////// // Write @@ -71,7 +73,7 @@ bool write_WRL(std::ostream& os, const CGAL_BGL_NP_CLASS& np) { CGAL::VRML_2_ostream vos(os); - IO::internal::Generic_facegraph_printer printer(vos); + internal::Generic_facegraph_printer printer(vos); return printer(g, np); } @@ -118,17 +120,19 @@ bool write_WRL(std::ostream& os, const Graph& g) { return write_WRL(os, g, param template bool write_WRL(const std::string& fname, const Graph& g) { return write_WRL(fname, g, parameters::all_default()); } +} // namespace IO + #ifndef CGAL_NO_DEPRECATED_CODE /*! \ingroup PkgBGLIOFctDeprecated - \deprecated This function is deprecated since \cgal 5.2, `CGAL::write_WRL()` should be used instead. + \deprecated This function is deprecated since \cgal 5.2, `CGAL::IO::write_WRL()` should be used instead. */ template CGAL_DEPRECATED bool write_wrl(std::ostream& os, const Graph& g, const CGAL_BGL_NP_CLASS& np) { - return write_WRL(os, g, np); + return IO::write_WRL(os, g, np); } template diff --git a/BGL/include/CGAL/boost/graph/IO/polygon_mesh_io.h b/BGL/include/CGAL/boost/graph/IO/polygon_mesh_io.h index 6fb5cdfec20..bd54d53014e 100644 --- a/BGL/include/CGAL/boost/graph/IO/polygon_mesh_io.h +++ b/BGL/include/CGAL/boost/graph/IO/polygon_mesh_io.h @@ -28,6 +28,8 @@ namespace CGAL { +namespace IO { + //////////////////////////////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////////////////////////////// // Read @@ -121,7 +123,7 @@ bool read_polygon_mesh(std::istream& is, * * \return `true` if reading was successful, `false` otherwise. * - * \sa \link PMP_IO_grp `CGAL::Polygon_mesh_processing::read_polygon_mesh()`\endlink if the data is not 2-manifold + * \sa \link PMP_IO_grp `CGAL::Polygon_mesh_processing::IO::read_polygon_mesh()`\endlink if the data is not 2-manifold */ template bool read_polygon_mesh(const std::string& fname, @@ -130,7 +132,7 @@ bool read_polygon_mesh(const std::string& fname, { const bool verbose = parameters::choose_parameter(parameters::get_parameter(np, internal_np::verbose), false); - const std::string ext = IO::internal::get_file_extension(fname); + const std::string ext = internal::get_file_extension(fname); if(ext == std::string()) { if(verbose) @@ -233,7 +235,7 @@ bool write_polygon_mesh(const std::string& fname, { const bool verbose = parameters::choose_parameter(parameters::get_parameter(np, internal_np::verbose), false); - const std::string ext = IO::internal::get_file_extension(fname); + const std::string ext = internal::get_file_extension(fname); if(ext == std::string()) { if(verbose) @@ -275,6 +277,6 @@ bool write_polygon_mesh(const std::string& fname, Graph& g) /// \endcond -} // namespace CGAL +}} // namespace CGAL::IO #endif // CGAL_BOOST_GRAPH_POLYGON_MESH_IO_H diff --git a/BGL/include/CGAL/draw_face_graph.h b/BGL/include/CGAL/draw_face_graph.h index 0bc8531ed03..00e22278c7b 100644 --- a/BGL/include/CGAL/draw_face_graph.h +++ b/BGL/include/CGAL/draw_face_graph.h @@ -26,11 +26,11 @@ namespace CGAL struct DefaultColorFunctorFaceGraph { template - CGAL::Color operator()(const Graph&, + CGAL::IO::Color operator()(const Graph&, typename boost::graph_traits::face_descriptor fh) const { if (fh==boost::graph_traits::null_face()) // use to get the mono color - return CGAL::Color(100, 125, 200); // R G B between 0-255 + return CGAL::IO::Color(100, 125, 200); // R G B between 0-255 return get_random_color(CGAL::get_default_random()); } @@ -141,7 +141,7 @@ protected: { if (fh!=boost::graph_traits::null_face()) { - CGAL::Color c=fcolor(sm, fh); + CGAL::IO::Color c=fcolor(sm, fh); face_begin(c); auto hd=halfedge(fh, sm); const auto first_hd = hd; diff --git a/BGL/test/BGL/bench_read_from_stream_vs_add_face_and_add_faces.cpp b/BGL/test/BGL/bench_read_from_stream_vs_add_face_and_add_faces.cpp index cf084977444..bfec2a708f3 100644 --- a/BGL/test/BGL/bench_read_from_stream_vs_add_face_and_add_faces.cpp +++ b/BGL/test/BGL/bench_read_from_stream_vs_add_face_and_add_faces.cpp @@ -31,7 +31,7 @@ int main(int argc, char** argv) Mesh m; const char* filename = (argc>1) ? argv[1] : "data/genus3.off"; - CGAL::read_polygon_mesh(filename, m); + CGAL::IO::read_polygon_mesh(filename, m); std::cout << " is_valid? " << CGAL::is_valid_polygon_mesh(m) << "\n"; std::cout << "Total time: " << timer.time() << std::endl << std::endl; @@ -48,7 +48,7 @@ int main(int argc, char** argv) const char* filename = (argc>1) ? argv[1] : "data/blobby.off"; std::vector points; std::vector > faces_ids; - CGAL::read_polygon_soup(filename, points, faces_ids); + CGAL::IO::read_polygon_soup(filename, points, faces_ids); std::cout << " Read soup: " << timer.time() << std::endl; std::vector > triangles; @@ -85,7 +85,7 @@ int main(int argc, char** argv) std::vector points; std::vector > faces_ids; - CGAL::read_polygon_soup(filename, points, faces_ids); + CGAL::IO::read_polygon_soup(filename, points, faces_ids); std::cout << " Read soup: " << timer.time() << std::endl; std::vector > triangles; diff --git a/BGL/test/BGL/test_3mf_to_sm.cpp b/BGL/test/BGL/test_3mf_to_sm.cpp index 20d55a4924a..2feaa7e1061 100644 --- a/BGL/test/BGL/test_3mf_to_sm.cpp +++ b/BGL/test/BGL/test_3mf_to_sm.cpp @@ -24,7 +24,7 @@ typedef CGAL::Surface_mesh Mesh; typedef std::vector PointRange; typedef std::vector Polygon; typedef std::vector PolygonRange; -typedef std::vector ColorRange; +typedef std::vector ColorRange; int main(int argc, char** argv) { @@ -38,7 +38,7 @@ int main(int argc, char** argv) std::vector meshes; //testing reading functions. - if(!CGAL::read_3MF(filename, meshes)) + if(!CGAL::IO::read_3MF(filename, meshes)) return 1; for(std::size_t i = 0; i< meshes.size(); ++i) { @@ -86,7 +86,7 @@ int main(int argc, char** argv) triangle.push_back(vertex_id_map[vert]); } triangles.push_back(triangle); - colors.push_back(CGAL::Color(255,0,0,255)); + colors.push_back(CGAL::IO::Color(255,0,0,255)); } all_polygons.push_back(triangles); @@ -113,7 +113,7 @@ int main(int argc, char** argv) triangle.push_back(vertex_id_map[vert]); } triangles.push_back(triangle); - colors.push_back(CGAL::Color(0,0,255,255)); + colors.push_back(CGAL::IO::Color(0,0,255,255)); } all_polygons.push_back(triangles); @@ -125,7 +125,7 @@ int main(int argc, char** argv) meshes[0] = sphere; meshes[1] = tube; - CGAL::write_3MF("meshes.3mf", meshes, names); + CGAL::IO::write_3MF("meshes.3mf", meshes, names); std::cout << "OK." << std::endl; #endif //CGAL_LINKED_WITH_3MF diff --git a/BGL/test/BGL/test_Collapse_edge.cpp b/BGL/test/BGL/test_Collapse_edge.cpp index 28bb61af4b1..69f1c347a5e 100644 --- a/BGL/test/BGL/test_Collapse_edge.cpp +++ b/BGL/test/BGL/test_Collapse_edge.cpp @@ -43,7 +43,7 @@ collapse_edge_test() const std::string fname = "data/flat_hexahedron.off"; Mesh m; - if(!CGAL::read_OFF(fname, m)) + if(!CGAL::IO::read_OFF(fname, m)) std::cout << "Error reading file: " << fname << std::endl; bool m_is_valid = CGAL::is_valid(m); diff --git a/BGL/test/BGL/test_Euler_operations.cpp b/BGL/test/BGL/test_Euler_operations.cpp index 21b8809897d..8d2f9df3b5c 100644 --- a/BGL/test/BGL/test_Euler_operations.cpp +++ b/BGL/test/BGL/test_Euler_operations.cpp @@ -540,7 +540,7 @@ add_faces() std::ifstream in("data/head.off"); std::vector points; std::vector > faces_ids; - CGAL::read_OFF(in, points, faces_ids); + CGAL::IO::read_OFF(in, points, faces_ids); std::vector verts; verts.reserve(points.size()); @@ -561,7 +561,7 @@ add_faces() { std::ifstream in("data/open_cube.off"); T m; - CGAL::read_OFF(in, m); + CGAL::IO::read_OFF(in, m); std::vector verts(vertices(m).begin(), vertices(m).end()); std::list< std::vector > new_faces; new_faces.push_back({verts[1], verts[7], verts[4]}); @@ -574,7 +574,7 @@ add_faces() { std::ifstream in("data/open_cube.off"); T m; - CGAL::read_OFF(in, m); + CGAL::IO::read_OFF(in, m); std::vector verts(vertices(m).begin(), vertices(m).end()); verts.push_back(add_vertex(m)); put(CGAL::vertex_point, m, verts.back(), Kernel::Point_3(50,0,50)); diff --git a/BGL/test/BGL/test_Prefix.h b/BGL/test/BGL/test_Prefix.h index be2f523aaec..10851e57cce 100644 --- a/BGL/test/BGL/test_Prefix.h +++ b/BGL/test/BGL/test_Prefix.h @@ -160,7 +160,7 @@ bool read_a_mesh(OMesh& s, const std::string& str) { template bool read_a_mesh(T& m, const std::string& str) { - return CGAL::read_OFF(str, m); + return CGAL::IO::read_OFF(str, m); } bool read_a_mesh(Polyhedron& p, const std::string& str) diff --git a/BGL/test/BGL/test_bgl_read_write.cpp b/BGL/test/BGL/test_bgl_read_write.cpp index 5be2d9e33e9..ee2a4f8c644 100644 --- a/BGL/test/BGL/test_bgl_read_write.cpp +++ b/BGL/test/BGL/test_bgl_read_write.cpp @@ -118,35 +118,35 @@ void test_bgl_OFF(const char* filename) // read with OFF Mesh fg; std::ifstream is(filename); - bool ok = CGAL::read_OFF(is, fg); + bool ok = CGAL::IO::read_OFF(is, fg); assert(ok); assert(num_vertices(fg) != 0 && num_faces(fg) != 0); is.close(); fg.clear(); is.open(filename, std::ios::binary); - ok = CGAL::read_OFF(is, fg); + ok = CGAL::IO::read_OFF(is, fg); assert(ok); assert(num_vertices(fg) != 0 && num_faces(fg) != 0); // write with OFF { std::ofstream os("tmp.off"); - ok = CGAL::write_OFF(os, fg); + ok = CGAL::IO::write_OFF(os, fg); assert(ok); Mesh fg2; - ok = CGAL::read_OFF("tmp.off", fg2); + ok = CGAL::IO::read_OFF("tmp.off", fg2); assert(ok); assert(are_equal_meshes(fg, fg2)); } // write with PM { - ok = CGAL::write_polygon_mesh("tmp.obj.off", fg); + ok = CGAL::IO::write_polygon_mesh("tmp.obj.off", fg); assert(ok); Mesh fg2; - ok = CGAL::read_polygon_mesh("tmp.obj.off", fg2); + ok = CGAL::IO::read_polygon_mesh("tmp.obj.off", fg2); assert(ok); assert(are_equal_meshes(fg, fg2)); } @@ -156,63 +156,63 @@ void test_bgl_OFF(const char* filename) typedef typename K::Point_2 Point_2; typedef typename K::Vector_3 Vector; typedef typename boost::property_map >::type VertexNormalMap; - typedef typename boost::property_map >::type VertexColorMap; + typedef typename boost::property_map >::type VertexColorMap; typedef typename boost::property_map >::type VertexTextureMap; - typedef typename boost::property_map >::type FaceColorMap; + typedef typename boost::property_map >::type FaceColorMap; // COFF { CGAL::clear(fg); - VertexColorMap vcm = get(CGAL::dynamic_vertex_property_t(), fg); - FaceColorMap fcm = get(CGAL::dynamic_face_property_t(), fg); + VertexColorMap vcm = get(CGAL::dynamic_vertex_property_t(), fg); + FaceColorMap fcm = get(CGAL::dynamic_face_property_t(), fg); - ok = CGAL::read_OFF("data/mesh_with_colors.off", fg, CGAL::parameters::vertex_color_map(vcm) - .face_color_map(fcm)); + ok = CGAL::IO::read_OFF("data/mesh_with_colors.off", fg, CGAL::parameters::vertex_color_map(vcm) + .face_color_map(fcm)); assert(ok); assert(num_vertices(fg) == 8 && num_faces(fg) == 4); for(auto v : vertices(fg)) - assert(get(vcm, v) != CGAL::Color()); + assert(get(vcm, v) != CGAL::IO::Color()); for(auto f : faces(fg)) - assert(get(fcm, f) != CGAL::Color()); + assert(get(fcm, f) != CGAL::IO::Color()); // write with OFF { - ok = CGAL::write_OFF("tmp.off", fg, CGAL::parameters::vertex_color_map(vcm) - .face_color_map(fcm)); + ok = CGAL::IO::write_OFF("tmp.off", fg, CGAL::parameters::vertex_color_map(vcm) + .face_color_map(fcm)); assert(ok); Mesh fg2; - VertexColorMap vcm2 = get(CGAL::dynamic_vertex_property_t(), fg2); - FaceColorMap fcm2 = get(CGAL::dynamic_face_property_t(), fg2); + VertexColorMap vcm2 = get(CGAL::dynamic_vertex_property_t(), fg2); + FaceColorMap fcm2 = get(CGAL::dynamic_face_property_t(), fg2); - ok = CGAL::read_polygon_mesh("tmp.off", fg2, CGAL::parameters::vertex_color_map(vcm2) - .face_color_map(fcm2)); + ok = CGAL::IO::read_polygon_mesh("tmp.off", fg2, CGAL::parameters::vertex_color_map(vcm2) + .face_color_map(fcm2)); assert(ok); assert(are_equal_meshes(fg, fg2)); for(auto v : vertices(fg2)) - assert(get(vcm2, v) != CGAL::Color()); + assert(get(vcm2, v) != CGAL::IO::Color()); for(auto f : faces(fg2)) - assert(get(fcm2, f) != CGAL::Color()); + assert(get(fcm2, f) != CGAL::IO::Color()); } // write with PM { - ok = CGAL::write_polygon_mesh("tmp.off", fg, CGAL::parameters::vertex_color_map(vcm)); + ok = CGAL::IO::write_polygon_mesh("tmp.off", fg, CGAL::parameters::vertex_color_map(vcm)); assert(ok); Mesh fg2; - VertexColorMap vcm2 = get(CGAL::dynamic_vertex_property_t(), fg2); + VertexColorMap vcm2 = get(CGAL::dynamic_vertex_property_t(), fg2); - ok = CGAL::read_polygon_mesh("tmp.off", fg2, CGAL::parameters::vertex_color_map(vcm2)); + ok = CGAL::IO::read_polygon_mesh("tmp.off", fg2, CGAL::parameters::vertex_color_map(vcm2)); assert(ok); assert(are_equal_meshes(fg, fg2)); for(auto v : vertices(fg2)) - assert(get(vcm2, v) != CGAL::Color()); + assert(get(vcm2, v) != CGAL::IO::Color()); } } @@ -221,7 +221,7 @@ void test_bgl_OFF(const char* filename) CGAL::clear(fg); VertexNormalMap vnm = get(CGAL::dynamic_vertex_property_t(), fg); - ok = CGAL::read_OFF("data/mesh_with_normals.off", fg, CGAL::parameters::vertex_normal_map(vnm)); + ok = CGAL::IO::read_OFF("data/mesh_with_normals.off", fg, CGAL::parameters::vertex_normal_map(vnm)); assert(ok); for(auto v : vertices(fg)) @@ -230,13 +230,13 @@ void test_bgl_OFF(const char* filename) // write with OFF { std::ofstream os("tmp.off"); - ok = CGAL::write_OFF("tmp.off", fg, CGAL::parameters::vertex_normal_map(vnm)); + ok = CGAL::IO::write_OFF("tmp.off", fg, CGAL::parameters::vertex_normal_map(vnm)); assert(ok); Mesh fg2; VertexNormalMap vnm2 = get(CGAL::dynamic_vertex_property_t(), fg2); - ok = CGAL::read_polygon_mesh("tmp.off", fg2, CGAL::parameters::vertex_normal_map(vnm2)); + ok = CGAL::IO::read_polygon_mesh("tmp.off", fg2, CGAL::parameters::vertex_normal_map(vnm2)); assert(ok); assert(are_equal_meshes(fg, fg2)); @@ -246,13 +246,13 @@ void test_bgl_OFF(const char* filename) // write with PM { - ok = CGAL::write_polygon_mesh("tmp.off", fg, CGAL::parameters::vertex_normal_map(vnm)); + ok = CGAL::IO::write_polygon_mesh("tmp.off", fg, CGAL::parameters::vertex_normal_map(vnm)); assert(ok); Mesh fg2; VertexNormalMap vnm2 = get(CGAL::dynamic_vertex_property_t(), fg2); - ok = CGAL::read_polygon_mesh("tmp.off", fg2, CGAL::parameters::vertex_normal_map(vnm2)); + ok = CGAL::IO::read_polygon_mesh("tmp.off", fg2, CGAL::parameters::vertex_normal_map(vnm2)); assert(ok); assert(are_equal_meshes(fg, fg2)); @@ -267,121 +267,121 @@ void test_bgl_OFF(const char* filename) std::ifstream is("data/full.off", std::ios::binary); VertexNormalMap vnm2 = get(CGAL::dynamic_vertex_property_t(), fg); - VertexColorMap vcm2 = get(CGAL::dynamic_vertex_property_t(), fg); + VertexColorMap vcm2 = get(CGAL::dynamic_vertex_property_t(), fg); VertexTextureMap vtm2 = get(CGAL::dynamic_vertex_property_t(), fg); - FaceColorMap fcm2 = get(CGAL::dynamic_face_property_t(), fg); + FaceColorMap fcm2 = get(CGAL::dynamic_face_property_t(), fg); - ok = CGAL::read_OFF(is, fg, CGAL::parameters::vertex_normal_map(vnm2) - .vertex_color_map(vcm2) - .vertex_texture_map(vtm2) - .face_color_map(fcm2)); + ok = CGAL::IO::read_OFF(is, fg, CGAL::parameters::vertex_normal_map(vnm2) + .vertex_color_map(vcm2) + .vertex_texture_map(vtm2) + .face_color_map(fcm2)); assert(ok); assert(num_vertices(fg) != 0 && num_faces(fg) != 0); for(auto v : vertices(fg)) { assert(get(vnm2, v) != CGAL::NULL_VECTOR); - assert(get(vcm2, v) != CGAL::Color()); + assert(get(vcm2, v) != CGAL::IO::Color()); } for(auto f : faces(fg)) - assert(get(fcm2, f) != CGAL::Color()); + assert(get(fcm2, f) != CGAL::IO::Color()); fg.clear(); is.close(); is.open("data/full.off"); VertexNormalMap vnm = get(CGAL::dynamic_vertex_property_t(), fg); - VertexColorMap vcm = get(CGAL::dynamic_vertex_property_t(), fg); + VertexColorMap vcm = get(CGAL::dynamic_vertex_property_t(), fg); VertexTextureMap vtm = get(CGAL::dynamic_vertex_property_t(), fg); - FaceColorMap fcm = get(CGAL::dynamic_face_property_t(), fg); - ok = CGAL::read_OFF(is, fg, CGAL::parameters::vertex_normal_map(vnm) - .vertex_color_map(vcm) - .vertex_texture_map(vtm) - .face_color_map(fcm)); + FaceColorMap fcm = get(CGAL::dynamic_face_property_t(), fg); + ok = CGAL::IO::read_OFF(is, fg, CGAL::parameters::vertex_normal_map(vnm) + .vertex_color_map(vcm) + .vertex_texture_map(vtm) + .face_color_map(fcm)); assert(ok); assert(num_vertices(fg) != 0 && num_faces(fg) != 0); for(auto v : vertices(fg)) { assert(get(vnm, v) != CGAL::NULL_VECTOR); - assert(get(vcm, v) != CGAL::Color()); + assert(get(vcm, v) != CGAL::IO::Color()); } // write with OFF { std::ofstream os("tmp.off"); - ok = CGAL::write_OFF("tmp.off", fg, CGAL::parameters::vertex_normal_map(vnm) - .vertex_color_map(vcm) - .vertex_texture_map(vtm) - .face_color_map(fcm)); + ok = CGAL::IO::write_OFF("tmp.off", fg, CGAL::parameters::vertex_normal_map(vnm) + .vertex_color_map(vcm) + .vertex_texture_map(vtm) + .face_color_map(fcm)); assert(ok); Mesh fg2; VertexNormalMap vnm2 = get(CGAL::dynamic_vertex_property_t(), fg2); - VertexColorMap vcm2 = get(CGAL::dynamic_vertex_property_t(), fg2); + VertexColorMap vcm2 = get(CGAL::dynamic_vertex_property_t(), fg2); VertexTextureMap vtm2 = get(CGAL::dynamic_vertex_property_t(), fg2); - FaceColorMap fcm2 = get(CGAL::dynamic_face_property_t(), fg2); + FaceColorMap fcm2 = get(CGAL::dynamic_face_property_t(), fg2); - ok = CGAL::read_polygon_mesh("tmp.off", fg2, CGAL::parameters::vertex_normal_map(vnm2) - .vertex_color_map(vcm2) - .vertex_texture_map(vtm2) - .face_color_map(fcm2)); + ok = CGAL::IO::read_polygon_mesh("tmp.off", fg2, CGAL::parameters::vertex_normal_map(vnm2) + .vertex_color_map(vcm2) + .vertex_texture_map(vtm2) + .face_color_map(fcm2)); assert(ok); assert(are_equal_meshes(fg, fg2)); for(auto v : vertices(fg2)) { assert(get(vnm2, v) != CGAL::NULL_VECTOR); - assert(get(vcm2, v) != CGAL::Color()); + assert(get(vcm2, v) != CGAL::IO::Color()); } for(auto f : faces(fg2)) - assert(get(fcm2, f) != CGAL::Color()); + assert(get(fcm2, f) != CGAL::IO::Color()); } // write with PM { - ok = CGAL::write_polygon_mesh("tmp.off", fg, CGAL::parameters::vertex_normal_map(vnm) - .vertex_color_map(vcm) - .vertex_texture_map(vtm) - .face_color_map(fcm)); + ok = CGAL::IO::write_polygon_mesh("tmp.off", fg, CGAL::parameters::vertex_normal_map(vnm) + .vertex_color_map(vcm) + .vertex_texture_map(vtm) + .face_color_map(fcm)); assert(ok); Mesh fg2; VertexNormalMap vnm2 = get(CGAL::dynamic_vertex_property_t(), fg2); - VertexColorMap vcm2 = get(CGAL::dynamic_vertex_property_t(), fg2); + VertexColorMap vcm2 = get(CGAL::dynamic_vertex_property_t(), fg2); VertexTextureMap vtm2 = get(CGAL::dynamic_vertex_property_t(), fg2); - FaceColorMap fcm2 = get(CGAL::dynamic_face_property_t(), fg2); + FaceColorMap fcm2 = get(CGAL::dynamic_face_property_t(), fg2); - ok = CGAL::read_polygon_mesh("tmp.off", fg2, CGAL::parameters::vertex_normal_map(vnm2) - .vertex_color_map(vcm2) - .vertex_texture_map(vtm2) - .face_color_map(fcm2)); + ok = CGAL::IO::read_polygon_mesh("tmp.off", fg2, CGAL::parameters::vertex_normal_map(vnm2) + .vertex_color_map(vcm2) + .vertex_texture_map(vtm2) + .face_color_map(fcm2)); assert(ok); assert(are_equal_meshes(fg, fg2)); for(auto v : vertices(fg2)) { assert(get(vnm2, v) != CGAL::NULL_VECTOR); - assert(get(vcm2, v) != CGAL::Color()); + assert(get(vcm2, v) != CGAL::IO::Color()); } for(auto f : faces(fg2)) - assert(get(fcm2, f) != CGAL::Color()); + assert(get(fcm2, f) != CGAL::IO::Color()); } } //@todo test multi objects in a single file // test wrong inputs std::cerr << " ########### Error text is expected to follow." << std::endl; - ok = CGAL::read_OFF("data/mesh_that_doesnt_exist.off", fg); + ok = CGAL::IO::read_OFF("data/mesh_that_doesnt_exist.off", fg); assert(!ok); - ok = CGAL::read_OFF("data/invalid_cut.off", fg); // cut in half + ok = CGAL::IO::read_OFF("data/invalid_cut.off", fg); // cut in half assert(!ok); - ok = CGAL::read_OFF("data/invalid_nv.off", fg); // wrong number of points + ok = CGAL::IO::read_OFF("data/invalid_nv.off", fg); // wrong number of points assert(!ok); - ok = CGAL::read_OFF("data/sphere.obj", fg); + ok = CGAL::IO::read_OFF("data/sphere.obj", fg); assert(!ok); - ok = CGAL::read_OFF("data/pig.stl", fg); + ok = CGAL::IO::read_OFF("data/pig.stl", fg); assert(!ok); std::cerr << " ########### No more error text from here." << std::endl; } @@ -394,72 +394,72 @@ void test_bgl_OBJ(const std::string filename) Mesh fg; std::ifstream is(filename); - bool ok = CGAL::read_OBJ(is, fg, CGAL::parameters::verbose(true)); + bool ok = CGAL::IO::read_OBJ(is, fg, CGAL::parameters::verbose(true)); assert(ok); assert(filename != "data/sphere.obj" || (num_vertices(fg) == 272 && num_faces(fg) == 540)); // write with OBJ { std::ofstream os("tmp.obj"); - ok = CGAL::write_OBJ(os, fg); + ok = CGAL::IO::write_OBJ(os, fg); assert(ok); Mesh fg2; - ok = CGAL::read_OBJ("tmp.obj", fg2); + ok = CGAL::IO::read_OBJ("tmp.obj", fg2); assert(ok); assert(are_equal_meshes(fg, fg2)); } // write with PM { - ok = CGAL::write_polygon_mesh("tmp.obj", fg); + ok = CGAL::IO::write_polygon_mesh("tmp.obj", fg); assert(ok); Mesh fg2; - ok = CGAL::read_polygon_mesh("tmp.obj", fg2); + ok = CGAL::IO::read_polygon_mesh("tmp.obj", fg2); assert(ok); assert(are_equal_meshes(fg, fg2)); } // Test NPs CGAL::clear(fg); - ok = CGAL::read_OBJ("data/sphere.obj", fg); + ok = CGAL::IO::read_OBJ("data/sphere.obj", fg); assert(ok); assert(num_vertices(fg) == 272 && num_faces(fg) == 540); // write with OBJ { std::ofstream os("tmp.obj"); - ok = CGAL::write_OBJ("tmp.obj", fg); + ok = CGAL::IO::write_OBJ("tmp.obj", fg); assert(ok); Mesh fg2; - ok = CGAL::read_polygon_mesh("tmp.obj", fg2); + ok = CGAL::IO::read_polygon_mesh("tmp.obj", fg2); assert(ok); assert(are_equal_meshes(fg, fg2)); } // write with PM { - ok = CGAL::write_polygon_mesh("tmp.obj", fg); + ok = CGAL::IO::write_polygon_mesh("tmp.obj", fg); assert(ok); Mesh fg2; - ok = CGAL::read_polygon_mesh("tmp.obj", fg2); + ok = CGAL::IO::read_polygon_mesh("tmp.obj", fg2); assert(ok); assert(are_equal_meshes(fg, fg2)); } // test wrong inputs std::cerr << " ########### Error text is expected to follow." << std::endl; - ok = CGAL::read_OBJ("data/mesh_that_doesnt_exist.obj", fg); + ok = CGAL::IO::read_OBJ("data/mesh_that_doesnt_exist.obj", fg); assert(!ok); - ok = CGAL::read_OBJ("data/invalid_cut.obj", fg); // invalid vertex ids + ok = CGAL::IO::read_OBJ("data/invalid_cut.obj", fg); // invalid vertex ids assert(!ok); - ok = CGAL::read_OBJ("data/genus3.off", fg); // wrong extension + ok = CGAL::IO::read_OBJ("data/genus3.off", fg); // wrong extension assert(!ok); - ok = CGAL::read_OBJ("data/pig.stl", fg); + ok = CGAL::IO::read_OBJ("data/pig.stl", fg); assert(!ok); std::cerr << " ########### No more error text from here." << std::endl; } @@ -472,7 +472,7 @@ void test_bgl_PLY(const std::string filename, Mesh fg; std::ifstream is(filename); - bool ok = CGAL::read_PLY(is, fg, CGAL::parameters::use_binary_mode(false)); + bool ok = CGAL::IO::read_PLY(is, fg, CGAL::parameters::use_binary_mode(false)); is.close(); assert(ok); assert(filename != "data/colored_tetra.ply" || (num_vertices(fg) == 4 && num_faces(fg) == 4)); @@ -480,7 +480,7 @@ void test_bgl_PLY(const std::string filename, { fg.clear(); is.open(filename, std::ios::binary); - bool ok = CGAL::read_PLY(is, fg, CGAL::parameters::use_binary_mode(false)); + bool ok = CGAL::IO::read_PLY(is, fg, CGAL::parameters::use_binary_mode(false)); is.close(); assert(ok); assert(filename != "data/colored_tetra.ply" || (num_vertices(fg) == 4 && num_faces(fg) == 4)); @@ -499,51 +499,51 @@ void test_bgl_PLY(const std::string filename, os.open("tmp.ply"); } - ok = CGAL::write_PLY(os, fg); + ok = CGAL::IO::write_PLY(os, fg); assert(ok); - ok = CGAL::write_PLY(os, fg, "test"); + ok = CGAL::IO::write_PLY(os, fg, "test"); assert(ok); Mesh fg2; - ok = CGAL::read_PLY("tmp.ply", fg2); + ok = CGAL::IO::read_PLY("tmp.ply", fg2); assert(ok); assert(are_equal_meshes(fg, fg2)); } // test NPs - typedef typename boost::property_map >::type VertexColorMap; - typedef typename boost::property_map >::type FaceColorMap; + typedef typename boost::property_map >::type VertexColorMap; + typedef typename boost::property_map >::type FaceColorMap; CGAL::clear(fg); - VertexColorMap vcm = get(CGAL::dynamic_vertex_property_t(), fg); - FaceColorMap fcm = get(CGAL::dynamic_face_property_t(), fg); + VertexColorMap vcm = get(CGAL::dynamic_vertex_property_t(), fg); + FaceColorMap fcm = get(CGAL::dynamic_face_property_t(), fg); std::ifstream is_c("data/colored_tetra.ply"); // ASCII - ok = CGAL::read_PLY(is_c, fg, CGAL::parameters::vertex_color_map(vcm) - .face_color_map(fcm)); + ok = CGAL::IO::read_PLY(is_c, fg, CGAL::parameters::vertex_color_map(vcm) + .face_color_map(fcm)); assert(ok); assert(num_vertices(fg) == 4 && num_faces(fg) == 4); for(auto v : vertices(fg)) { - assert(get(vcm, v) != CGAL::Color()); + assert(get(vcm, v) != CGAL::IO::Color()); } for(auto f : faces(fg)) - assert(get(fcm, f) != CGAL::Color()); + assert(get(fcm, f) != CGAL::IO::Color()); // write with PLY { - ok = CGAL::write_PLY("tmp.ply", fg, CGAL::parameters::vertex_color_map(vcm) - .face_color_map(fcm) - .use_binary_mode(binary)); + ok = CGAL::IO::write_PLY("tmp.ply", fg, CGAL::parameters::vertex_color_map(vcm) + .face_color_map(fcm) + .use_binary_mode(binary)); assert(ok); Mesh fg2; - VertexColorMap vcm2 = get(CGAL::dynamic_vertex_property_t(), fg2); - FaceColorMap fcm2 = get(CGAL::dynamic_face_property_t(), fg2); + VertexColorMap vcm2 = get(CGAL::dynamic_vertex_property_t(), fg2); + FaceColorMap fcm2 = get(CGAL::dynamic_face_property_t(), fg2); std::ifstream is_rpm; if(binary) @@ -555,57 +555,57 @@ void test_bgl_PLY(const std::string filename, { is_rpm.open("tmp.ply"); } - ok = CGAL::read_PLY(is_rpm, fg2, CGAL::parameters::vertex_color_map(vcm2) - .face_color_map(fcm2)); + ok = CGAL::IO::read_PLY(is_rpm, fg2, CGAL::parameters::vertex_color_map(vcm2) + .face_color_map(fcm2)); assert(ok); assert(are_equal_meshes(fg, fg2)); // @tmp // for(auto v : vertices(fg2)) -// assert(get(vcm2, v) != CGAL::Color()); +// assert(get(vcm2, v) != CGAL::IO::Color()); // for(auto f : faces(fg2)) -// assert(get(fcm2, f) != CGAL::Color()); +// assert(get(fcm2, f) != CGAL::IO::Color()); } // write with PM { - ok = CGAL::write_polygon_mesh("tmp.ply", fg, CGAL::parameters::vertex_color_map(vcm) - .face_color_map(fcm) - .use_binary_mode(binary)); + ok = CGAL::IO::write_polygon_mesh("tmp.ply", fg, CGAL::parameters::vertex_color_map(vcm) + .face_color_map(fcm) + .use_binary_mode(binary)); assert(ok); Mesh fg2; - VertexColorMap vcm2 = get(CGAL::dynamic_vertex_property_t(), fg2); - FaceColorMap fcm2 = get(CGAL::dynamic_face_property_t(), fg2); + VertexColorMap vcm2 = get(CGAL::dynamic_vertex_property_t(), fg2); + FaceColorMap fcm2 = get(CGAL::dynamic_face_property_t(), fg2); - ok = CGAL::read_polygon_mesh("tmp.ply", fg2, CGAL::parameters::vertex_color_map(vcm2) - .face_color_map(fcm2) - .use_binary_mode(binary)); + ok = CGAL::IO::read_polygon_mesh("tmp.ply", fg2, CGAL::parameters::vertex_color_map(vcm2) + .face_color_map(fcm2) + .use_binary_mode(binary)); assert(ok); assert(are_equal_meshes(fg, fg2)); // @tmp // for(auto v : vertices(fg2)) -// assert(get(vcm2, v) != CGAL::Color()); +// assert(get(vcm2, v) != CGAL::IO::Color()); // for(auto f : faces(fg2)) -// assert(get(fcm2, f) != CGAL::Color()); +// assert(get(fcm2, f) != CGAL::IO::Color()); } // test wrong inputs std::cerr << " ########### Error text is expected to follow." << std::endl; - ok = CGAL::read_PLY("data/mesh_that_doesnt_exist.ply", fg); + ok = CGAL::IO::read_PLY("data/mesh_that_doesnt_exist.ply", fg); assert(!ok); - ok = CGAL::read_PLY("data/invalid_cut.ply", fg); // cut in half + ok = CGAL::IO::read_PLY("data/invalid_cut.ply", fg); // cut in half assert(!ok); - ok = CGAL::read_PLY("data/invalid_nv.ply", fg); // broken formatting + ok = CGAL::IO::read_PLY("data/invalid_nv.ply", fg); // broken formatting assert(!ok); - ok = CGAL::read_PLY("data/binary_cut.ply", fg); // broken binary + ok = CGAL::IO::read_PLY("data/binary_cut.ply", fg); // broken binary assert(!ok); - ok = CGAL::read_PLY("data/cube.off", fg); + ok = CGAL::IO::read_PLY("data/cube.off", fg); assert(!ok); - ok = CGAL::read_PLY("data/pig.stl", fg); + ok = CGAL::IO::read_PLY("data/pig.stl", fg); assert(!ok); std::cerr << " ########### No more error text from here." << std::endl; } @@ -635,18 +635,18 @@ void test_bgl_STL(const std::string filename) { Mesh fg; - bool ok = CGAL::read_STL(filename, fg); + bool ok = CGAL::IO::read_STL(filename, fg); assert(ok); - ok = CGAL::write_STL("tmp.stl", fg); + ok = CGAL::IO::write_STL("tmp.stl", fg); assert(ok); // write with ASCII in binary mode { - ok = CGAL::write_polygon_mesh("ascii.stl", fg, CGAL::parameters::use_binary_mode(false)); + ok = CGAL::IO::write_polygon_mesh("ascii.stl", fg, CGAL::parameters::use_binary_mode(false)); assert(ok); std::ifstream test_ascii("ascii.stl", std::ios::binary); Mesh fg2; - ok = CGAL::read_STL(test_ascii, fg2, CGAL::parameters::use_binary_mode(false)); + ok = CGAL::IO::read_STL(test_ascii, fg2, CGAL::parameters::use_binary_mode(false)); test_ascii.close(); assert(ok); assert(num_vertices(fg) == num_vertices(fg2) && num_faces(fg) == num_faces(fg2)); @@ -659,7 +659,7 @@ void test_bgl_STL(const std::string filename) std::ifstream is(filename, std::ios::binary); CGAL::set_mode(is, CGAL::IO::BINARY); - ok = CGAL::read_STL(is, fg, CGAL::parameters::vertex_point_map(cvpm)); + ok = CGAL::IO::read_STL(is, fg, CGAL::parameters::vertex_point_map(cvpm)); assert(ok); assert(filename != "data/pig.stl" || (num_vertices(fg) == 8642 && num_faces(fg) == 16848)); assert(filename != "data/pig.stl" || cpoints.size() == 8642); @@ -667,36 +667,36 @@ void test_bgl_STL(const std::string filename) // write with STL { std::ofstream os("tmp.stl"); - ok = CGAL::write_STL(os, fg, CGAL::parameters::vertex_point_map(cvpm)); + ok = CGAL::IO::write_STL(os, fg, CGAL::parameters::vertex_point_map(cvpm)); assert(ok); Mesh fg2; - ok = CGAL::read_STL("tmp.stl", fg2, CGAL::parameters::vertex_point_map(cvpm)); + ok = CGAL::IO::read_STL("tmp.stl", fg2, CGAL::parameters::vertex_point_map(cvpm)); assert(ok); assert(num_vertices(fg) == num_vertices(fg2) && num_faces(fg) == num_faces(fg2)); } // write with PM { - ok = CGAL::write_polygon_mesh("tmp.stl", fg, CGAL::parameters::vertex_point_map(cvpm)); + ok = CGAL::IO::write_polygon_mesh("tmp.stl", fg, CGAL::parameters::vertex_point_map(cvpm)); assert(ok); cpoints.clear(); Mesh fg2; - ok = CGAL::read_polygon_mesh("tmp.stl", fg2, CGAL::parameters::vertex_point_map(cvpm)); + ok = CGAL::IO::read_polygon_mesh("tmp.stl", fg2, CGAL::parameters::vertex_point_map(cvpm)); assert(ok); assert(num_vertices(fg) == num_vertices(fg2) && num_faces(fg) == num_faces(fg2)); } std::cerr << " ########### Error text is expected to follow." << std::endl; - ok = CGAL::read_STL("data/mesh_that_doesnt_exist.stl", fg); + ok = CGAL::IO::read_STL("data/mesh_that_doesnt_exist.stl", fg); assert(!ok); - ok = CGAL::read_STL("data/invalid_cut.stl", fg); // cut in half + ok = CGAL::IO::read_STL("data/invalid_cut.stl", fg); // cut in half assert(!ok); - ok = CGAL::read_STL("data/invalid_header.stl", fg); // missing solid + ok = CGAL::IO::read_STL("data/invalid_header.stl", fg); // missing solid assert(!ok); - ok = CGAL::read_STL("data/sphere.obj", fg); + ok = CGAL::IO::read_STL("data/sphere.obj", fg); assert(!ok); - ok = CGAL::read_STL("data/full.off", fg); + ok = CGAL::IO::read_STL("data/full.off", fg); assert(!ok); std::cerr << " ########### No more error text from here." << std::endl; } @@ -706,7 +706,7 @@ void test_bgl_GOCAD(const char* filename) { Mesh fg; std::ifstream is(filename); - bool ok = CGAL::read_GOCAD(is, fg); + bool ok = CGAL::IO::read_GOCAD(is, fg); assert(ok); assert(num_vertices(fg) != 0 && num_faces(fg) != 0); @@ -714,19 +714,19 @@ void test_bgl_GOCAD(const char* filename) fg.clear(); CGAL::clear(fg); std::pair name_and_color; - ok = CGAL::read_GOCAD(is, name_and_color, fg); + ok = CGAL::IO::read_GOCAD(is, name_and_color, fg); assert(ok); assert(num_vertices(fg) != 0 && num_faces(fg) != 0); // write with GOCAD { std::ofstream os("tmp.ts"); - bool ok = CGAL::write_GOCAD(os, "tetrahedron", fg); + bool ok = CGAL::IO::write_GOCAD(os, "tetrahedron", fg); assert(ok); Mesh fg2; std::pair cnn; - ok = CGAL::read_GOCAD("tmp.ts", cnn, fg2); + ok = CGAL::IO::read_GOCAD("tmp.ts", cnn, fg2); assert(ok); assert(are_equal_meshes(fg, fg2)); assert(cnn.first == "tetrahedron"); @@ -734,11 +734,11 @@ void test_bgl_GOCAD(const char* filename) // write with PM { - ok = CGAL::write_polygon_mesh("tmp.ts", fg, CGAL::parameters::stream_precision(10)); + ok = CGAL::IO::write_polygon_mesh("tmp.ts", fg, CGAL::parameters::stream_precision(10)); assert(ok); Mesh fg2; - ok = CGAL::read_polygon_mesh("tmp.ts", fg2); + ok = CGAL::IO::read_polygon_mesh("tmp.ts", fg2); assert(ok); assert(are_equal_meshes(fg, fg2)); } @@ -749,7 +749,7 @@ void test_bgl_GOCAD(const char* filename) VertexPointMap vpm = get(CGAL::vertex_point, fg); std::ostringstream out; - ok = CGAL::write_GOCAD(out, "tetrahedron", fg, CGAL::parameters::vertex_point_map(vpm)); + ok = CGAL::IO::write_GOCAD(out, "tetrahedron", fg, CGAL::parameters::vertex_point_map(vpm)); assert(ok); { @@ -757,7 +757,7 @@ void test_bgl_GOCAD(const char* filename) VertexPointMap vpm2 = get(CGAL::vertex_point, fg2); std::istringstream is(out.str()); std::pair cnn; - ok = CGAL::read_GOCAD(is, cnn, fg2, CGAL::parameters::vertex_point_map(vpm2)); + ok = CGAL::IO::read_GOCAD(is, cnn, fg2, CGAL::parameters::vertex_point_map(vpm2)); assert(ok); assert(cnn.second.empty()); assert(num_vertices(fg2) == 12491); @@ -765,15 +765,15 @@ void test_bgl_GOCAD(const char* filename) } std::cerr << " ########### Error text is expected to follow." << std::endl; - ok = CGAL::read_GOCAD("data/mesh_that_doesnt_exist.ts", fg); + ok = CGAL::IO::read_GOCAD("data/mesh_that_doesnt_exist.ts", fg); assert(!ok); - ok = CGAL::read_GOCAD("data/invalid_cut.ts", fg); // cut in half + ok = CGAL::IO::read_GOCAD("data/invalid_cut.ts", fg); // cut in half assert(!ok); - ok = CGAL::read_GOCAD("data/invalid_header.ts", fg); // missing header + ok = CGAL::IO::read_GOCAD("data/invalid_header.ts", fg); // missing header assert(!ok); - ok = CGAL::read_GOCAD("data/sphere.obj", fg); + ok = CGAL::IO::read_GOCAD("data/sphere.obj", fg); assert(!ok); - ok = CGAL::read_GOCAD("data/full.off", fg); + ok = CGAL::IO::read_GOCAD("data/full.off", fg); assert(!ok); std::cerr << " ########### No more error text from here." << std::endl; } @@ -785,7 +785,7 @@ void test_bgl_VTP(const char* filename, const bool binary = false) { Mesh fg; - bool ok = CGAL::read_VTP(filename, fg); + bool ok = CGAL::IO::read_VTP(filename, fg); assert(ok); assert(std::string(filename) != "data/bones.vtp" || (num_vertices(fg) == 2154 && num_faces(fg) == 4204)); @@ -799,11 +799,11 @@ void test_bgl_VTP(const char* filename, } else os.open("tmp.vtp"); - ok = CGAL::write_VTP(os, fg, CGAL::parameters::use_binary_mode(binary)); + ok = CGAL::IO::write_VTP(os, fg, CGAL::parameters::use_binary_mode(binary)); assert(ok); Mesh fg2; - ok = CGAL::read_VTP("tmp.vtp", fg2, CGAL::parameters::use_binary_mode(binary)); + ok = CGAL::IO::read_VTP("tmp.vtp", fg2, CGAL::parameters::use_binary_mode(binary)); assert(ok); assert(are_equal_meshes(fg, fg2)); } @@ -811,13 +811,13 @@ void test_bgl_VTP(const char* filename, // write with PM { if(binary) - ok = CGAL::write_polygon_mesh("tmp.vtp", fg); + ok = CGAL::IO::write_polygon_mesh("tmp.vtp", fg); else - ok = CGAL::write_polygon_mesh("tmp.vtp", fg, CGAL::parameters::use_binary_mode(false)); + ok = CGAL::IO::write_polygon_mesh("tmp.vtp", fg, CGAL::parameters::use_binary_mode(false)); assert(ok); Mesh fg2; - ok = CGAL::read_polygon_mesh("tmp.vtp", fg2, CGAL::parameters::use_binary_mode(binary)); + ok = CGAL::IO::read_polygon_mesh("tmp.vtp", fg2, CGAL::parameters::use_binary_mode(binary)); assert(ok); assert(are_equal_meshes(fg, fg2)); } @@ -828,14 +828,14 @@ void test_bgl_VTP(const char* filename, { CGAL::clear(fg); - ok = CGAL::read_VTP("data/bones.vtp", fg); + ok = CGAL::IO::read_VTP("data/bones.vtp", fg); assert(ok); assert(num_vertices(fg) == 2154 && num_faces(fg) == 4204); Mesh fg2; VertexPointMap vpm2 = get(CGAL::dynamic_vertex_property_t(), fg2); - ok = CGAL::read_VTP("data/bones.vtp", fg2, CGAL::parameters::vertex_point_map(vpm2)); + ok = CGAL::IO::read_VTP("data/bones.vtp", fg2, CGAL::parameters::vertex_point_map(vpm2)); assert(ok); typedef typename CGAL::GetInitializedVertexIndexMap::const_type VIM; VIM vim1 = CGAL::get_initialized_vertex_index_map(fg); @@ -855,12 +855,12 @@ void test_bgl_VTP(const char* filename, { os.open("tmp.vtp"); } - ok = CGAL::write_VTP(os, fg, CGAL::parameters::use_binary_mode(binary)); + ok = CGAL::IO::write_VTP(os, fg, CGAL::parameters::use_binary_mode(binary)); assert(ok); Mesh fg2; - ok = CGAL::read_polygon_mesh("tmp.vtp", fg2, CGAL::parameters::use_binary_mode(binary)); + ok = CGAL::IO::read_polygon_mesh("tmp.vtp", fg2, CGAL::parameters::use_binary_mode(binary)); assert(ok); assert(are_equal_meshes(fg, fg2)); } @@ -868,33 +868,33 @@ void test_bgl_VTP(const char* filename, // write with PM { if(binary) - ok = CGAL::write_polygon_mesh("tmp.vtp", fg); + ok = CGAL::IO::write_polygon_mesh("tmp.vtp", fg); else - ok = CGAL::write_polygon_mesh("tmp.vtp", fg, CGAL::parameters::use_binary_mode(false)); + ok = CGAL::IO::write_polygon_mesh("tmp.vtp", fg, CGAL::parameters::use_binary_mode(false)); assert(ok); Mesh fg2; - ok = CGAL::read_polygon_mesh("tmp.vtp", fg2, CGAL::parameters::use_binary_mode(binary)); + ok = CGAL::IO::read_polygon_mesh("tmp.vtp", fg2, CGAL::parameters::use_binary_mode(binary)); assert(ok); assert(are_equal_meshes(fg, fg2)); } // test wrong inputs std::cerr << " ########### Error text is expected to follow." << std::endl; - ok = CGAL::read_VTP("data/mesh_that_doesnt_exist.vtp", fg); + ok = CGAL::IO::read_VTP("data/mesh_that_doesnt_exist.vtp", fg); assert(!ok); - ok = CGAL::read_VTP("data/invalid_cut.vtp", fg); // cut in half + ok = CGAL::IO::read_VTP("data/invalid_cut.vtp", fg); // cut in half assert(!ok); - ok = CGAL::read_VTP("data/invalid_header.vtp", fg); // missing header + ok = CGAL::IO::read_VTP("data/invalid_header.vtp", fg); // missing header assert(!ok); - ok = CGAL::read_VTP("data/wrong_nb_points.vtp", fg); // wrong number of points + ok = CGAL::IO::read_VTP("data/wrong_nb_points.vtp", fg); // wrong number of points assert(!ok); - ok = CGAL::read_VTP("data/sphere.obj", fg); + ok = CGAL::IO::read_VTP("data/sphere.obj", fg); assert(!ok); - ok = CGAL::read_VTP("data/full.off", fg); + ok = CGAL::IO::read_VTP("data/full.off", fg); assert(!ok); - ok = CGAL::read_VTP("corrupted_bin.vtp", fg); + ok = CGAL::IO::read_VTP("corrupted_bin.vtp", fg); assert(!ok); std::cerr << " ########### No more error text from here." << std::endl; } @@ -909,21 +909,21 @@ int main(int argc, char** argv) test_bgl_OFF(off_file); Polyhedron fg; - bool ok = CGAL::read_OFF("data/invalid_header.off", fg); // wrong header (NOFF but no normals) + bool ok = CGAL::IO::read_OFF("data/invalid_header.off", fg); // wrong header (NOFF but no normals) assert(ok); test_bgl_OFF(off_file); SM sm; - ok = CGAL::read_OFF("data/invalid_header.off", sm); // wrong header (NOFF but no normals) + ok = CGAL::IO::read_OFF("data/invalid_header.off", sm); // wrong header (NOFF but no normals) assert(!ok); test_bgl_OFF(off_file); LCC lcc; - ok = CGAL::read_OFF("data/invalid_header.off", lcc); // wrong header (NOFF but no normals) + ok = CGAL::IO::read_OFF("data/invalid_header.off", lcc); // wrong header (NOFF but no normals) assert(!ok); #ifdef CGAL_USE_OPENMESH test_bgl_OFF(off_file); OMesh om; - ok = CGAL::read_OFF("data/invalid_header.off", om); // wrong header (NOFF but no normals) + ok = CGAL::IO::read_OFF("data/invalid_header.off", om); // wrong header (NOFF but no normals) assert(!ok); #endif // OBJ diff --git a/BGL/test/BGL/test_clear.cpp b/BGL/test/BGL/test_clear.cpp index e2ab407fc60..c5387c52160 100644 --- a/BGL/test/BGL/test_clear.cpp +++ b/BGL/test/BGL/test_clear.cpp @@ -7,7 +7,7 @@ void test() { const std::string fname = "data/7_faces_triangle.off"; Mesh m; - if(!CGAL::read_OFF(fname, m)) + if(!CGAL::IO::read_OFF(fname, m)) std::cout << "Error reading file: " << fname << std::endl; assert(CGAL::is_valid_polygon_mesh(m)); diff --git a/BGL/test/BGL/test_deprecated_io.cpp b/BGL/test/BGL/test_deprecated_io.cpp index 5bd037191cc..cd7981d324a 100644 --- a/BGL/test/BGL/test_deprecated_io.cpp +++ b/BGL/test/BGL/test_deprecated_io.cpp @@ -44,7 +44,7 @@ int main() assert(ok); os.close(); - ok = CGAL::read_VTP("tmp.vtp", sm_in); + ok = CGAL::IO::read_VTP("tmp.vtp", sm_in); assert(ok); assert(num_vertices(sm_in) == 3 && num_faces(sm_in) == 1); sm_in.clear(); diff --git a/Classification/examples/Classification/example_classification.cpp b/Classification/examples/Classification/example_classification.cpp index 4ccad1912eb..7c1424a9fd1 100644 --- a/Classification/examples/Classification/example_classification.cpp +++ b/Classification/examples/Classification/example_classification.cpp @@ -52,9 +52,9 @@ int main (int argc, char** argv) std::cerr << "Reading input" << std::endl; std::vector pts; - if (!(CGAL::read_points(filename, std::back_inserter(pts), - // the PLY reader expects a binary file by default - CGAL::parameters::use_binary_mode(false)))) + if (!(CGAL::IO::read_points(filename, std::back_inserter(pts), + // the PLY reader expects a binary file by default + CGAL::parameters::use_binary_mode(false)))) { std::cerr << "Error: cannot read " << filename << std::endl; return EXIT_FAILURE; @@ -107,10 +107,10 @@ int main (int argc, char** argv) Label_handle ground = labels.add ("ground"); // Init name and color - Label_handle vegetation = labels.add ("vegetation", CGAL::Color(0,255,0)); + Label_handle vegetation = labels.add ("vegetation", CGAL::IO::Color(0,255,0)); // Init name, Color and standard index (here, ASPRS building index) - Label_handle roof = labels.add ("roof", CGAL::Color (255, 0, 0), 6); + Label_handle roof = labels.add ("roof", CGAL::IO::Color (255, 0, 0), 6); //! [Labels] /////////////////////////////////////////////////////////////////// @@ -211,7 +211,7 @@ int main (int argc, char** argv) std::ofstream f ("classification.ply"); - CGAL::write_PLY_with_properties + CGAL::IO::write_PLY_with_properties (f, CGAL::make_range (boost::counting_iterator(0), boost::counting_iterator(pts.size())), CGAL::make_ply_point_writer (CGAL::make_property_map(pts)), diff --git a/Classification/examples/Classification/example_cluster_classification.cpp b/Classification/examples/Classification/example_cluster_classification.cpp index ea11160b881..b044324fc0e 100644 --- a/Classification/examples/Classification/example_cluster_classification.cpp +++ b/Classification/examples/Classification/example_cluster_classification.cpp @@ -58,9 +58,9 @@ int main (int argc, char** argv) std::cerr << "Reading input" << std::endl; Point_set pts; - if(!(CGAL::read_point_set(filename, pts, - // the PLY reader expects a binary file by default - CGAL::parameters::use_binary_mode(true)))) + if(!(CGAL::IO::read_point_set(filename, pts, + // the PLY reader expects a binary file by default + CGAL::parameters::use_binary_mode(true)))) { std::cerr << "Error: cannot read " << filename << std::endl; return EXIT_FAILURE; diff --git a/Classification/examples/Classification/example_ethz_random_forest.cpp b/Classification/examples/Classification/example_ethz_random_forest.cpp index b0333f58ec4..cfb33d8c2b4 100644 --- a/Classification/examples/Classification/example_ethz_random_forest.cpp +++ b/Classification/examples/Classification/example_ethz_random_forest.cpp @@ -129,7 +129,7 @@ int main (int argc, char** argv) label_map[i] = label_indices[i]; // update label map with computed classification Label_handle label = labels[label_indices[i]]; - const CGAL::Color& color = label->color(); + const CGAL::IO::Color& color = label->color(); red[i] = color.red(); green[i] = color.green(); blue[i] = color.blue(); diff --git a/Classification/examples/Classification/example_feature.cpp b/Classification/examples/Classification/example_feature.cpp index f20ec6661b9..3c39407d41a 100644 --- a/Classification/examples/Classification/example_feature.cpp +++ b/Classification/examples/Classification/example_feature.cpp @@ -70,9 +70,9 @@ int main (int argc, char** argv) std::vector pts; std::cerr << "Reading input" << std::endl; - if (!(CGAL::read_points(filename, std::back_inserter(pts), - // the PLY reader expects a binary file by default - CGAL::parameters::use_binary_mode(false)))) + if (!(CGAL::IO::read_points(filename, std::back_inserter(pts), + // the PLY reader expects a binary file by default + CGAL::parameters::use_binary_mode(false)))) { std::cerr << "Error: cannot read " << filename << std::endl; return EXIT_FAILURE; diff --git a/Classification/examples/Classification/example_mesh_classification.cpp b/Classification/examples/Classification/example_mesh_classification.cpp index 226bd23ad72..104236d5495 100644 --- a/Classification/examples/Classification/example_mesh_classification.cpp +++ b/Classification/examples/Classification/example_mesh_classification.cpp @@ -40,9 +40,9 @@ int main (int argc, char** argv) filename_config = argv[2]; Mesh mesh; - if(!CGAL::read_polygon_mesh(filename, mesh, - // the PLY reader expects a binary file by default - CGAL::parameters::use_binary_mode(false))) + if(!CGAL::IO::read_polygon_mesh(filename, mesh, + // the PLY reader expects a binary file by default + CGAL::parameters::use_binary_mode(false))) { std::cerr << "Invalid input." << std::endl; return 1; diff --git a/Classification/examples/Classification/example_opencv_random_forest.cpp b/Classification/examples/Classification/example_opencv_random_forest.cpp index 52a6bbaa379..2a73d846685 100644 --- a/Classification/examples/Classification/example_opencv_random_forest.cpp +++ b/Classification/examples/Classification/example_opencv_random_forest.cpp @@ -121,7 +121,7 @@ int main (int argc, char** argv) label_map[i] = label_indices[i]; // update label map with computed classification Label_handle label = labels[label_indices[i]]; - const CGAL::Color& color = label->color(); + const CGAL::IO::Color& color = label->color(); red[i] = color.red(); green[i] = color.green(); blue[i] = color.blue(); diff --git a/Classification/examples/Classification/gis_tutorial_example.cpp b/Classification/examples/Classification/gis_tutorial_example.cpp index 996ec59ea9e..c839400850b 100644 --- a/Classification/examples/Classification/gis_tutorial_example.cpp +++ b/Classification/examples/Classification/gis_tutorial_example.cpp @@ -218,7 +218,7 @@ int main (int argc, char** argv) CGAL::copy_face_graph (dsm, dsm_mesh); std::ofstream dsm_ofile ("dsm.ply", std::ios_base::binary); CGAL::set_binary_mode (dsm_ofile); - CGAL::write_PLY (dsm_ofile, dsm_mesh); + CGAL::IO::write_PLY (dsm_ofile, dsm_mesh); dsm_ofile.close(); //! [Save DSM] @@ -300,8 +300,8 @@ int main (int argc, char** argv) Mesh tin_colored_mesh; - Mesh::Property_map - color_map = tin_colored_mesh.add_property_map("f:color").first; + Mesh::Property_map + color_map = tin_colored_mesh.add_property_map("f:color").first; CGAL::copy_face_graph (tin_with_info, tin_colored_mesh, CGAL::parameters::face_to_face_output_iterator @@ -310,12 +310,12 @@ int main (int argc, char** argv) { // Color unassigned faces gray if (ff.first->info() < 0) - color_map[ff.second] = CGAL::Color(128, 128, 128); + color_map[ff.second] = CGAL::IO::Color(128, 128, 128); else { // Random color seeded by the component ID CGAL::Random r (ff.first->info()); - color_map[ff.second] = CGAL::Color (r.get_int(64, 192), + color_map[ff.second] = CGAL::IO::Color (r.get_int(64, 192), r.get_int(64, 192), r.get_int(64, 192)); } @@ -323,7 +323,7 @@ int main (int argc, char** argv) std::ofstream tin_colored_ofile ("colored_tin.ply", std::ios_base::binary); CGAL::set_binary_mode (tin_colored_ofile); - CGAL::write_PLY (tin_colored_ofile, tin_colored_mesh); + CGAL::IO::write_PLY (tin_colored_ofile, tin_colored_mesh); tin_colored_ofile.close(); //! [Save TIN with info] @@ -416,7 +416,7 @@ int main (int argc, char** argv) // Save original DTM std::ofstream dtm_ofile ("dtm.ply", std::ios_base::binary); CGAL::set_binary_mode (dtm_ofile); - CGAL::write_PLY (dtm_ofile, dtm_mesh); + CGAL::IO::write_PLY (dtm_ofile, dtm_mesh); dtm_ofile.close(); std::cerr << face_selection.size() << " face(s) are selected for removal" << std::endl; @@ -440,7 +440,7 @@ int main (int argc, char** argv) // Save filtered DTM std::ofstream dtm_holes_ofile ("dtm_with_holes.ply", std::ios_base::binary); CGAL::set_binary_mode (dtm_holes_ofile); - CGAL::write_PLY (dtm_holes_ofile, dtm_mesh); + CGAL::IO::write_PLY (dtm_holes_ofile, dtm_mesh); dtm_holes_ofile.close(); // Get all holes @@ -478,7 +478,7 @@ int main (int argc, char** argv) // Save DTM with holes filled std::ofstream dtm_filled_ofile ("dtm_filled.ply", std::ios_base::binary); CGAL::set_binary_mode (dtm_filled_ofile); - CGAL::write_PLY (dtm_filled_ofile, dtm_mesh); + CGAL::IO::write_PLY (dtm_filled_ofile, dtm_mesh); dtm_filled_ofile.close(); //! [Hole filling] @@ -491,7 +491,7 @@ int main (int argc, char** argv) std::ofstream dtm_remeshed_ofile ("dtm_remeshed.ply", std::ios_base::binary); CGAL::set_binary_mode (dtm_remeshed_ofile); - CGAL::write_PLY (dtm_remeshed_ofile, dtm_mesh); + CGAL::IO::write_PLY (dtm_remeshed_ofile, dtm_mesh); dtm_remeshed_ofile.close(); //! [Remeshing] @@ -642,7 +642,7 @@ int main (int argc, char** argv) // Output to WKT file std::ofstream contour_ofile ("contour.wkt"); contour_ofile.precision(18); - CGAL::write_multi_linestring_WKT (contour_ofile, polylines); + CGAL::IO::write_multi_linestring_WKT (contour_ofile, polylines); contour_ofile.close(); //! [Contouring split] @@ -680,7 +680,7 @@ int main (int argc, char** argv) // Output to WKT file std::ofstream simplified_ofile ("simplified.wkt"); simplified_ofile.precision(18); - CGAL::write_multi_linestring_WKT (simplified_ofile, polylines); + CGAL::IO::write_multi_linestring_WKT (simplified_ofile, polylines); simplified_ofile.close(); //! [Contouring simplify] diff --git a/Classification/include/CGAL/Classification/Feature/Color_channel.h b/Classification/include/CGAL/Classification/Feature/Color_channel.h index b0296d191bb..2ca3825491a 100644 --- a/Classification/include/CGAL/Classification/Feature/Color_channel.h +++ b/Classification/include/CGAL/Classification/Feature/Color_channel.h @@ -56,7 +56,7 @@ namespace Feature { `ColorMap`. \tparam ColorMap model of `ReadablePropertyMap` whose key type is the value type of the iterator of `PointRange` and value type - is `CGAL::Color`. + is `CGAL::IO::Color`. */ template class Color_channel : public Feature_base diff --git a/Classification/include/CGAL/Classification/Label.h b/Classification/include/CGAL/Classification/Label.h index 6a21b630768..7b9e5b2a72f 100644 --- a/Classification/include/CGAL/Classification/Label.h +++ b/Classification/include/CGAL/Classification/Label.h @@ -39,7 +39,7 @@ private: std::string m_name; std::size_t m_index; std::size_t m_standard_index; - CGAL::Color m_color; + CGAL::IO::Color m_color; friend Label_set; @@ -48,7 +48,7 @@ public: /// \cond SKIP_IN_MANUAL // Undocumented: Labels should be created by the set Label (std::string name, std::size_t index, std::size_t standard_index, - const CGAL::Color& color) + const CGAL::IO::Color& color) : m_name (name), m_index (index), m_standard_index (standard_index) , m_color (color) { } @@ -84,7 +84,7 @@ public: attribute embedded in a data set which _can_ be used (see `Color_channel`). */ - const CGAL::Color& color() const { return m_color; } + const CGAL::IO::Color& color() const { return m_color; } /// @} @@ -93,7 +93,7 @@ public: void set_name (const std::string& name) { m_name = name; } void set_standard_index(std::size_t idx) { m_standard_index = idx; } - void set_color (const Color& color) { m_color = color; } + void set_color (const IO::Color& color) { m_color = color; } /// @} }; diff --git a/Classification/include/CGAL/Classification/Label_set.h b/Classification/include/CGAL/Classification/Label_set.h index d95902b9258..8af0f5e935b 100644 --- a/Classification/include/CGAL/Classification/Label_set.h +++ b/Classification/include/CGAL/Classification/Label_set.h @@ -86,7 +86,7 @@ public: \return a handle to the newly added label. */ Label_handle add (const char* name, - CGAL::Color color, + CGAL::IO::Color color, std::size_t standard_index = -1) { Label_handle out = std::make_shared @@ -135,70 +135,70 @@ public: */ Label_handle add (const char* name) { - static std::unordered_map > init_map; + static std::unordered_map > init_map; if (init_map.empty()) { init_map.insert (std::make_pair ("unassigned", - std::make_pair (2, CGAL::Color (0, 0, 0)))); + std::make_pair (2, CGAL::IO::Color (0, 0, 0)))); init_map.insert (std::make_pair ("ground", - std::make_pair (2, CGAL::Color (186, 189, 182)))); + std::make_pair (2, CGAL::IO::Color (186, 189, 182)))); init_map.insert (std::make_pair ("low_vegetation", - std::make_pair (3, CGAL::Color (78, 154, 6)))); + std::make_pair (3, CGAL::IO::Color (78, 154, 6)))); init_map.insert (std::make_pair ("medium_vegetation", - std::make_pair (4, CGAL::Color (138, 226, 52)))); + std::make_pair (4, CGAL::IO::Color (138, 226, 52)))); init_map.insert (std::make_pair ("high_vegetation", - std::make_pair (5, CGAL::Color (204, 255, 201)))); + std::make_pair (5, CGAL::IO::Color (204, 255, 201)))); init_map.insert (std::make_pair ("building", - std::make_pair (6, CGAL::Color (245, 121, 0)))); + std::make_pair (6, CGAL::IO::Color (245, 121, 0)))); init_map.insert (std::make_pair ("noise", - std::make_pair (7, CGAL::Color (128, 0, 0)))); + std::make_pair (7, CGAL::IO::Color (128, 0, 0)))); init_map.insert (std::make_pair ("reserved", - std::make_pair (8, CGAL::Color (233, 185, 110)))); + std::make_pair (8, CGAL::IO::Color (233, 185, 110)))); init_map.insert (std::make_pair ("water", - std::make_pair (9, CGAL::Color (114, 159, 207)))); + std::make_pair (9, CGAL::IO::Color (114, 159, 207)))); init_map.insert (std::make_pair ("rail", - std::make_pair (10, CGAL::Color (136, 46, 25)))); + std::make_pair (10, CGAL::IO::Color (136, 46, 25)))); init_map.insert (std::make_pair ("road_surface", - std::make_pair (11, CGAL::Color (56, 56, 56)))); + std::make_pair (11, CGAL::IO::Color (56, 56, 56)))); init_map.insert (std::make_pair ("reserved_2", - std::make_pair (12, CGAL::Color (193, 138, 51)))); + std::make_pair (12, CGAL::IO::Color (193, 138, 51)))); init_map.insert (std::make_pair ("wire_guard", - std::make_pair (13, CGAL::Color (37, 61, 136)))); + std::make_pair (13, CGAL::IO::Color (37, 61, 136)))); init_map.insert (std::make_pair ("wire_conductor", - std::make_pair (14, CGAL::Color (173, 127, 168)))); + std::make_pair (14, CGAL::IO::Color (173, 127, 168)))); init_map.insert (std::make_pair ("wire_conduct", - std::make_pair (14, CGAL::Color (173, 127, 168)))); + std::make_pair (14, CGAL::IO::Color (173, 127, 168)))); init_map.insert (std::make_pair ("transmission_tower", - std::make_pair (15, CGAL::Color (136, 138, 133)))); + std::make_pair (15, CGAL::IO::Color (136, 138, 133)))); init_map.insert (std::make_pair ("trans_tower", - std::make_pair (15, CGAL::Color (136, 138, 133)))); + std::make_pair (15, CGAL::IO::Color (136, 138, 133)))); init_map.insert (std::make_pair ("wire_connect", - std::make_pair (16, CGAL::Color (145, 64, 236)))); + std::make_pair (16, CGAL::IO::Color (145, 64, 236)))); init_map.insert (std::make_pair ("bridge_deck", - std::make_pair (17, CGAL::Color (213, 93, 93)))); + std::make_pair (17, CGAL::IO::Color (213, 93, 93)))); init_map.insert (std::make_pair ("high_noise", - std::make_pair (18, CGAL::Color (255, 0, 0)))); + std::make_pair (18, CGAL::IO::Color (255, 0, 0)))); // Undocumented additions init_map.insert (std::make_pair ("low_veget", - std::make_pair (3, CGAL::Color (78, 154, 6)))); + std::make_pair (3, CGAL::IO::Color (78, 154, 6)))); init_map.insert (std::make_pair ("medium_veget", - std::make_pair (4, CGAL::Color (138, 226, 52)))); + std::make_pair (4, CGAL::IO::Color (138, 226, 52)))); init_map.insert (std::make_pair ("vegetation", - std::make_pair (4, CGAL::Color (138, 226, 52)))); + std::make_pair (4, CGAL::IO::Color (138, 226, 52)))); init_map.insert (std::make_pair ("high_veget", - std::make_pair (5, CGAL::Color (204, 255, 201)))); + std::make_pair (5, CGAL::IO::Color (204, 255, 201)))); init_map.insert (std::make_pair ("roof", - std::make_pair (6, CGAL::Color (245, 121, 0)))); + std::make_pair (6, CGAL::IO::Color (245, 121, 0)))); init_map.insert (std::make_pair ("facade", - std::make_pair (-1, CGAL::Color (77, 131, 186)))); + std::make_pair (-1, CGAL::IO::Color (77, 131, 186)))); } std::string sname (name); auto found = init_map.find (sname); if (found == init_map.end()) return add (name, - CGAL::Color ((unsigned char)(m_random.get_int(64, 192)), + CGAL::IO::Color ((unsigned char)(m_random.get_int(64, 192)), (unsigned char)(m_random.get_int(64, 192)), (unsigned char)(m_random.get_int(64, 192)))); diff --git a/Classification/include/CGAL/Classification/Point_set_feature_generator.h b/Classification/include/CGAL/Classification/Point_set_feature_generator.h index 8a1ebcd4e21..81b94516e4f 100644 --- a/Classification/include/CGAL/Classification/Point_set_feature_generator.h +++ b/Classification/include/CGAL/Classification/Point_set_feature_generator.h @@ -355,7 +355,7 @@ public: \tparam ColorMap model of `ReadablePropertyMap` whose key type is the value type of the iterator of `PointRange` and value type is - `CGAL::Color`. + `CGAL::IO::Color`. \param features the feature set where the features are instantiated. \param color_map property map to access the colors of the input points (if any). diff --git a/Classification/test/Classification/test_classification_point_set.cpp b/Classification/test/Classification/test_classification_point_set.cpp index 9bd20262c1f..0a1dc9cee79 100644 --- a/Classification/test/Classification/test_classification_point_set.cpp +++ b/Classification/test/Classification/test_classification_point_set.cpp @@ -37,7 +37,7 @@ typedef Classification::Point_set_feature_generator Size_t_map; -typedef Point_set::Property_map Color_map; +typedef Point_set::Property_map Color_map; @@ -55,7 +55,7 @@ int main (int, char**) normal_map = pts.normal_map(); boost::tie (echo_map, map_added) = pts.add_property_map ("echo"); assert (map_added); - boost::tie (color_map, map_added) = pts.add_property_map ("color"); + boost::tie (color_map, map_added) = pts.add_property_map ("color"); assert (map_added); for (std::size_t i = 0; i < 1000; ++ i) @@ -68,7 +68,7 @@ int main (int, char**) CGAL::get_default_random().get_double(), CGAL::get_default_random().get_double())); echo_map[*it] = std::size_t(CGAL::get_default_random().get_int(0, 4)); - color_map[*it] = CGAL::Color ((unsigned char)(CGAL::get_default_random().get_int(0, 255)), + color_map[*it] = CGAL::IO::Color ((unsigned char)(CGAL::get_default_random().get_int(0, 255)), (unsigned char)(CGAL::get_default_random().get_int(0, 255)), (unsigned char)(CGAL::get_default_random().get_int(0, 255))); } diff --git a/Convex_hull_3/examples/Convex_hull_3/extreme_indices_3.cpp b/Convex_hull_3/examples/Convex_hull_3/extreme_indices_3.cpp index 4a65e65dace..b6c016c77ac 100644 --- a/Convex_hull_3/examples/Convex_hull_3/extreme_indices_3.cpp +++ b/Convex_hull_3/examples/Convex_hull_3/extreme_indices_3.cpp @@ -16,7 +16,7 @@ int main(int argc, char* argv[]) const char* filename = (argc>1) ? argv[1] : "data/star.off"; std::vector points; - if(!CGAL::read_points(filename, std::back_inserter(points))) + if(!CGAL::IO::read_points(filename, std::back_inserter(points))) { std::cerr<< "Cannot open input file." <1) ? argv[1] : "data/star.off"; Mesh sm; - if(!CGAL::read_polygon_mesh(filename, sm)) + if(!CGAL::IO::read_polygon_mesh(filename, sm)) { std::cerr<< "Cannot open input file." <1) ? argv[1] : "data/star.off"; Surface_mesh poly; - if(!CGAL::read_polygon_mesh(filename, poly)) + if(!CGAL::IO::read_polygon_mesh(filename, poly)) { std::cerr<< "Cannot open input file." <2)?argv[2]:"out.off", sm); + CGAL::IO::write_polygon_mesh((argc>2)?argv[2]:"out.off", sm); return 0; } diff --git a/Convex_hull_3/test/Convex_hull_3/test_ch_3_ambiguity.cpp b/Convex_hull_3/test/Convex_hull_3/test_ch_3_ambiguity.cpp index 393945ed5e4..0cfa1503d9c 100644 --- a/Convex_hull_3/test/Convex_hull_3/test_ch_3_ambiguity.cpp +++ b/Convex_hull_3/test/Convex_hull_3/test_ch_3_ambiguity.cpp @@ -15,7 +15,7 @@ int main(int argc, char* argv[]) const char* filename = (argc>1)? argv[1] : "data/cross.off"; Surface_mesh poly; - if(!CGAL::read_polygon_mesh(filename, poly)) + if(!CGAL::IO::read_polygon_mesh(filename, poly)) { std::cerr<<"Could not find a correct input file."<= 105600 && (! defined(BOOST_GCC) || BOOST_GCC >= 40500) - CGAL::read_multi_point_WKT(ifs, points); + CGAL::IO::read_multi_point_WKT(ifs, points); #endif } else diff --git a/GraphicsView/demo/Apollonius_graph_2/Apollonius_graph_2.cpp b/GraphicsView/demo/Apollonius_graph_2/Apollonius_graph_2.cpp index 8292f28262d..c7dd490fe03 100644 --- a/GraphicsView/demo/Apollonius_graph_2/Apollonius_graph_2.cpp +++ b/GraphicsView/demo/Apollonius_graph_2/Apollonius_graph_2.cpp @@ -243,7 +243,7 @@ MainWindow::open(QString fileName) { #if BOOST_VERSION >= 105600 && (! defined(BOOST_GCC) || BOOST_GCC >= 40500) std::vector point_3_s; - CGAL::read_multi_point_WKT(ifs, point_3_s); + CGAL::IO::read_multi_point_WKT(ifs, point_3_s); for(const K::Point_3& point_3 : point_3_s) { points.push_back(Apollonius_site_2(K::Point_2(point_3.x(), point_3.y()), point_3.z())); @@ -289,7 +289,7 @@ MainWindow::on_actionSavePoints_triggered() vit->point().y(), vit->weight())); } - CGAL::write_multi_point_WKT(ofs, points); + CGAL::IO::write_multi_point_WKT(ofs, points); #endif } else diff --git a/GraphicsView/demo/Bounding_volumes/Bounding_volumes.cpp b/GraphicsView/demo/Bounding_volumes/Bounding_volumes.cpp index 12928ca9897..5347a0eb263 100644 --- a/GraphicsView/demo/Bounding_volumes/Bounding_volumes.cpp +++ b/GraphicsView/demo/Bounding_volumes/Bounding_volumes.cpp @@ -498,7 +498,7 @@ MainWindow::open(QString fileName) if(fileName.endsWith(".wkt", Qt::CaseInsensitive)) { #if BOOST_VERSION >= 105600 && (! defined(BOOST_GCC) || BOOST_GCC >= 40500) - CGAL::read_multi_point_WKT(ifs, points); + CGAL::IO::read_multi_point_WKT(ifs, points); for(K::Point_2 p : points) { mc.insert(p); @@ -547,7 +547,7 @@ MainWindow::on_actionSavePoints_triggered() for(Min_circle::Point_iterator pit = mc.points_begin(); pit != mc.points_end(); ++pit) out_pts.push_back(*pit); - CGAL::write_multi_point_WKT(ofs, out_pts); + CGAL::IO::write_multi_point_WKT(ofs, out_pts); #endif } else diff --git a/GraphicsView/demo/Circular_kernel_2/Circular_kernel_2.cpp b/GraphicsView/demo/Circular_kernel_2/Circular_kernel_2.cpp index b54014b9f0b..78a92469a02 100644 --- a/GraphicsView/demo/Circular_kernel_2/Circular_kernel_2.cpp +++ b/GraphicsView/demo/Circular_kernel_2/Circular_kernel_2.cpp @@ -241,7 +241,7 @@ MainWindow::open(QString fileName) do { std::vector multi_points; - CGAL::read_multi_point_WKT(ifs, multi_points); + CGAL::IO::read_multi_point_WKT(ifs, multi_points); if(multi_points.size() == 2) { Line_arc_2 la(Segment_2(multi_points[0], diff --git a/GraphicsView/demo/L1_Voronoi_diagram_2/L1_voronoi_diagram_2.cpp b/GraphicsView/demo/L1_Voronoi_diagram_2/L1_voronoi_diagram_2.cpp index c240f8c62a3..4a8334ea142 100644 --- a/GraphicsView/demo/L1_Voronoi_diagram_2/L1_voronoi_diagram_2.cpp +++ b/GraphicsView/demo/L1_Voronoi_diagram_2/L1_voronoi_diagram_2.cpp @@ -296,7 +296,7 @@ MainWindow::open(QString fileName) if(fileName.endsWith(".wkt", Qt::CaseInsensitive)) { #if BOOST_VERSION >= 105600 && (! defined(BOOST_GCC) || BOOST_GCC >= 40500) - CGAL::read_multi_point_WKT(ifs, m_sites); + CGAL::IO::read_multi_point_WKT(ifs, m_sites); #endif } else @@ -330,7 +330,7 @@ MainWindow::on_actionSavePoints_triggered() std::ofstream ofs(qPrintable(fileName)); if(fileName.endsWith(".wkt", Qt::CaseInsensitive)){ #if BOOST_VERSION >= 105600 && (! defined(BOOST_GCC) || BOOST_GCC >= 40500) - CGAL::write_multi_point_WKT(ofs, m_sites); + CGAL::IO::write_multi_point_WKT(ofs, m_sites); #endif }else for(Points::iterator it = m_sites.begin(); diff --git a/GraphicsView/demo/Periodic_2_triangulation_2/Periodic_2_Delaunay_triangulation_2.cpp b/GraphicsView/demo/Periodic_2_triangulation_2/Periodic_2_Delaunay_triangulation_2.cpp index e956d72a171..26f21da2b2f 100644 --- a/GraphicsView/demo/Periodic_2_triangulation_2/Periodic_2_Delaunay_triangulation_2.cpp +++ b/GraphicsView/demo/Periodic_2_triangulation_2/Periodic_2_Delaunay_triangulation_2.cpp @@ -377,7 +377,7 @@ MainWindow::open(QString fileName) if(fileName.endsWith(".wkt", Qt::CaseInsensitive)) { #if BOOST_VERSION >= 105600 && (! defined(BOOST_GCC) || BOOST_GCC >= 40500) - CGAL::read_multi_point_WKT(ifs, points); + CGAL::IO::read_multi_point_WKT(ifs, points); #endif } else @@ -423,7 +423,7 @@ MainWindow::on_actionSavePoints_triggered() { points.push_back(vit->point()); } - CGAL::write_multi_point_WKT(ofs, points); + CGAL::IO::write_multi_point_WKT(ofs, points); #endif } else diff --git a/GraphicsView/demo/Polygon/Polygon_2.cpp b/GraphicsView/demo/Polygon/Polygon_2.cpp index 98d66af08c5..1e7486d2d6b 100644 --- a/GraphicsView/demo/Polygon/Polygon_2.cpp +++ b/GraphicsView/demo/Polygon/Polygon_2.cpp @@ -253,7 +253,7 @@ MainWindow::open(QString fileName) { #if BOOST_VERSION >= 105600 && (! defined(BOOST_GCC) || BOOST_GCC >= 40500) CGAL::Polygon_with_holes_2 P; - CGAL::read_polygon_WKT(ifs, P); + CGAL::IO::read_polygon_WKT(ifs, P); poly = Polygon2(P.outer_boundary().begin(), P.outer_boundary().end()); #endif @@ -288,7 +288,7 @@ MainWindow::on_actionSavePolygon_triggered() CGAL::Polygon_2 P(poly.begin(), poly.end()); CGAL::Polygon_with_holes_2 Pwh(P); - CGAL::write_polygon_WKT(ofs, Pwh); + CGAL::IO::write_polygon_WKT(ofs, Pwh); #endif } else diff --git a/GraphicsView/demo/Segment_Delaunay_graph_2/Segment_voronoi_2.cpp b/GraphicsView/demo/Segment_Delaunay_graph_2/Segment_voronoi_2.cpp index ac6d7af1f48..6f3ca72391e 100644 --- a/GraphicsView/demo/Segment_Delaunay_graph_2/Segment_voronoi_2.cpp +++ b/GraphicsView/demo/Segment_Delaunay_graph_2/Segment_voronoi_2.cpp @@ -357,7 +357,7 @@ MainWindow::loadWKTConstraints(QString std::ifstream ifs(qPrintable(fileName)); do{ std::vector polygons; - CGAL::read_multi_polygon_WKT(ifs, polygons); + CGAL::IO::read_multi_polygon_WKT(ifs, polygons); for(const Polygon& poly : polygons) { if(poly.outer_boundary().is_empty()) @@ -387,7 +387,7 @@ MainWindow::loadWKTConstraints(QString SVD::Vertex_handle vqold; do{ std::vector linestrings; - CGAL::read_multi_linestring_WKT(ifs, linestrings); + CGAL::IO::read_multi_linestring_WKT(ifs, linestrings); for(const LineString& ls : linestrings) { bool first_pass=true; diff --git a/GraphicsView/demo/Segment_Delaunay_graph_Linf_2/Segment_voronoi_linf_2.cpp b/GraphicsView/demo/Segment_Delaunay_graph_Linf_2/Segment_voronoi_linf_2.cpp index ae4f72bc55e..623c4b96095 100644 --- a/GraphicsView/demo/Segment_Delaunay_graph_Linf_2/Segment_voronoi_linf_2.cpp +++ b/GraphicsView/demo/Segment_Delaunay_graph_Linf_2/Segment_voronoi_linf_2.cpp @@ -400,7 +400,7 @@ MainWindow::loadWKT(QString do { std::vector mpts; - CGAL::read_multi_point_WKT(ifs, mpts); + CGAL::IO::read_multi_point_WKT(ifs, mpts); for(const K::Point_2& p : mpts) svd.insert(p); }while(ifs.good() && !ifs.eof()); @@ -411,7 +411,7 @@ MainWindow::loadWKT(QString { typedef std::vector LineString; std::vector mls; - CGAL::read_multi_linestring_WKT(ifs, mls); + CGAL::IO::read_multi_linestring_WKT(ifs, mls); for(const LineString& ls : mls) { if(ls.empty()) @@ -449,7 +449,7 @@ MainWindow::loadWKT(QString { typedef CGAL::Polygon_with_holes_2 Polygon; std::vector mps; - CGAL::read_multi_polygon_WKT(ifs, mps); + CGAL::IO::read_multi_polygon_WKT(ifs, mps); for(const Polygon& poly : mps) { if(poly.outer_boundary().is_empty()) diff --git a/GraphicsView/demo/Snap_rounding_2/Snap_rounding_2.cpp b/GraphicsView/demo/Snap_rounding_2/Snap_rounding_2.cpp index 0225624b96e..d051c31e6f1 100644 --- a/GraphicsView/demo/Snap_rounding_2/Snap_rounding_2.cpp +++ b/GraphicsView/demo/Snap_rounding_2/Snap_rounding_2.cpp @@ -272,7 +272,7 @@ MainWindow::open(QString fileName) { #if BOOST_VERSION >= 105600 && (! defined(BOOST_GCC) || BOOST_GCC >= 40500) std::vector > mls; - CGAL::read_multi_linestring_WKT(ifs, mls); + CGAL::IO::read_multi_linestring_WKT(ifs, mls); for(const std::vector& ls : mls) { if(ls.size() > 2) @@ -322,7 +322,7 @@ MainWindow::on_actionSaveSegments_triggered() ls[1] = seg.target(); mls.push_back(ls); } - CGAL::write_multi_linestring_WKT(ofs, mls); + CGAL::IO::write_multi_linestring_WKT(ofs, mls); #endif } else diff --git a/GraphicsView/demo/Spatial_searching_2/Spatial_searching_2.cpp b/GraphicsView/demo/Spatial_searching_2/Spatial_searching_2.cpp index 1af26ec7514..bcbdfbf939b 100644 --- a/GraphicsView/demo/Spatial_searching_2/Spatial_searching_2.cpp +++ b/GraphicsView/demo/Spatial_searching_2/Spatial_searching_2.cpp @@ -272,7 +272,7 @@ MainWindow::open(QString fileName) if(fileName.endsWith(".wkt", Qt::CaseInsensitive)) { #if BOOST_VERSION >= 105600 && (! defined(BOOST_GCC) || BOOST_GCC >= 40500) - CGAL::read_multi_point_WKT(ifs, points); + CGAL::IO::read_multi_point_WKT(ifs, points); #endif } else{ diff --git a/GraphicsView/demo/Stream_lines_2/Stream_lines_2.cpp b/GraphicsView/demo/Stream_lines_2/Stream_lines_2.cpp index b0e1fb852ec..c52054572e6 100644 --- a/GraphicsView/demo/Stream_lines_2/Stream_lines_2.cpp +++ b/GraphicsView/demo/Stream_lines_2/Stream_lines_2.cpp @@ -200,7 +200,7 @@ MainWindow::open(QString fileName) do { std::vector ps; - CGAL::read_multi_point_WKT(ifs, ps); + CGAL::IO::read_multi_point_WKT(ifs, ps); if(size == -1) size = static_cast(ps.size()); else if(ps.size() > 0 && size != static_cast(ps.size())) @@ -266,7 +266,7 @@ MainWindow::on_actionSavePoints_triggered() mp[i].push_back(Point_2(regular_grid->get_field(j,i).x(), regular_grid->get_field(j,i).y())); } - CGAL::write_multi_point_WKT(ofs, mp[i]); + CGAL::IO::write_multi_point_WKT(ofs, mp[i]); } ofs.close(); } diff --git a/GraphicsView/demo/Triangulation_2/Constrained_Delaunay_triangulation_2.cpp b/GraphicsView/demo/Triangulation_2/Constrained_Delaunay_triangulation_2.cpp index 60dd77c388d..57126af76d2 100644 --- a/GraphicsView/demo/Triangulation_2/Constrained_Delaunay_triangulation_2.cpp +++ b/GraphicsView/demo/Triangulation_2/Constrained_Delaunay_triangulation_2.cpp @@ -571,7 +571,7 @@ MainWindow::loadWKT(QString typedef CGAL::Polygon_with_holes_2 Polygon; typedef CGAL::Point_2 Point; std::vector mps; - CGAL::read_multi_polygon_WKT(ifs, mps); + CGAL::IO::read_multi_polygon_WKT(ifs, mps); for(const Polygon& p : mps) { if(p.outer_boundary().is_empty()) @@ -603,7 +603,7 @@ MainWindow::loadWKT(QString { typedef std::vector LineString; std::vector mls; - CGAL::read_multi_linestring_WKT(ifs, mls); + CGAL::IO::read_multi_linestring_WKT(ifs, mls); for(const LineString& ls : mls) { if(ls.empty()) @@ -641,7 +641,7 @@ MainWindow::loadWKT(QString do { std::vector mpts; - CGAL::read_multi_point_WKT(ifs, mpts); + CGAL::IO::read_multi_point_WKT(ifs, mpts); for(const K::Point_2& p : mpts) { cdt.insert(p); @@ -669,7 +669,7 @@ void MainWindow::loadPolyConstraints(QString fileName) { std::ifstream ifs(qPrintable(fileName)); - read_triangle_poly_file(cdt,ifs); + CGAL::IO::read_triangle_poly_file(cdt,ifs); discoverComponents(cdt, m_seeds); Q_EMIT( changed()); actionRecenter->trigger(); @@ -788,7 +788,7 @@ MainWindow::saveConstraints(QString fileName) output << cdt; else if (output) { - CGAL::write_vtu(output, cdt); + CGAL::IO::write_vtu(output, cdt); } } diff --git a/GraphicsView/demo/Triangulation_2/Delaunay_triangulation_2.cpp b/GraphicsView/demo/Triangulation_2/Delaunay_triangulation_2.cpp index 9d810c04398..1bed7aeef2c 100644 --- a/GraphicsView/demo/Triangulation_2/Delaunay_triangulation_2.cpp +++ b/GraphicsView/demo/Triangulation_2/Delaunay_triangulation_2.cpp @@ -344,7 +344,7 @@ MainWindow::open(QString fileName) if(fileName.endsWith(".wkt", Qt::CaseInsensitive)) { #if BOOST_VERSION >= 105600 && (! defined(BOOST_GCC) || BOOST_GCC >= 40500) - CGAL::read_multi_point_WKT(ifs, points); + CGAL::IO::read_multi_point_WKT(ifs, points); #endif } else @@ -388,7 +388,7 @@ MainWindow::on_actionSavePoints_triggered() { points.push_back(vit->point()); } - CGAL::write_multi_point_WKT(ofs, points); + CGAL::IO::write_multi_point_WKT(ofs, points); #endif } else diff --git a/GraphicsView/demo/Triangulation_2/Regular_triangulation_2.cpp b/GraphicsView/demo/Triangulation_2/Regular_triangulation_2.cpp index 483a8ab3d27..c4a18a1e715 100644 --- a/GraphicsView/demo/Triangulation_2/Regular_triangulation_2.cpp +++ b/GraphicsView/demo/Triangulation_2/Regular_triangulation_2.cpp @@ -260,7 +260,7 @@ MainWindow::on_actionLoadPoints_triggered() { #if BOOST_VERSION >= 105600 && (! defined(BOOST_GCC) || BOOST_GCC >= 40500) std::vector points_3; - CGAL::read_multi_point_WKT(ifs, points_3); + CGAL::IO::read_multi_point_WKT(ifs, points_3); for(const K::Point_3& p : points_3) { points.push_back(Weighted_point_2(K::Point_2(p.x(), p.y()), p.z())); @@ -308,7 +308,7 @@ MainWindow::on_actionSavePoints_triggered() vit->point().y(), vit->point().weight())); } - CGAL::write_multi_point_WKT(ofs, points_3); + CGAL::IO::write_multi_point_WKT(ofs, points_3); #endif } else diff --git a/GraphicsView/include/CGAL/Buffer_for_vao.h b/GraphicsView/include/CGAL/Buffer_for_vao.h index 2be331a35f5..e0af44f8e89 100644 --- a/GraphicsView/include/CGAL/Buffer_for_vao.h +++ b/GraphicsView/include/CGAL/Buffer_for_vao.h @@ -244,7 +244,7 @@ public: // 1.2) Add a point, with color. template - void add_point(const KPoint& kp, const CGAL::Color& c) + void add_point(const KPoint& kp, const CGAL::IO::Color& c) { add_point(kp); add_color(c); @@ -268,7 +268,7 @@ public: // 2.2) Add a segment, with color. template - void add_segment(const KPoint& kp1, const KPoint& kp2, const CGAL::Color& c) + void add_segment(const KPoint& kp1, const KPoint& kp2, const CGAL::IO::Color& c) { add_segment(kp1, kp2); add_color(c); @@ -294,7 +294,7 @@ public: //3.2) Add a ray segment, with color template void add_ray_segment(const KPoint& kp1, const KVector& kp2, - const CGAL::Color& c) + const CGAL::IO::Color& c) { add_point(kp1); add_point_infinity(kp2); @@ -313,7 +313,7 @@ public: // 4.1) Add a line, with color template void add_line_segment(const KPoint& kp1, const KPoint& kp2, - const CGAL::Color& c) + const CGAL::IO::Color& c) { add_point_infinity(kp1); add_point_infinity(kp2); @@ -330,7 +330,7 @@ public: { face_begin_internal(false, false); } // 3.2) Add a face, with a color, without normal. - void face_begin(const CGAL::Color& c) + void face_begin(const CGAL::IO::Color& c) { m_color_of_face=c; face_begin_internal(true, false); @@ -346,7 +346,7 @@ public: // 3.3) Add a face, with a color and with a normal. template - void face_begin(const CGAL::Color& c, const KNormal& kv) + void face_begin(const CGAL::IO::Color& c, const KNormal& kv) { m_color_of_face=c; m_normal_of_face=get_local_vector(kv); @@ -477,7 +477,7 @@ public: } ///adds `acolor` RGB components to `buffer` - static void add_color_in_buffer(const CGAL::Color& acolor, std::vector& buffer) + static void add_color_in_buffer(const CGAL::IO::Color& acolor, std::vector& buffer) { buffer.push_back((float)acolor.red()/(float)255); buffer.push_back((float)acolor.green()/(float)255); @@ -837,7 +837,7 @@ protected: return is_facet_convex(m_points_of_face, N); } - void add_color(const CGAL::Color& acolor) + void add_color(const CGAL::IO::Color& acolor) { if (m_color_buffer!=nullptr) { add_color_in_buffer(acolor, *m_color_buffer); } @@ -917,7 +917,7 @@ protected: std::vector m_points_of_face; std::vector m_vertex_normals_for_face; std::vector m_indices_of_points_of_face; - CGAL::Color m_color_of_face; + CGAL::IO::Color m_color_of_face; Local_vector m_normal_of_face; }; diff --git a/GraphicsView/include/CGAL/Qt/Basic_viewer_qt.h b/GraphicsView/include/CGAL/Qt/Basic_viewer_qt.h index c2c05f90c53..0d44fbc3356 100644 --- a/GraphicsView/include/CGAL/Qt/Basic_viewer_qt.h +++ b/GraphicsView/include/CGAL/Qt/Basic_viewer_qt.h @@ -56,12 +56,12 @@ namespace CGAL { //------------------------------------------------------------------------------ -inline CGAL::Color get_random_color(CGAL::Random& random) +inline CGAL::IO::Color get_random_color(CGAL::Random& random) { - CGAL::Color res; + CGAL::IO::Color res; do { - res=CGAL::Color(random.get_int(0,256), + res=CGAL::IO::Color(random.get_int(0,256), random.get_int(0,256), random.get_int(0,256)); } @@ -318,7 +318,7 @@ public: { m_buffer_for_mono_points.add_point(p); } template - void add_point(const KPoint& p, const CGAL::Color& acolor) + void add_point(const KPoint& p, const CGAL::IO::Color& acolor) { m_buffer_for_colored_points.add_point(p, acolor); } template @@ -327,7 +327,7 @@ public: template void add_segment(const KPoint& p1, const KPoint& p2, - const CGAL::Color& acolor) + const CGAL::IO::Color& acolor) { m_buffer_for_colored_segments.add_segment(p1, p2, acolor); } template @@ -359,7 +359,7 @@ public: } template - void add_ray(const KPoint &p, const KVector &v, const CGAL::Color &acolor) + void add_ray(const KPoint &p, const KVector &v, const CGAL::IO::Color &acolor) { double bigNumber = 1e30; m_buffer_for_colored_rays.add_ray_segment(p, (p + (bigNumber)*v), acolor); @@ -374,7 +374,7 @@ public: } template - void add_line(const KPoint &p, const KVector &v, const CGAL::Color &acolor) + void add_line(const KPoint &p, const KVector &v, const CGAL::IO::Color &acolor) { double bigNumber = 1e30; m_buffer_for_colored_lines.add_line_segment((p - (bigNumber)*v), @@ -412,7 +412,7 @@ public: { m_buffer_for_mono_faces.face_begin(); } } - void face_begin(const CGAL::Color& acolor) + void face_begin(const CGAL::IO::Color& acolor) { if (is_a_face_started()) { @@ -1702,11 +1702,11 @@ protected: double m_size_rays; double m_size_lines; - CGAL::Color m_vertices_mono_color; - CGAL::Color m_edges_mono_color; - CGAL::Color m_rays_mono_color; - CGAL::Color m_lines_mono_color; - CGAL::Color m_faces_mono_color; + CGAL::IO::Color m_vertices_mono_color; + CGAL::IO::Color m_edges_mono_color; + CGAL::IO::Color m_rays_mono_color; + CGAL::IO::Color m_lines_mono_color; + CGAL::IO::Color m_faces_mono_color; QVector4D m_ambient_color; bool m_are_buffers_initialized; diff --git a/GraphicsView/include/CGAL/Qt/SegmentDelaunayGraphGraphicsItem.h b/GraphicsView/include/CGAL/Qt/SegmentDelaunayGraphGraphicsItem.h index 730d7d7983f..c63945a3adc 100644 --- a/GraphicsView/include/CGAL/Qt/SegmentDelaunayGraphGraphicsItem.h +++ b/GraphicsView/include/CGAL/Qt/SegmentDelaunayGraphGraphicsItem.h @@ -164,9 +164,9 @@ SegmentDelaunayGraphGraphicsItem::drawAll(QPainter *painter, const QStyleOpti vit != t->finite_vertices_end(); ++vit) { typename T::Site_2 s = vit->site(); if ( s.is_input() ) { - //*widget << CGAL::red(); + //*widget << CGAL::IO::red(); } else { - //*widget << CGAL::yellow(); + //*widget << CGAL::IO::yellow(); } if ( s.is_point() ) { QPointF point = matrix.map(convert(s.point())); diff --git a/GraphicsView/include/CGAL/Qt/SegmentDelaunayGraphLinfGraphicsItem.h b/GraphicsView/include/CGAL/Qt/SegmentDelaunayGraphLinfGraphicsItem.h index 41a373b584c..a0a83fb7504 100644 --- a/GraphicsView/include/CGAL/Qt/SegmentDelaunayGraphLinfGraphicsItem.h +++ b/GraphicsView/include/CGAL/Qt/SegmentDelaunayGraphLinfGraphicsItem.h @@ -199,7 +199,7 @@ SegmentDelaunayGraphLinfGraphicsItem::drawAll(QPainter *painter, const QStyle vit != t->finite_vertices_end(); ++vit) { typename T::Site_2 s = vit->site(); if ( s.is_input() ) { - //*widget << CGAL::red(); + //*widget << CGAL::IO::red(); } else { //*widget << CGAL::yellow(); } diff --git a/HalfedgeDS/doc/HalfedgeDS/CGAL/HalfedgeDS_items_2.h b/HalfedgeDS/doc/HalfedgeDS/CGAL/HalfedgeDS_items_2.h index e2b1cf49d3a..39b806a2412 100644 --- a/HalfedgeDS/doc/HalfedgeDS/CGAL/HalfedgeDS_items_2.h +++ b/HalfedgeDS/doc/HalfedgeDS/CGAL/HalfedgeDS_items_2.h @@ -56,9 +56,9 @@ library. // A face type with a color member variable. template struct My_face : public CGAL::HalfedgeDS_face_base { -CGAL::Color color; +CGAL::IO::Color color; My_face() {} -My_face( CGAL::Color c) : color(c) {} +My_face( CGAL::IO::Color c) : color(c) {} }; // An items type using my face. diff --git a/HalfedgeDS/examples/HalfedgeDS/hds_prog_color.cpp b/HalfedgeDS/examples/HalfedgeDS/hds_prog_color.cpp index 6b294fefe5c..adcfdc0c5fe 100644 --- a/HalfedgeDS/examples/HalfedgeDS/hds_prog_color.cpp +++ b/HalfedgeDS/examples/HalfedgeDS/hds_prog_color.cpp @@ -5,9 +5,9 @@ // A face type with a color member variable. template struct My_face : public CGAL::HalfedgeDS_face_base { - CGAL::Color color; + CGAL::IO::Color color; My_face() {} - My_face( CGAL::Color c) : color(c) {} + My_face( CGAL::IO::Color c) : color(c) {} }; // An items type using my face. @@ -28,8 +28,8 @@ typedef HDS::Face_handle Face_handle; int main() { HDS hds; - Face_handle f = hds.faces_push_back( Face( CGAL::red())); - f->color = CGAL::blue(); - CGAL_assertion( f->color == CGAL::blue()); + Face_handle f = hds.faces_push_back( Face( CGAL::IO::red())); + f->color = CGAL::IO::blue(); + CGAL_assertion( f->color == CGAL::IO::blue()); return 0; } diff --git a/Heat_method_3/examples/Heat_method_3/heat_method.cpp b/Heat_method_3/examples/Heat_method_3/heat_method.cpp index dbe02789fdd..430b8c196fa 100644 --- a/Heat_method_3/examples/Heat_method_3/heat_method.cpp +++ b/Heat_method_3/examples/Heat_method_3/heat_method.cpp @@ -17,7 +17,7 @@ int main(int argc, char* argv[]) const char* filename = (argc > 1) ? argv[1] : "./data/elephant.off"; Triangle_mesh tm; - if(!CGAL::read_polygon_mesh(filename, tm) || + if(!CGAL::IO::read_polygon_mesh(filename, tm) || CGAL::is_empty(tm) || !CGAL::is_triangle_mesh(tm)) { std::cerr << "Invalid input file." << std::endl; diff --git a/Heat_method_3/examples/Heat_method_3/heat_method_surface_mesh.cpp b/Heat_method_3/examples/Heat_method_3/heat_method_surface_mesh.cpp index 88e12912805..c056b80da4f 100644 --- a/Heat_method_3/examples/Heat_method_3/heat_method_surface_mesh.cpp +++ b/Heat_method_3/examples/Heat_method_3/heat_method_surface_mesh.cpp @@ -19,7 +19,7 @@ int main(int argc, char* argv[]) const char* filename = (argc > 1) ? argv[1] : "./data/sphere.off"; Triangle_mesh tm; - if(!CGAL::read_polygon_mesh(filename, tm) || + if(!CGAL::IO::read_polygon_mesh(filename, tm) || CGAL::is_empty(tm) || !CGAL::is_triangle_mesh(tm)) { std::cerr << "Invalid input file." << std::endl; diff --git a/Heat_method_3/examples/Heat_method_3/heat_method_surface_mesh_direct.cpp b/Heat_method_3/examples/Heat_method_3/heat_method_surface_mesh_direct.cpp index 21213768184..ac3e0d4a152 100644 --- a/Heat_method_3/examples/Heat_method_3/heat_method_surface_mesh_direct.cpp +++ b/Heat_method_3/examples/Heat_method_3/heat_method_surface_mesh_direct.cpp @@ -21,7 +21,7 @@ int main(int argc, char* argv[]) const char* filename = (argc > 1) ? argv[1] : "./data/elephant.off"; Triangle_mesh tm; - if(!CGAL::read_polygon_mesh(filename, tm) || + if(!CGAL::IO::read_polygon_mesh(filename, tm) || CGAL::is_empty(tm) || !CGAL::is_triangle_mesh(tm)) { std::cerr << "Invalid input file." << std::endl; diff --git a/Hyperbolic_triangulation_2/examples/Hyperbolic_triangulation_2/ht2_example_color.cpp b/Hyperbolic_triangulation_2/examples/Hyperbolic_triangulation_2/ht2_example_color.cpp index 59c1bec4a73..6108168f301 100644 --- a/Hyperbolic_triangulation_2/examples/Hyperbolic_triangulation_2/ht2_example_color.cpp +++ b/Hyperbolic_triangulation_2/examples/Hyperbolic_triangulation_2/ht2_example_color.cpp @@ -12,7 +12,7 @@ typedef CGAL::Hyperbolic_Delaunay_triangulation_CK_traits_2<> Gt; typedef CGAL::Hyperbolic_triangulation_face_base_2 Hyperbolic_face_base; -typedef CGAL::Triangulation_face_base_with_info_2 Face_base_with_info; typedef CGAL::Triangulation_vertex_base_2 Vertex_base; typedef CGAL::Triangulation_data_structure_2has_vertex(vo)) { - fit->info() = CGAL::red(); + fit->info() = CGAL::IO::red(); origin_faces++; } } @@ -57,7 +57,7 @@ int main(int argc, char** argv) int red_faces = 0; for(fit = dt.hyperbolic_faces_begin(); fit != dt.hyperbolic_faces_end(); ++fit) { - if(fit->info() == CGAL::red()) + if(fit->info() == CGAL::IO::red()) { red_faces++; } diff --git a/Installation/CHANGES.md b/Installation/CHANGES.md index 38102e7205f..aa83ce7c3a4 100644 --- a/Installation/CHANGES.md +++ b/Installation/CHANGES.md @@ -601,7 +601,7 @@ Release date: November 2019 - Added a function to convert a Nef_polyhedron_3 to a polygon soup: [`CGAL::convert_nef_polyhedron_to_polygon_soup()`](https://doc.cgal.org/5.0/Nef_3/group__PkgNef3IOFunctions.html#ga28a9eb4da0cd6153f0c16f7f9eaf6665) ### [IO Streams](https://doc.cgal.org/5.0/Manual/packages.html#PkgStreamSupport) -- **Breaking change:** The API of [`CGAL::Color`](https://doc.cgal.org/5.0/Stream_support/classCGAL_1_1Color.html) has been cleaned up. +- **Breaking change:** The API of [`CGAL::IO::Color`](https://doc.cgal.org/5.0/Stream_support/classCGAL_1_1Color.html) has been cleaned up. - Added new functions to support some parts of the WKT file format: * [`CGAL::read_WKT()`](https://doc.cgal.org/5.0/Stream_support/group__PkgStreamSupportRef.html#gad2872abfe6fcf17d705d38567fdd6248) * [`CGAL::read_point_WKT()`](https://doc.cgal.org/5.0/Stream_support/group__PkgStreamSupportRef.html#gadbd2705b183e467507abd2f167446eba) diff --git a/Interpolation/demo/Interpolation/interpolation_2_demo.cpp b/Interpolation/demo/Interpolation/interpolation_2_demo.cpp index 13b8a7331b7..9fd09814a58 100644 --- a/Interpolation/demo/Interpolation/interpolation_2_demo.cpp +++ b/Interpolation/demo/Interpolation/interpolation_2_demo.cpp @@ -270,7 +270,7 @@ int main(int , char** ) //viewer CGAL::Geomview_stream gv(CGAL::Bbox_3(0,0,0, 2, 2, 2)); - gv.set_bg_color(CGAL::Color(0, 200, 200)); + gv.set_bg_color(CGAL::IO::Color(0, 200, 200)); gv.clear(); gv.set_line_width(2); @@ -278,14 +278,14 @@ int main(int , char** ) std::cout << "The data points are displayed in blue in the geomview" << " application." << std::endl; - gv << CGAL::blue(); + gv << CGAL::IO::blue(); visu_points(gv,sample_3); //show the gradients if(method>0){ std::cout << "The function gradients are displayed by red lines " <<" in the geomview application." << std::endl; - gv <::type ah = (scene.lcc)->create_attribute<3>(); scene.lcc->set_attribute<3>(mengerVolumes[i], ah); scene.lcc->info<3>(mengerVolumes[i]).color()= - (CGAL::Color(myrandom.get_int(0,256), + (CGAL::IO::Color(myrandom.get_int(0,256), myrandom.get_int(0,256), myrandom.get_int(0,256))); @@ -1925,11 +1925,11 @@ void MainWindow::split_vol_in_three(Dart_handle dh, bool removecenter) if (scene.lcc->are_attributes_automatically_managed()) { scene.lcc->info<3>(f1).color()= - (CGAL::Color(myrandom.get_int(0,256), + (CGAL::IO::Color(myrandom.get_int(0,256), myrandom.get_int(0,256), myrandom.get_int(0,256))); scene.lcc->info<3>(f2).color()= - (CGAL::Color(myrandom.get_int(0,256), + (CGAL::IO::Color(myrandom.get_int(0,256), myrandom.get_int(0,256), myrandom.get_int(0,256))); @@ -1979,11 +1979,11 @@ void MainWindow::split_vol_in_nine(Dart_handle dh, bool removecenter) if (scene.lcc->are_attributes_automatically_managed()) { scene.lcc->info<3>(f1).color()= - (CGAL::Color(myrandom.get_int(0,256), + (CGAL::IO::Color(myrandom.get_int(0,256), myrandom.get_int(0,256), myrandom.get_int(0,256))); scene.lcc->info<3>(f2).color()= - (CGAL::Color(myrandom.get_int(0,256), + (CGAL::IO::Color(myrandom.get_int(0,256), myrandom.get_int(0,256), myrandom.get_int(0,256))); @@ -2039,11 +2039,11 @@ void MainWindow::split_vol_in_twentyseven(Dart_handle dh) if (scene.lcc->are_attributes_automatically_managed()) { scene.lcc->info<3>(f1).color()= - (CGAL::Color(myrandom.get_int(0,256), + (CGAL::IO::Color(myrandom.get_int(0,256), myrandom.get_int(0,256), myrandom.get_int(0,256))); scene.lcc->info<3>(f2).color()= - (CGAL::Color(myrandom.get_int(0,256), + (CGAL::IO::Color(myrandom.get_int(0,256), myrandom.get_int(0,256), myrandom.get_int(0,256))); update_volume_list_add(scene.lcc->attribute<3>(dh)); @@ -3177,7 +3177,7 @@ void MainWindow::onSierpinskiTriangleInc() LCC::Attribute_handle<3>::type ah = (scene.lcc)->create_attribute<3>(); scene.lcc->set_attribute<3>(sierpinskiTriangleSurfaces[i], ah); scene.lcc->info<3>(sierpinskiTriangleSurfaces[i]).color()= - (CGAL::Color(myrandom.get_int(0,256), + (CGAL::IO::Color(myrandom.get_int(0,256), myrandom.get_int(0,256), myrandom.get_int(0,256))); diff --git a/Linear_cell_complex/demo/Linear_cell_complex/Viewer.h b/Linear_cell_complex/demo/Linear_cell_complex/Viewer.h index 6137e328faf..18e66603ef4 100644 --- a/Linear_cell_complex/demo/Linear_cell_complex/Viewer.h +++ b/Linear_cell_complex/demo/Linear_cell_complex/Viewer.h @@ -77,13 +77,13 @@ struct MyDrawingFunctorLCC /// @return the color of the volume containing dh /// used only if colored_volume(alcc, dh) and !colored_face(alcc, dh) template - CGAL::Color volume_color(const LCC& alcc, + CGAL::IO::Color volume_color(const LCC& alcc, typename LCC::Dart_const_handle dh) const { return alcc.template info<3>(dh).color(); } /// @return the color of the face containing dh /// used only if colored_face(alcc, dh) template - CGAL::Color face_color(const LCC& alcc, + CGAL::IO::Color face_color(const LCC& alcc, typename LCC::Dart_const_handle dh) const { CGAL::Random random((unsigned int)(alcc.darts().index(dh))); @@ -92,15 +92,15 @@ struct MyDrawingFunctorLCC /// @return the color of the edge containing dh /// used only if colored_edge(alcc, dh) template - CGAL::Color edge_color(const LCC&, + CGAL::IO::Color edge_color(const LCC&, typename LCC::Dart_const_handle) const - { return CGAL::Color(0, 0, 0); } + { return CGAL::IO::Color(0, 0, 0); } /// @return the color of the vertex containing dh /// used only if colored_vertex(alcc, dh) template - CGAL::Color vertex_color(const LCC&, + CGAL::IO::Color vertex_color(const LCC&, typename LCC::Dart_const_handle) const - { return CGAL::Color(0, 0, 0); } + { return CGAL::IO::Color(0, 0, 0); } }; diff --git a/Linear_cell_complex/demo/Linear_cell_complex/typedefs.h b/Linear_cell_complex/demo/Linear_cell_complex/typedefs.h index 17924ecca8d..459c745f1b9 100644 --- a/Linear_cell_complex/demo/Linear_cell_complex/typedefs.h +++ b/Linear_cell_complex/demo/Linear_cell_complex/typedefs.h @@ -51,15 +51,15 @@ class Volume_info friend void CGAL::write_cmap_attribute_node(boost::property_tree::ptree & node, const Volume_info& arg); public: - Volume_info() : m_color(CGAL::Color(myrandom.get_int(0,256), + Volume_info() : m_color(CGAL::IO::Color(myrandom.get_int(0,256), myrandom.get_int(0,256), myrandom.get_int(0,256))), m_status( LCC_DEMO_VISIBLE | LCC_DEMO_FILLED ) {} - CGAL::Color& color() + CGAL::IO::Color& color() { return m_color; } - const CGAL::Color& color() const + const CGAL::IO::Color& color() const { return m_color; } std::string color_name() const @@ -97,7 +97,7 @@ public: { set_filled(!is_filled()); } private: - CGAL::Color m_color; + CGAL::IO::Color m_color; char m_status; }; @@ -120,7 +120,7 @@ inline void read_cmap_attribute_node char r = v.second.get("color-r"); char g = v.second.get("color-g"); char b = v.second.get("color-b"); - val.m_color = CGAL::Color(r,g,b); + val.m_color = CGAL::IO::Color(r,g,b); } catch(const std::exception & ) {} diff --git a/Linear_cell_complex/examples/Linear_cell_complex/basic_viewer.h b/Linear_cell_complex/examples/Linear_cell_complex/basic_viewer.h index 6b7b97eb3c1..cbc75458f95 100644 --- a/Linear_cell_complex/examples/Linear_cell_complex/basic_viewer.h +++ b/Linear_cell_complex/examples/Linear_cell_complex/basic_viewer.h @@ -286,7 +286,7 @@ public: { bb=bb+p.bbox(); } } - void add_color(const CGAL::Color& acolor, std::vector& color_vector) + void add_color(const CGAL::IO::Color& acolor, std::vector& color_vector) { color_vector.push_back((double)color_of_face.red()/(double)255); color_vector.push_back((double)color_of_face.green()/(double)255); @@ -303,7 +303,7 @@ public: void add_mono_point(const Local_point& p) { add_point(p, arrays[POS_MONO_POINTS]); } - void add_colored_point(const Local_point& p, const CGAL::Color& acolor) + void add_colored_point(const Local_point& p, const CGAL::IO::Color& acolor) { add_point(p, arrays[POS_COLORED_POINTS]); add_color(acolor, arrays[COLOR_POINTS]); @@ -316,7 +316,7 @@ public: } void add_colored_segment(const Local_point& p1, const Local_point& p2, - const CGAL::Color& acolor) + const CGAL::IO::Color& acolor) { add_point(p1, arrays[POS_COLORED_SEGMENTS]); add_point(p2, arrays[POS_COLORED_SEGMENTS]); @@ -341,7 +341,7 @@ public: } /// Start a new face, with a given color. - void colored_face_begin(const CGAL::Color& acolor) + void colored_face_begin(const CGAL::IO::Color& acolor) { color_of_face=acolor; m_started_face_is_colored=true; @@ -1132,9 +1132,9 @@ private: double m_size_points; double m_size_edges; - CGAL::Color m_vertices_mono_color; - CGAL::Color m_edges_mono_color; - CGAL::Color m_faces_mono_color; + CGAL::IO::Color m_vertices_mono_color; + CGAL::IO::Color m_edges_mono_color; + CGAL::IO::Color m_faces_mono_color; QVector4D m_ambient_color; bool m_are_buffers_initialized; @@ -1184,7 +1184,7 @@ private: bool m_started_face_is_colored; std::vector points_of_face; std::vector vertex_normals_for_face; - CGAL::Color color_of_face; + CGAL::IO::Color color_of_face; }; #endif // CGAL_BASIC_VIEWER_H diff --git a/Linear_cell_complex/include/CGAL/draw_linear_cell_complex.h b/Linear_cell_complex/include/CGAL/draw_linear_cell_complex.h index 49383d6f5eb..5e1a46e52c7 100644 --- a/Linear_cell_complex/include/CGAL/draw_linear_cell_complex.h +++ b/Linear_cell_complex/include/CGAL/draw_linear_cell_complex.h @@ -84,7 +84,7 @@ struct DefaultDrawingFunctorLCC /// @return the color of the volume containing dh /// used only if colored_volume(alcc, dh) and !colored_face(alcc, dh) template - CGAL::Color volume_color(const LCC& alcc, + CGAL::IO::Color volume_color(const LCC& alcc, typename LCC::Dart_const_handle dh) const { CGAL::Random random((unsigned int)(alcc.darts().index(dh))); @@ -93,7 +93,7 @@ struct DefaultDrawingFunctorLCC /// @return the color of the face containing dh /// used only if colored_face(alcc, dh) template - CGAL::Color face_color(const LCC& alcc, + CGAL::IO::Color face_color(const LCC& alcc, typename LCC::Dart_const_handle dh) const { CGAL::Random random((unsigned int)(alcc.darts().index(dh))); @@ -102,7 +102,7 @@ struct DefaultDrawingFunctorLCC /// @return the color of the edge containing dh /// used only if colored_edge(alcc, dh) template - CGAL::Color edge_color(const LCC& alcc, + CGAL::IO::Color edge_color(const LCC& alcc, typename LCC::Dart_const_handle dh) const { CGAL::Random random((unsigned int)(alcc.darts().index(dh))); @@ -111,7 +111,7 @@ struct DefaultDrawingFunctorLCC /// @return the color of the vertex containing dh /// used only if colored_vertex(alcc, dh) template - CGAL::Color vertex_color(const LCC& alcc, + CGAL::IO::Color vertex_color(const LCC& alcc, typename LCC::Dart_const_handle dh) const { CGAL::Random random((unsigned int)(alcc.darts().index(dh))); @@ -213,17 +213,17 @@ protected: if (m_random_face_color) { CGAL::Random random((unsigned int)(lcc->darts().index(dh))); - CGAL::Color c=get_random_color(random); + CGAL::IO::Color c=get_random_color(random); face_begin(c); } else if (m_drawing_functor.colored_face(*lcc, dh)) { - CGAL::Color c=m_drawing_functor.face_color(*lcc, dh); + CGAL::IO::Color c=m_drawing_functor.face_color(*lcc, dh); face_begin(c); } else if (m_drawing_functor.colored_volume(*lcc, voldh)) { - CGAL::Color c=m_drawing_functor.volume_color(*lcc, voldh); + CGAL::IO::Color c=m_drawing_functor.volume_color(*lcc, voldh); face_begin(c); } else diff --git a/Mesh_2/include/CGAL/IO/write_vtu.h b/Mesh_2/include/CGAL/IO/write_vtu.h index 4babefe8faf..5c54bab0ee4 100644 --- a/Mesh_2/include/CGAL/IO/write_vtu.h +++ b/Mesh_2/include/CGAL/IO/write_vtu.h @@ -374,7 +374,7 @@ void write_vtu(std::ostream& os, } // namespace IO #ifndef CGAL_NO_DEPRECATED_CODE -using write_vtu; +using IO::write_vtu; #endif } //end CGAL diff --git a/Mesh_3/archive/applications/Distribution_displayer.h b/Mesh_3/archive/applications/Distribution_displayer.h index 7b790b5aa7c..492de63cc2d 100644 --- a/Mesh_3/archive/applications/Distribution_displayer.h +++ b/Mesh_3/archive/applications/Distribution_displayer.h @@ -6,11 +6,11 @@ struct Distribution_displayer { virtual void fill_rectangle(double x1, double y1, double x2, double y2, - CGAL::Color c) = 0; + CGAL::IO::Color c) = 0; virtual void segment(double x1, double y1, double x2, double y2, - CGAL::Color c) = 0; + CGAL::IO::Color c) = 0; virtual ~Distribution_displayer() {}; }; diff --git a/Mesh_3/archive/applications/Gd_displayer.cpp b/Mesh_3/archive/applications/Gd_displayer.cpp index 529ef5efa7d..8b395cd438e 100644 --- a/Mesh_3/archive/applications/Gd_displayer.cpp +++ b/Mesh_3/archive/applications/Gd_displayer.cpp @@ -20,7 +20,7 @@ Gd_displayer::~Gd_displayer() void Gd_displayer::fill_rectangle(double x1, double y1, double x2, double y2, - CGAL::Color c) + CGAL::IO::Color c) { gdImageFilledRectangle(im, x_pixel(x1), y_pixel(y2), @@ -30,7 +30,7 @@ void Gd_displayer::fill_rectangle(double x1, double y1, void Gd_displayer::segment(double x1, double y1, double x2, double y2, - CGAL::Color c) + CGAL::IO::Color c) { gdImageLine(im, x_pixel(x1), y_pixel(y1), diff --git a/Mesh_3/archive/applications/Gd_displayer.h b/Mesh_3/archive/applications/Gd_displayer.h index bad8700844e..9df1f7c047a 100644 --- a/Mesh_3/archive/applications/Gd_displayer.h +++ b/Mesh_3/archive/applications/Gd_displayer.h @@ -21,11 +21,11 @@ struct Gd_displayer : public Distribution_displayer //@{ void fill_rectangle(double x1, double y1, double x2, double y2, - CGAL::Color c); + CGAL::IO::Color c); void segment(double x1, double y1, double x2, double y2, - CGAL::Color c); + CGAL::IO::Color c); //@} /** \name FUNCTIONS SPECIFIC TO Gd_displayer */ @@ -73,7 +73,7 @@ struct Gd_displayer : public Distribution_displayer /** Returns the index of the color c in the image palette. */ inline - int gd_color(CGAL::Color c) + int gd_color(CGAL::IO::Color c) { int i = gdImageColorExact(im, c.red(), diff --git a/Mesh_3/archive/applications/Qt_widget_displayer.cpp b/Mesh_3/archive/applications/Qt_widget_displayer.cpp index 1526edfe798..2662f5f78df 100644 --- a/Mesh_3/archive/applications/Qt_widget_displayer.cpp +++ b/Mesh_3/archive/applications/Qt_widget_displayer.cpp @@ -14,7 +14,7 @@ Qt_widget_displayer::Qt_widget_displayer(CGAL::Qt_widget* w) : widget(w) {} void Qt_widget_displayer::fill_rectangle(double x1, double y1, double x2, double y2, - CGAL::Color color) + CGAL::IO::Color color) { *widget << CGAL::FillColor(color) << color @@ -23,7 +23,7 @@ void Qt_widget_displayer::fill_rectangle(double x1, double y1, void Qt_widget_displayer::segment(double x1, double y1, double x2, double y2, - CGAL::Color color) + CGAL::IO::Color color) { *widget << color << Segment_2(Point_2(x1, y1), Point_2(x2, y2)); diff --git a/Mesh_3/archive/applications/Qt_widget_displayer.h b/Mesh_3/archive/applications/Qt_widget_displayer.h index 3f5224c8887..02d08f0e980 100644 --- a/Mesh_3/archive/applications/Qt_widget_displayer.h +++ b/Mesh_3/archive/applications/Qt_widget_displayer.h @@ -10,11 +10,11 @@ struct Qt_widget_displayer : public Distribution_displayer void fill_rectangle(double x1, double y1, double x2, double y2, - CGAL::Color c); + CGAL::IO::Color c); void segment(double x1, double y1, double x2, double y2, - CGAL::Color c); + CGAL::IO::Color c); private: CGAL::Qt_widget* widget; }; diff --git a/Mesh_3/archive/applications/display_distribution.cpp b/Mesh_3/archive/applications/display_distribution.cpp index c989ce8952c..28188b9c9d7 100644 --- a/Mesh_3/archive/applications/display_distribution.cpp +++ b/Mesh_3/archive/applications/display_distribution.cpp @@ -165,8 +165,8 @@ void output_distribution_to_png(std::vector& elements, widget->show(); widget->lock(); - *widget << CGAL::FillColor(CGAL::Color(200, 200, 200)) - << CGAL::Color(200, 200, 200) + *widget << CGAL::FillColor(CGAL::IO::Color(200, 200, 200)) + << CGAL::IO::Color(200, 200, 200) << Rectangle_2(Point_2(0, 0), Point_2(1,1)); if( number_of_classes == 0 ) return; @@ -189,7 +189,7 @@ void output_distribution_to_png(std::vector& elements, Point_2((k+1)*width, height)); } else - *widget << CGAL::red() << Segment_2(Point_2(k*width, 0), + *widget << CGAL::IO::red() << Segment_2(Point_2(k*width, 0), Point_2((k+1)*width, 0)); widget->unlock(); diff --git a/Mesh_3/archive/applications/distribution.cpp b/Mesh_3/archive/applications/distribution.cpp index d45a3fbce70..97e1b6c33c5 100644 --- a/Mesh_3/archive/applications/distribution.cpp +++ b/Mesh_3/archive/applications/distribution.cpp @@ -27,7 +27,7 @@ void display_distribution(Distribution_displayer* display, if( number_of_classes == 0 ) return; const double width = 1.0 / number_of_classes; - display->fill_rectangle(0., 0., 1., 1., CGAL::Color(200, 200, 200)); + display->fill_rectangle(0., 0., 1., 1., CGAL::IO::Color(200, 200, 200)); for(int k = 0; k < number_of_classes; ++k) if(distribution[k]>0) { @@ -39,5 +39,5 @@ void display_distribution(Distribution_displayer* display, else display->segment(k * width, 0., (k+1) * width, 0., - CGAL::red()); + CGAL::IO::red()); } diff --git a/Mesh_3/archive/applications/lanteri_process_results.cpp b/Mesh_3/archive/applications/lanteri_process_results.cpp index 44302fdec30..d433adc1ebb 100644 --- a/Mesh_3/archive/applications/lanteri_process_results.cpp +++ b/Mesh_3/archive/applications/lanteri_process_results.cpp @@ -99,7 +99,7 @@ bool process_aux_2(const std::vector& qualities, displays[i]->segment(x_position_of_length_bound, 0.0, x_position_of_length_bound, -0.05, - CGAL::blue()); + CGAL::IO::blue()); } *out_stream << "saving " << filename.c_str() << "...\n"; diff --git a/Mesh_3/archive/applications/output_distribution_to_stdout.cpp b/Mesh_3/archive/applications/output_distribution_to_stdout.cpp index 1742f1191a9..2b18f4488f2 100644 --- a/Mesh_3/archive/applications/output_distribution_to_stdout.cpp +++ b/Mesh_3/archive/applications/output_distribution_to_stdout.cpp @@ -171,8 +171,8 @@ void parse_argv(int argc, char** argv, int extra_args = 0) // widget->show(); // // // widget->lock(); -//// *widget << CGAL::FillColor(CGAL::Color(200, 200, 200)) -//// << CGAL::Color(200, 200, 200) +//// *widget << CGAL::FillColor(CGAL::IO::Color(200, 200, 200)) +//// << CGAL::IO::Color(200, 200, 200) //// << Rectangle_2(Point_2(0, 0), Point_2(1,1)); //// // if( number_of_classes == 0 ) return; @@ -195,7 +195,7 @@ void parse_argv(int argc, char** argv, int extra_args = 0) //// Point_2((k+1)*width, height)); // } // else -//// *widget << CGAL::red() << Segment_2(Point_2(k*width, 0), +//// *widget << CGAL::IO::red() << Segment_2(Point_2(k*width, 0), //// Point_2((k+1)*width, 0)); // // // widget->unlock(); diff --git a/Mesh_3/include/CGAL/IO/File_tetgen.h b/Mesh_3/include/CGAL/IO/File_tetgen.h index 2d3dca2dd20..03fad2e7998 100644 --- a/Mesh_3/include/CGAL/IO/File_tetgen.h +++ b/Mesh_3/include/CGAL/IO/File_tetgen.h @@ -215,7 +215,7 @@ output_to_tetgen(std::string filename, } // namespace IO #ifndef CGAL_NO_DEPRECATED_CODE -using output_to_tetgen; +using IO::output_to_tetgen; #endif } // end namespace CGAL diff --git a/Mesh_3/include/CGAL/IO/output_to_vtu.h b/Mesh_3/include/CGAL/IO/output_to_vtu.h index b318084532b..d553ddfdfed 100644 --- a/Mesh_3/include/CGAL/IO/output_to_vtu.h +++ b/Mesh_3/include/CGAL/IO/output_to_vtu.h @@ -136,9 +136,9 @@ write_cells(std::ostream& os, connectivity_table.push_back(V[cit->vertex(i)]); } - IO::internal::write_vector(os,connectivity_table); - IO::internal::write_vector(os,offsets); - IO::internal::write_vector(os,cell_type); + internal::write_vector(os,connectivity_table); + internal::write_vector(os,offsets); + internal::write_vector(os,cell_type); } @@ -214,7 +214,7 @@ write_c3t3_points(std::ostream& os, coordinates.push_back(vit->point()[1]); coordinates.push_back(dim == 3 ? vit->point()[2] : 0.0); } - IO::internal::write_vector(os,coordinates); + internal::write_vector(os,coordinates); } // writes the attribute tags before binary data is appended @@ -264,7 +264,7 @@ void write_attributes(std::ostream& os, const std::vector& att) { - IO::internal::write_vector(os,att); + internal::write_vector(os,att); } enum VTU_ATTRIBUTE_TYPE{ @@ -279,7 +279,7 @@ template void output_to_vtu_with_attributes(std::ostream& os, const C3T3& c3t3, std::vector >&attributes, - IO::Mode mode = IO::BINARY) + Mode mode = BINARY) { //CGAL_assertion(attributes.size() == attribute_types.size()); typedef typename C3T3::Triangulation Tr; @@ -308,7 +308,7 @@ void output_to_vtu_with_attributes(std::ostream& os, << "\" NumberOfCells=\"" << c3t3.number_of_cells() << "\">\n"; std::size_t offset = 0; - const bool binary = (mode == IO::BINARY); + const bool binary = (mode == BINARY); write_c3t3_points_tag(os,tr,number_of_vertices,V,binary,offset); write_cells_tag(os,c3t3,V,binary,offset); // fills V if the mode is ASCII os << " \n"; diff --git a/Nef_3/archive/include/CGAL/Nef_3/Visualizor.h b/Nef_3/archive/include/CGAL/Nef_3/Visualizor.h index b1cdda28451..2d1f5cab0ab 100644 --- a/Nef_3/archive/include/CGAL/Nef_3/Visualizor.h +++ b/Nef_3/archive/include/CGAL/Nef_3/Visualizor.h @@ -278,9 +278,9 @@ namespace OGL { void draw(Vertex_iterator v) const { CGAL_NEF_TRACEN("drawing vertex "<<*v); - CGAL::Color cf(CGAL_NEF3_MARKED_VERTEX_COLOR), + CGAL::IO::Color cf(CGAL_NEF3_MARKED_VERTEX_COLOR), ct(CGAL_NEF3_UNMARKED_VERTEX_COLOR); // more blue-ish - CGAL::Color c = v->mark() ? ct : cf; + CGAL::IO::Color c = v->mark() ? ct : cf; glPointSize(10); glColor3ub(c.red(), c.green(), c.blue()); glBegin(GL_POINTS); @@ -291,9 +291,9 @@ namespace OGL { void draw(Edge_iterator e) const { CGAL_NEF_TRACEN("drawing edge "<<*e); Double_point p = e->source(), q = e->target(); - CGAL::Color cf(CGAL_NEF3_MARKED_EDGE_COLOR), + CGAL::IO::Color cf(CGAL_NEF3_MARKED_EDGE_COLOR), ct(CGAL_NEF3_UNMARKED_EDGE_COLOR); // more blue-ish - CGAL::Color c = e->mark() ? ct : cf; + CGAL::IO::Color c = e->mark() ? ct : cf; glLineWidth(5); glColor3ub(c.red(),c.green(),c.blue()); glBegin(GL_LINE_STRIP); @@ -317,9 +317,9 @@ namespace OGL { GLU_TESS_WINDING_POSITIVE); DFacet::Coord_const_iterator cit; - CGAL::Color cf(CGAL_NEF3_MARKED_FACET_COLOR), + CGAL::IO::Color cf(CGAL_NEF3_MARKED_FACET_COLOR), ct(CGAL_NEF3_UNMARKED_FACET_COLOR); // more blue-ish - CGAL::Color c = (f->mark() ? ct : cf); + CGAL::IO::Color c = (f->mark() ? ct : cf); glColor3ub(c.red(),c.green(),c.blue()); gluTessBeginPolygon(tess_,f->normal()); CGAL_NEF_TRACEN(" "); diff --git a/Nef_3/include/CGAL/Nef_3/OGL_helper.h b/Nef_3/include/CGAL/Nef_3/OGL_helper.h index 608500b1ba4..c6aa2d82b91 100644 --- a/Nef_3/include/CGAL/Nef_3/OGL_helper.h +++ b/Nef_3/include/CGAL/Nef_3/OGL_helper.h @@ -340,9 +340,9 @@ namespace OGL { void draw(Vertex_iterator v) const { // CGAL_NEF_TRACEN("drawing vertex "<<*v); - CGAL::Color cf(CGAL_NEF3_MARKED_VERTEX_COLOR), + CGAL::IO::Color cf(CGAL_NEF3_MARKED_VERTEX_COLOR), ct(CGAL_NEF3_UNMARKED_VERTEX_COLOR); // more blue-ish - CGAL::Color c = v->mark() ? ct : cf; + CGAL::IO::Color c = v->mark() ? ct : cf; glPointSize(10); glColor3ub(c.red(), c.green(), c.blue()); glBegin(GL_POINTS); @@ -357,9 +357,9 @@ namespace OGL { void draw(Edge_iterator e) const { // CGAL_NEF_TRACEN("drawing edge "<<*e); Double_point p = e->source(), q = e->target(); - CGAL::Color cf(CGAL_NEF3_MARKED_EDGE_COLOR), + CGAL::IO::Color cf(CGAL_NEF3_MARKED_EDGE_COLOR), ct(CGAL_NEF3_UNMARKED_EDGE_COLOR); // more blue-ish - CGAL::Color c = e->mark() ? ct : cf; + CGAL::IO::Color c = e->mark() ? ct : cf; glLineWidth(5); glColor3ub(c.red(),c.green(),c.blue()); glBegin(GL_LINE_STRIP); @@ -383,9 +383,9 @@ namespace OGL { GLU_TESS_WINDING_POSITIVE); DFacet::Coord_const_iterator cit; - CGAL::Color cf(CGAL_NEF3_MARKED_FACET_COLOR), + CGAL::IO::Color cf(CGAL_NEF3_MARKED_FACET_COLOR), ct(CGAL_NEF3_UNMARKED_FACET_COLOR); // more blue-ish - CGAL::Color c = (f->mark() ? ct : cf); + CGAL::IO::Color c = (f->mark() ? ct : cf); glColor3ub(c.red(),c.green(),c.blue()); gluTessBeginPolygon(tess_,f->normal()); // CGAL_NEF_TRACEN(" "); diff --git a/Nef_3/include/CGAL/Nef_3/SM_visualizor.h b/Nef_3/include/CGAL/Nef_3/SM_visualizor.h index 5371c314950..9c9c21d6dbe 100644 --- a/Nef_3/include/CGAL/Nef_3/SM_visualizor.h +++ b/Nef_3/include/CGAL/Nef_3/SM_visualizor.h @@ -24,8 +24,8 @@ #include #include -#define CGAL_NEF3_LGREY CGAL::Color(170,170,200) -#define CGAL_NEF3_DGREY CGAL::Color(30,30,50) +#define CGAL_NEF3_LGREY CGAL::IO::Color(170,170,200) +#define CGAL_NEF3_DGREY CGAL::IO::Color(30,30,50) namespace CGAL { diff --git a/Nef_3/include/CGAL/Nef_3/SNC_SM_visualizor.h b/Nef_3/include/CGAL/Nef_3/SNC_SM_visualizor.h index ec1b81c1014..e06f5b8e92f 100644 --- a/Nef_3/include/CGAL/Nef_3/SNC_SM_visualizor.h +++ b/Nef_3/include/CGAL/Nef_3/SNC_SM_visualizor.h @@ -24,8 +24,8 @@ #include #include -#define CGAL_NEF_LGREY CGAL::Color(170,170,200) -#define CGAL_NEF_DGREY CGAL::Color(30,30,50) +#define CGAL_NEF_LGREY CGAL::IO::Color(170,170,200) +#define CGAL_NEF_DGREY CGAL::IO::Color(30,30,50) namespace CGAL { diff --git a/Nef_3/include/CGAL/draw_nef_3.h b/Nef_3/include/CGAL/draw_nef_3.h index bcdb6c61ae3..8a1f4a74931 100644 --- a/Nef_3/include/CGAL/draw_nef_3.h +++ b/Nef_3/include/CGAL/draw_nef_3.h @@ -30,11 +30,11 @@ namespace CGAL { struct DefaultColorFunctorNefPolyhedron { template - static CGAL::Color run(const NefPolyhedron&, + static CGAL::IO::Color run(const NefPolyhedron&, typename NefPolyhedron::Halffacet_const_handle fh) { if (fh == nullptr) // use to get the mono color - return CGAL::Color(100, 125, 200); // R G B between 0-255 + return CGAL::IO::Color(100, 125, 200); // R G B between 0-255 CGAL::Random random((unsigned int)(std::size_t)(&(*fh))); return get_random_color(random); @@ -111,7 +111,7 @@ protected: return; } - CGAL::Color c = viewer.run_color(f); + CGAL::IO::Color c = viewer.run_color(f); viewer.face_begin(c); SHalfedge_around_facet_const_circulator hc_start(se); @@ -171,7 +171,7 @@ protected: negate_all_normals(); } - CGAL::Color run_color(Halffacet_const_handle fh) + CGAL::IO::Color run_color(Halffacet_const_handle fh) { return m_fcolor.run(nef, fh); } diff --git a/Nef_S2/include/CGAL/Nef_S2/SM_visualizor.h b/Nef_S2/include/CGAL/Nef_S2/SM_visualizor.h index 59d07270dcf..de082e2c42a 100644 --- a/Nef_S2/include/CGAL/Nef_S2/SM_visualizor.h +++ b/Nef_S2/include/CGAL/Nef_S2/SM_visualizor.h @@ -21,8 +21,8 @@ #include #include -#define CGAL_NEF_LGREY CGAL::Color(170,170,200) -#define CGAL_NEF_DGREY CGAL::Color(30,30,50) +#define CGAL_NEF_LGREY CGAL::IO::Color(170,170,200) +#define CGAL_NEF_DGREY CGAL::IO::Color(30,30,50) namespace CGAL { template diff --git a/Nef_S2/include/CGAL/Nef_S2/Sphere_geometry_OGL.h b/Nef_S2/include/CGAL/Nef_S2/Sphere_geometry_OGL.h index 505fe604fa5..db3a99f3ad9 100644 --- a/Nef_S2/include/CGAL/Nef_S2/Sphere_geometry_OGL.h +++ b/Nef_S2/include/CGAL/Nef_S2/Sphere_geometry_OGL.h @@ -33,8 +33,8 @@ #define CGAL_NEF_DEBUG 151 #include -#define CGAL_NEF_LGREY CGAL::Color(170,170,200) -#define CGAL_NEF_DGREY CGAL::Color(30,30,50) +#define CGAL_NEF_LGREY CGAL::IO::Color(170,170,200) +#define CGAL_NEF_DGREY CGAL::IO::Color(30,30,50) namespace CGAL { namespace OGL { @@ -240,12 +240,12 @@ template class Sphere_point : public VPoint, public Gen_object { typedef R_ R; CGAL::Sphere_point p_; - CGAL::Color c_; + CGAL::IO::Color c_; unsigned w_; public: Sphere_point() {} Sphere_point(const CGAL::Sphere_point& p, - CGAL::Color c = CGAL::black(), unsigned w = 10) : + CGAL::IO::Color c = CGAL::black(), unsigned w = 10) : VPoint(Approximator::approximate(p)), p_(p), c_(c), w_(w) {} Sphere_point(const Sphere_point& p) : VPoint(p), Gen_object() { p_ = p.p_; c_ = p.c_; w_ = p.w_; } @@ -283,12 +283,12 @@ template class Sphere_segment : public VSegment, public Gen_object { typedef R_ R; CGAL::Sphere_segment s_; - CGAL::Color c_; + CGAL::IO::Color c_; unsigned w_; public: Sphere_segment() {} Sphere_segment(const CGAL::Sphere_segment& s, - CGAL::Color c = CGAL::black(), unsigned w = 2) + CGAL::IO::Color c = CGAL::black(), unsigned w = 2) : VSegment(Approximator::approximate(s)), s_(s), c_(c), w_(w) {} Sphere_segment(const Sphere_segment& s) : VSegment(s), Gen_object() { s_ = s.s_; c_ = s.c_; w_ = s.w_; } @@ -336,12 +336,12 @@ template class Sphere_circle : public VSegment, public Gen_object { typedef R_ R; CGAL::Sphere_circle s_; - CGAL::Color c_; + CGAL::IO::Color c_; unsigned w_; public: Sphere_circle() {} Sphere_circle(const CGAL::Sphere_circle& s, - CGAL::Color c = CGAL::black(), unsigned w = 2) + CGAL::IO::Color c = CGAL::black(), unsigned w = 2) : VSegment(Approximator::approximate(s)), s_(s), c_(c), w_(w) {} Sphere_circle(const Sphere_circle& s) : VSegment(s), Gen_object() { s_ = s.s_; c_ = s.c_; w_ = s.w_; } @@ -382,12 +382,12 @@ template class Sphere_triangle : public VTriangle, public Gen_object { typedef R_ R; CGAL::Sphere_triangle t_; - CGAL::Color c_; + CGAL::IO::Color c_; public: Sphere_triangle() {} Sphere_triangle(const CGAL::Sphere_triangle& t, - CGAL::Color c = CGAL::Color(100,100,120)) + CGAL::IO::Color c = CGAL::IO::Color(100,100,120)) : VTriangle(Approximator::approximate(t)), t_(t), c_(c) {} Sphere_triangle(const Sphere_triangle& t) : VTriangle(t), Gen_object() @@ -530,27 +530,27 @@ Unit_sphere& operator=(const Unit_sphere& S) template void push_back(const CGAL::Sphere_point& p, - CGAL::Color c = CGAL::yellow(), unsigned w = 5) + CGAL::IO::Color c = CGAL::IO::yellow(), unsigned w = 5) { objects_.push_back(new Sphere_point(p,c,w)); } template void push_back(const CGAL::Sphere_segment& s, - CGAL::Color c = CGAL::black(), unsigned w = 1) + CGAL::IO::Color c = CGAL::IO::black(), unsigned w = 1) { objects_.push_back(new Sphere_segment(s,c,w)); } template void push_back(const CGAL::Sphere_circle& s, - CGAL::Color c = CGAL::black(), unsigned w = 1) + CGAL::IO::Color c = CGAL::IO::black(), unsigned w = 1) { objects_.push_back(new Sphere_circle(s,c,w)); } template void push_back(const CGAL::Sphere_triangle& t, - CGAL::Color c = CGAL::white()) + CGAL::IO::Color c = CGAL::IO::white()) { triangles_.push_back(new Sphere_triangle(t,c)); } template void push_back_triangle_edge(const CGAL::Sphere_segment& s, - CGAL::Color c = CGAL::blue(), unsigned w = 1) + CGAL::IO::Color c = CGAL::IO::blue(), unsigned w = 1) { triangle_edges_.push_back(new Sphere_segment(s,c,w)); } void set_style(int style) { diff --git a/Optimal_bounding_box/benchmark/Optimal_bounding_box/bench_obb.cpp b/Optimal_bounding_box/benchmark/Optimal_bounding_box/bench_obb.cpp index 247cf6435ff..69496827890 100644 --- a/Optimal_bounding_box/benchmark/Optimal_bounding_box/bench_obb.cpp +++ b/Optimal_bounding_box/benchmark/Optimal_bounding_box/bench_obb.cpp @@ -29,7 +29,7 @@ void bench_finding_obb(const std::string filename, std::vector points; std::vector > unused_faces; - CGAL::read_polygon_soup(filename, points, unused_faces); + CGAL::IO::read_polygon_soup(filename, points, unused_faces); std::vector ch_points; std::array obb_points1; diff --git a/Optimal_bounding_box/examples/Optimal_bounding_box/obb_example.cpp b/Optimal_bounding_box/examples/Optimal_bounding_box/obb_example.cpp index 4b786a85ee4..82ef633a101 100644 --- a/Optimal_bounding_box/examples/Optimal_bounding_box/obb_example.cpp +++ b/Optimal_bounding_box/examples/Optimal_bounding_box/obb_example.cpp @@ -23,7 +23,7 @@ int main(int argc, char** argv) const char* filename = (argc > 1) ? argv[1] : "data/pig.off"; Surface_mesh sm; - if(!PMP::read_polygon_mesh(filename, sm) || sm.is_empty()) + if(!PMP::IO::read_polygon_mesh(filename, sm) || sm.is_empty()) { std::cerr << "Invalid input file." << std::endl; return EXIT_FAILURE; diff --git a/Optimal_bounding_box/examples/Optimal_bounding_box/obb_with_point_maps_example.cpp b/Optimal_bounding_box/examples/Optimal_bounding_box/obb_with_point_maps_example.cpp index dd20c5e2095..81ee1fcc328 100644 --- a/Optimal_bounding_box/examples/Optimal_bounding_box/obb_with_point_maps_example.cpp +++ b/Optimal_bounding_box/examples/Optimal_bounding_box/obb_with_point_maps_example.cpp @@ -24,7 +24,7 @@ int main(int argc, char** argv) const char* filename = (argc > 1) ? argv[1] : "data/pig.off"; Surface_mesh sm; - if(!CGAL::Polygon_mesh_processing::read_polygon_mesh(filename, sm) || sm.is_empty()) + if(!CGAL::Polygon_mesh_processing::IO::read_polygon_mesh(filename, sm) || sm.is_empty()) { std::cerr << "Invalid input file." << std::endl; return EXIT_FAILURE; diff --git a/Optimal_bounding_box/examples/Optimal_bounding_box/rotated_aabb_tree_example.cpp b/Optimal_bounding_box/examples/Optimal_bounding_box/rotated_aabb_tree_example.cpp index 176ca6ff53b..53957ff0b03 100644 --- a/Optimal_bounding_box/examples/Optimal_bounding_box/rotated_aabb_tree_example.cpp +++ b/Optimal_bounding_box/examples/Optimal_bounding_box/rotated_aabb_tree_example.cpp @@ -36,7 +36,7 @@ int main(int argc, char** argv) const char* filename = (argc > 1) ? argv[1] : "data/pig.off"; Surface_mesh sm; - if(!CGAL::Polygon_mesh_processing::read_polygon_mesh(filename, sm) || sm.is_empty()) + if(!CGAL::Polygon_mesh_processing::IO::read_polygon_mesh(filename, sm) || sm.is_empty()) { std::cerr << "Invalid input file." << std::endl; return EXIT_FAILURE; diff --git a/Periodic_2_triangulation_2/doc/Periodic_2_triangulation_2/Periodic_2_triangulation_2.txt b/Periodic_2_triangulation_2/doc/Periodic_2_triangulation_2/Periodic_2_triangulation_2.txt index 93c54224799..f33b9862f3c 100644 --- a/Periodic_2_triangulation_2/doc/Periodic_2_triangulation_2/Periodic_2_triangulation_2.txt +++ b/Periodic_2_triangulation_2/doc/Periodic_2_triangulation_2/Periodic_2_triangulation_2.txt @@ -309,7 +309,7 @@ the `TriangulationDataStructure_2` (e.g. a `Vertex_handle` or `Face_handle`), he can use the `Triangulation_vertex_base_with_info_2` class to add his own information easily in the vertices. The example below shows how to -add a `CGAL::Color` this way. +add a `CGAL::IO::Color` this way. \cgalExample{Periodic_2_triangulation_2/p2t2_colored_vertices.cpp} diff --git a/Periodic_2_triangulation_2/examples/Periodic_2_triangulation_2/p2t2_colored_vertices.cpp b/Periodic_2_triangulation_2/examples/Periodic_2_triangulation_2/p2t2_colored_vertices.cpp index aeed55bfdd3..fdf8a5ac45f 100644 --- a/Periodic_2_triangulation_2/examples/Periodic_2_triangulation_2/p2t2_colored_vertices.cpp +++ b/Periodic_2_triangulation_2/examples/Periodic_2_triangulation_2/p2t2_colored_vertices.cpp @@ -9,7 +9,7 @@ typedef CGAL::Exact_predicates_inexact_constructions_kernel K; typedef CGAL::Periodic_2_Delaunay_triangulation_traits_2 GT; typedef CGAL::Periodic_2_triangulation_vertex_base_2 Vb; -typedef CGAL::Triangulation_vertex_base_with_info_2 VbInfo; +typedef CGAL::Triangulation_vertex_base_with_info_2 VbInfo; typedef CGAL::Periodic_2_triangulation_face_base_2 Fb; @@ -32,7 +32,7 @@ int main() PDT::Vertex_iterator vit; for (vit = T.vertices_begin(); vit != T.vertices_end(); ++vit) if (T.degree(vit) == 6) - vit->info() = CGAL::red(); + vit->info() = CGAL::IO::red(); return 0; } diff --git a/Periodic_2_triangulation_2/include/CGAL/draw_periodic_2_triangulation_2.h b/Periodic_2_triangulation_2/include/CGAL/draw_periodic_2_triangulation_2.h index e4859ea033f..fe0a13cf13a 100644 --- a/Periodic_2_triangulation_2/include/CGAL/draw_periodic_2_triangulation_2.h +++ b/Periodic_2_triangulation_2/include/CGAL/draw_periodic_2_triangulation_2.h @@ -26,11 +26,11 @@ namespace CGAL { // Default color functor; user can change it to have its own face color struct DefaultColorFunctorP2T2 { template - static CGAL::Color run(const P2T2 &, + static CGAL::IO::Color run(const P2T2 &, const typename P2T2::Periodic_triangle_iterator /*ti*/) { //CGAL::Random random((unsigned int)(std::size_t)(&*ti)); //return get_random_color(random); - return CGAL::Color(73, 250, 117); + return CGAL::IO::Color(73, 250, 117); } }; @@ -107,7 +107,7 @@ protected: // Construct the triangle in 9-sheeted covering space and add to viewer Triangle t(p2t2.triangle(*ti)); - CGAL::Color c=m_fcolor.run(p2t2, ti); + CGAL::IO::Color c=m_fcolor.run(p2t2, ti); face_begin(c); add_point_in_face(t[0]); add_point_in_face(t[1]); @@ -116,9 +116,9 @@ protected: // Display the edges of the faces as segments with a // light gray color for better visualization - add_segment(t[0], t[1], CGAL::Color(207, 213, 211)); - add_segment(t[1], t[2], CGAL::Color(207, 213, 211)); - add_segment(t[2], t[0], CGAL::Color(207, 213, 211)); + add_segment(t[0], t[1], CGAL::IO::Color(207, 213, 211)); + add_segment(t[1], t[2], CGAL::IO::Color(207, 213, 211)); + add_segment(t[2], t[0], CGAL::IO::Color(207, 213, 211)); } void compute_domain() @@ -135,10 +135,10 @@ protected: Kernel::Point_2 p3(orig_domain.xmax(), orig_domain.ymin()); Kernel::Point_2 p4((orig_domain.max)()); - add_segment(p1 + shift, p2 + shift, CGAL::Color(96, 104, 252)); - add_segment(p1 + shift, p3 + shift, CGAL::Color(96, 104, 252)); - add_segment(p2 + shift, p4 + shift, CGAL::Color(96, 104, 252)); - add_segment(p3 + shift, p4 + shift, CGAL::Color(96, 104, 252)); + add_segment(p1 + shift, p2 + shift, CGAL::IO::Color(96, 104, 252)); + add_segment(p1 + shift, p3 + shift, CGAL::IO::Color(96, 104, 252)); + add_segment(p2 + shift, p4 + shift, CGAL::IO::Color(96, 104, 252)); + add_segment(p3 + shift, p4 + shift, CGAL::IO::Color(96, 104, 252)); } } } diff --git a/Periodic_3_mesh_3/doc/Periodic_3_mesh_3/PackageDescription.txt b/Periodic_3_mesh_3/doc/Periodic_3_mesh_3/PackageDescription.txt index 8add9262b9b..4de34cd9b43 100644 --- a/Periodic_3_mesh_3/doc/Periodic_3_mesh_3/PackageDescription.txt +++ b/Periodic_3_mesh_3/doc/Periodic_3_mesh_3/PackageDescription.txt @@ -101,6 +101,6 @@ Many classes and functions used by this package are defined within the package and \ref PkgMesh3Parameters. \cgalCRPSection{Input/Output Functions} -- \link PkgPeriodic3Mesh3IOFunctions `CGAL::output_periodic_mesh_to_medit()` \endlink +- \link PkgPeriodic3Mesh3IOFunctions `CGAL::IO::output_periodic_mesh_to_medit()` \endlink */ diff --git a/Periodic_3_mesh_3/doc/Periodic_3_mesh_3/Periodic_3_mesh_3.txt b/Periodic_3_mesh_3/doc/Periodic_3_mesh_3/Periodic_3_mesh_3.txt index 1996212d4c9..5d1380e5950 100644 --- a/Periodic_3_mesh_3/doc/Periodic_3_mesh_3/Periodic_3_mesh_3.txt +++ b/Periodic_3_mesh_3/doc/Periodic_3_mesh_3/Periodic_3_mesh_3.txt @@ -416,7 +416,7 @@ This section presents various use cases of the periodic mesh generator. \subsection Periodic_3_mesh_3SubMultipleCopies Visualizing Multiple Copies of a Periodic Mesh Generated meshes can be output to the `.mesh` file format, which can be visualized with the demo -of the package \ref PkgPolyhedron. The function \link PkgPeriodic3Mesh3IOFunctions `CGAL::output_periodic_mesh_to_medit()` \endlink +of the package \ref PkgPolyhedron. The function \link PkgPeriodic3Mesh3IOFunctions `CGAL::IO::output_periodic_mesh_to_medit()` \endlink takes a stream, a mesh complex, and - optionally - the number of periodic copies that should be drawn, making it easier to observe the periodicity of the result. \cgalFigureRef{Periodic_3_mesh_3Periodic_copies} illustrates the different output diff --git a/Periodic_3_mesh_3/examples/Periodic_3_mesh_3/mesh_implicit_multi_domain.cpp b/Periodic_3_mesh_3/examples/Periodic_3_mesh_3/mesh_implicit_multi_domain.cpp index 40ca5720f0c..0b57091170c 100644 --- a/Periodic_3_mesh_3/examples/Periodic_3_mesh_3/mesh_implicit_multi_domain.cpp +++ b/Periodic_3_mesh_3/examples/Periodic_3_mesh_3/mesh_implicit_multi_domain.cpp @@ -89,9 +89,9 @@ int main(int argc, char** argv) // Output std::ofstream medit_file("output_multi_domain.mesh"); - CGAL::output_periodic_mesh_to_medit(medit_file, c3t3, number_of_copies_in_output, - false /*do not associate different colors to each copy*/, - false /*do not rebind*/, true /*show patches*/); + CGAL::IO::output_periodic_mesh_to_medit(medit_file, c3t3, number_of_copies_in_output, + false /*do not associate different colors to each copy*/, + false /*do not rebind*/, true /*show patches*/); std::cout << "EXIT SUCCESS" << std::endl; return 0; diff --git a/Periodic_3_mesh_3/examples/Periodic_3_mesh_3/mesh_implicit_shape.cpp b/Periodic_3_mesh_3/examples/Periodic_3_mesh_3/mesh_implicit_shape.cpp index 2e74bc44c0b..9c39c8758e3 100644 --- a/Periodic_3_mesh_3/examples/Periodic_3_mesh_3/mesh_implicit_shape.cpp +++ b/Periodic_3_mesh_3/examples/Periodic_3_mesh_3/mesh_implicit_shape.cpp @@ -67,7 +67,7 @@ int main(int argc, char** argv) C3t3 c3t3 = CGAL::make_periodic_3_mesh_3(domain, criteria); std::ofstream medit_file("output_implicit_shape.mesh"); - CGAL::output_periodic_mesh_to_medit(medit_file, c3t3, number_of_copies_in_output); + CGAL::IO::output_periodic_mesh_to_medit(medit_file, c3t3, number_of_copies_in_output); std::cout << "EXIT SUCCESS" << std::endl; return 0; diff --git a/Periodic_3_mesh_3/examples/Periodic_3_mesh_3/mesh_implicit_shape_with_features.cpp b/Periodic_3_mesh_3/examples/Periodic_3_mesh_3/mesh_implicit_shape_with_features.cpp index 6a0ceed004a..680b0153c95 100644 --- a/Periodic_3_mesh_3/examples/Periodic_3_mesh_3/mesh_implicit_shape_with_features.cpp +++ b/Periodic_3_mesh_3/examples/Periodic_3_mesh_3/mesh_implicit_shape_with_features.cpp @@ -111,13 +111,13 @@ int main(int argc, char** argv) C3t3 c3t3 = CGAL::make_periodic_3_mesh_3(domain, criteria, no_features(), no_exude(), no_perturb()); std::ofstream medit_file("output_implicit_shape_without_protection.mesh"); - CGAL::output_periodic_mesh_to_medit(medit_file, c3t3, number_of_copies_in_output); + CGAL::IO::output_periodic_mesh_to_medit(medit_file, c3t3, number_of_copies_in_output); // Mesh generation WITH feature preservation (and no optimizers) C3t3 c3t3_bis = CGAL::make_periodic_3_mesh_3(domain, criteria, features(), no_exude(), no_perturb()); std::ofstream medit_file_bis("output_implicit_shape_with_protection.mesh"); - CGAL::output_periodic_mesh_to_medit(medit_file_bis, c3t3_bis, number_of_copies_in_output); + CGAL::IO::output_periodic_mesh_to_medit(medit_file_bis, c3t3_bis, number_of_copies_in_output); std::cout << "EXIT SUCCESS" << std::endl; return 0; diff --git a/Periodic_3_mesh_3/examples/Periodic_3_mesh_3/mesh_implicit_shape_with_optimizers.cpp b/Periodic_3_mesh_3/examples/Periodic_3_mesh_3/mesh_implicit_shape_with_optimizers.cpp index 1bf84816848..3d2c42a4c4e 100644 --- a/Periodic_3_mesh_3/examples/Periodic_3_mesh_3/mesh_implicit_shape_with_optimizers.cpp +++ b/Periodic_3_mesh_3/examples/Periodic_3_mesh_3/mesh_implicit_shape_with_optimizers.cpp @@ -76,7 +76,7 @@ int main(int argc, char** argv) exude(sliver_bound=10, time_limit=0)); std::ofstream medit_file("output_implicit_shape_optimized.mesh"); - CGAL::output_periodic_mesh_to_medit(medit_file, c3t3); + CGAL::IO::output_periodic_mesh_to_medit(medit_file, c3t3); // Below, the mesh generation and the optimizations are done in several calls C3t3 c3t3_bis = CGAL::make_periodic_3_mesh_3(domain, criteria, @@ -84,7 +84,7 @@ int main(int argc, char** argv) no_perturb(), no_exude()); std::ofstream medit_file_bis("output_implicit_shape_non-optimized.mesh"); - CGAL::output_periodic_mesh_to_medit(medit_file_bis, c3t3_bis); + CGAL::IO::output_periodic_mesh_to_medit(medit_file_bis, c3t3_bis); // Now, call each optimizer with its global function CGAL::odt_optimize_periodic_3_mesh_3(c3t3_bis, domain, convergence=0.03, freeze_bound=0.02, time_limit=30); @@ -93,7 +93,7 @@ int main(int argc, char** argv) CGAL::exude_periodic_3_mesh_3(c3t3_bis, sliver_bound=10, time_limit=0); std::ofstream medit_file_ter("output_implicit_shape_two_steps.mesh"); - CGAL::output_periodic_mesh_to_medit(medit_file_ter, c3t3_bis, number_of_copies_in_output); + CGAL::IO::output_periodic_mesh_to_medit(medit_file_ter, c3t3_bis, number_of_copies_in_output); std::cout << "EXIT SUCCESS" << std::endl; return 0; diff --git a/Periodic_3_mesh_3/examples/Periodic_3_mesh_3/mesh_implicit_shape_with_subdomains.cpp b/Periodic_3_mesh_3/examples/Periodic_3_mesh_3/mesh_implicit_shape_with_subdomains.cpp index 4d6c01aff53..8de56fad9a7 100644 --- a/Periodic_3_mesh_3/examples/Periodic_3_mesh_3/mesh_implicit_shape_with_subdomains.cpp +++ b/Periodic_3_mesh_3/examples/Periodic_3_mesh_3/mesh_implicit_shape_with_subdomains.cpp @@ -78,7 +78,7 @@ int main(int argc, char** argv) // Output std::ofstream medit_file("output_implicit_with_subdomains.mesh"); - CGAL::output_periodic_mesh_to_medit(medit_file, c3t3, number_of_copies_in_output); + CGAL::IO::output_periodic_mesh_to_medit(medit_file, c3t3, number_of_copies_in_output); std::cout << "EXIT SUCCESS" << std::endl; return 0; diff --git a/Periodic_3_mesh_3/include/CGAL/Periodic_3_mesh_3/IO/File_medit.h b/Periodic_3_mesh_3/include/CGAL/Periodic_3_mesh_3/IO/File_medit.h index 63c2b6bb934..dda69561ff2 100644 --- a/Periodic_3_mesh_3/include/CGAL/Periodic_3_mesh_3/IO/File_medit.h +++ b/Periodic_3_mesh_3/include/CGAL/Periodic_3_mesh_3/IO/File_medit.h @@ -330,6 +330,8 @@ void output_to_medit(std::ostream& os, } // namespace Periodic_3_mesh_3 +namespace IO { + /** * \brief outputs a periodic mesh to the .mesh file format, which can be visualized * using medit. By default, 7 copies are used, for a total of 8 instances of the domains. @@ -367,6 +369,12 @@ void output_periodic_mesh_to_medit(std::ostream& os, } } +} // namespace IO + +#ifndef CGAL_NO_DEPRECATED_CODE +using IO::output_periodic_mesh_to_medit; +#endif + } // namespace CGAL #endif // CGAL_PERIODIC_3_MESH_3_IO_FILE_MEDIT_H diff --git a/Periodic_3_mesh_3/test/Periodic_3_mesh_3/test_implicit_shapes_bunch.cpp b/Periodic_3_mesh_3/test/Periodic_3_mesh_3/test_implicit_shapes_bunch.cpp index 2609fdfc15a..b39838e6dc7 100644 --- a/Periodic_3_mesh_3/test/Periodic_3_mesh_3/test_implicit_shapes_bunch.cpp +++ b/Periodic_3_mesh_3/test/Periodic_3_mesh_3/test_implicit_shapes_bunch.cpp @@ -244,7 +244,7 @@ int main() // Output std::ofstream medit_file(file_name.c_str()); - CGAL::output_periodic_mesh_to_medit(medit_file, c3t3); + CGAL::IO::output_periodic_mesh_to_medit(medit_file, c3t3); } std::cout << "EXIT SUCCESS" << std::endl; diff --git a/Periodic_3_mesh_3/test/Periodic_3_mesh_3/test_implicit_shapes_with_features.cpp b/Periodic_3_mesh_3/test/Periodic_3_mesh_3/test_implicit_shapes_with_features.cpp index 4025ca277bb..2a297d3f89b 100644 --- a/Periodic_3_mesh_3/test/Periodic_3_mesh_3/test_implicit_shapes_with_features.cpp +++ b/Periodic_3_mesh_3/test/Periodic_3_mesh_3/test_implicit_shapes_with_features.cpp @@ -98,7 +98,7 @@ void test_protected_sphere() // Output std::ofstream medit_file_bis("protected_sphere.mesh"); - CGAL::output_periodic_mesh_to_medit(medit_file_bis, c3t3_bis); + CGAL::IO::output_periodic_mesh_to_medit(medit_file_bis, c3t3_bis); } //////////////////////////////////////////////////////////////////////////////// @@ -163,7 +163,7 @@ void test_protected_squary_cylinder() // Output std::ofstream medit_file_bis("squary_cylinder.mesh"); - CGAL::output_periodic_mesh_to_medit(medit_file_bis, c3t3_bis); + CGAL::IO::output_periodic_mesh_to_medit(medit_file_bis, c3t3_bis); } //////////////////////////////////////////////////////////////////////////////// @@ -276,7 +276,7 @@ void test_protected_squary_cylinder_2() // Output std::ofstream medit_file_bis("squary_cylinder_2.mesh"); - CGAL::output_periodic_mesh_to_medit(medit_file_bis, c3t3_bis); + CGAL::IO::output_periodic_mesh_to_medit(medit_file_bis, c3t3_bis); } //////////////////////////////////////////////////////////////////////////////// diff --git a/Periodic_3_mesh_3/test/Periodic_3_mesh_3/test_triply_periodic_minimal_surfaces.cpp b/Periodic_3_mesh_3/test/Periodic_3_mesh_3/test_triply_periodic_minimal_surfaces.cpp index 812fde428ba..cab19a02eda 100644 --- a/Periodic_3_mesh_3/test/Periodic_3_mesh_3/test_triply_periodic_minimal_surfaces.cpp +++ b/Periodic_3_mesh_3/test/Periodic_3_mesh_3/test_triply_periodic_minimal_surfaces.cpp @@ -305,7 +305,7 @@ int main(int, char**) oss_2 << iter->first << "__" << it->first << "__" << *i << ".mesh"; std::string output_filename = oss_2.str(); std::ofstream medit_file( output_filename.data() ); - CGAL::output_periodic_mesh_to_medit(medit_file, c3t3, *i); + CGAL::IO::output_periodic_mesh_to_medit(medit_file, c3t3, *i); medit_file.close(); std::cout << ", " << *i << "-copy Saved" << std::flush; diff --git a/Periodic_3_triangulation_3/examples/Periodic_3_triangulation_3/README b/Periodic_3_triangulation_3/examples/Periodic_3_triangulation_3/README index 3396740a56e..82227c8a755 100644 --- a/Periodic_3_triangulation_3/examples/Periodic_3_triangulation_3/README +++ b/Periodic_3_triangulation_3/examples/Periodic_3_triangulation_3/README @@ -13,7 +13,7 @@ class for the triangulation data structure. If the user does not need to add a type in a vertex that depends on the TriangulationDataStructure_3 (e.g. a Vertex_handle or Cell_handle), then he can use the Triangulation_vertex_base_with_info_3 class to add his own information -easily in the vertices. This example shows how to add a CGAL::Color this way. +easily in the vertices. This example shows how to add a CGAL::IO::Color this way. ------------------------------------------------------------------------------- diff --git a/Periodic_3_triangulation_3/examples/Periodic_3_triangulation_3/colored_vertices.cpp b/Periodic_3_triangulation_3/examples/Periodic_3_triangulation_3/colored_vertices.cpp index 989b702679a..73afbf028eb 100644 --- a/Periodic_3_triangulation_3/examples/Periodic_3_triangulation_3/colored_vertices.cpp +++ b/Periodic_3_triangulation_3/examples/Periodic_3_triangulation_3/colored_vertices.cpp @@ -15,7 +15,7 @@ typedef CGAL::Triangulation_vertex_base_3 Vb; typedef CGAL::Periodic_3_triangulation_ds_cell_base_3<> CbDS; typedef CGAL::Triangulation_cell_base_3 Cb; -typedef CGAL::Triangulation_vertex_base_with_info_3 VbInfo; +typedef CGAL::Triangulation_vertex_base_with_info_3 VbInfo; typedef CGAL::Triangulation_data_structure_3 TDS; typedef CGAL::Periodic_3_Delaunay_triangulation_3 P3DT3; @@ -36,7 +36,7 @@ int main(int, char**) P3DT3::Vertex_iterator vit; for (vit = T.vertices_begin(); vit != T.vertices_end(); ++vit) { if (T.degree(vit) == 16) { - vit->info() = CGAL::red(); + vit->info() = CGAL::IO::red(); } } diff --git a/Point_set_3/doc/Point_set_3/PackageDescription.txt b/Point_set_3/doc/Point_set_3/PackageDescription.txt index e8a7fec57d9..966775eda7c 100644 --- a/Point_set_3/doc/Point_set_3/PackageDescription.txt +++ b/Point_set_3/doc/Point_set_3/PackageDescription.txt @@ -82,8 +82,8 @@ These overloads, available after including `CGAL/Point_set_3/IO.h`, allow the user to call point set processing algorithms without having to handle manually property maps and iterators. -- `CGAL::read_point_set()` -- `CGAL::write_point_set()` +- `CGAL::IO::read_point_set()` +- `CGAL::IO::write_point_set()` - \link PkgPointSet3IOLAS I/O for `LAS` files \endlink - \link PkgPointSet3IOOFF I/O for `OFF` files \endlink - \link PkgPointSet3IOPLY I/O for `PLY` files \endlink diff --git a/Point_set_3/examples/Point_set_3/draw_point_set_3.cpp b/Point_set_3/examples/Point_set_3/draw_point_set_3.cpp index 1adcd7245f3..9a0d04904f9 100644 --- a/Point_set_3/examples/Point_set_3/draw_point_set_3.cpp +++ b/Point_set_3/examples/Point_set_3/draw_point_set_3.cpp @@ -16,7 +16,7 @@ int main (int argc, char** argv) const char* filename = argc > 1 ? argv[1] : "data/oni.xyz"; Point_set point_set; - if(!CGAL::read_point_set(filename, point_set)) + if(!CGAL::IO::read_point_set(filename, point_set)) { std::cerr << "Can't read input file " << filename << std::endl; return EXIT_FAILURE; diff --git a/Point_set_3/examples/Point_set_3/point_set_advanced.cpp b/Point_set_3/examples/Point_set_3/point_set_advanced.cpp index 795cc43f9f8..84dec4e5e8f 100644 --- a/Point_set_3/examples/Point_set_3/point_set_advanced.cpp +++ b/Point_set_3/examples/Point_set_3/point_set_advanced.cpp @@ -21,7 +21,7 @@ int main (int argc, char** argv) point_set.add_normal_map(); // Reading input in OFF format - if(!CGAL::read_points(filename, point_set.index_back_inserter(), + if(!CGAL::IO::read_points(filename, point_set.index_back_inserter(), CGAL::parameters::point_map(point_set.point_push_map()) .normal_map(point_set.normal_push_map()))) { diff --git a/Point_set_3/examples/Point_set_3/point_set_read_ply.cpp b/Point_set_3/examples/Point_set_3/point_set_read_ply.cpp index 5a58de114cb..e59c33b4e93 100644 --- a/Point_set_3/examples/Point_set_3/point_set_read_ply.cpp +++ b/Point_set_3/examples/Point_set_3/point_set_read_ply.cpp @@ -19,7 +19,7 @@ int main (int argc, char** argv) Point_set point_set; - if(!CGAL::read_PLY(f, point_set)) // same as `f >> point_set` + if(!CGAL::IO::read_PLY(f, point_set)) // same as `f >> point_set` { std::cerr << "Can't read input file " << std::endl; return EXIT_FAILURE; @@ -45,11 +45,11 @@ int main (int argc, char** argv) if(argc > 2 && strcmp (argv[2], "-b") == 0) // Optional binary output { - CGAL::write_PLY("out.ply", point_set, CGAL::parameters::stream_precision(17)); + CGAL::IO::write_PLY("out.ply", point_set, CGAL::parameters::stream_precision(17)); } else // ASCII output { - CGAL::write_PLY("out.ply", point_set, CGAL::parameters::stream_precision(17) + CGAL::IO::write_PLY("out.ply", point_set, CGAL::parameters::stream_precision(17) .use_binary_mode(false)); } diff --git a/Point_set_3/examples/Point_set_3/point_set_read_xyz.cpp b/Point_set_3/examples/Point_set_3/point_set_read_xyz.cpp index c9ce2d6e757..f5337e3f7fa 100644 --- a/Point_set_3/examples/Point_set_3/point_set_read_xyz.cpp +++ b/Point_set_3/examples/Point_set_3/point_set_read_xyz.cpp @@ -18,7 +18,7 @@ int main (int argc, char** argv) // Reading input Point_set point_set; - if(!CGAL::read_XYZ(fname, point_set)) + if(!CGAL::IO::read_XYZ(fname, point_set)) { std::cerr << "Can't read input file " << std::endl; return EXIT_FAILURE; @@ -36,7 +36,7 @@ int main (int argc, char** argv) } // Writing result in OFF format - if(!CGAL::write_OFF("normalized_normals.off", point_set, CGAL::parameters::stream_precision(17))) + if(!CGAL::IO::write_OFF("normalized_normals.off", point_set, CGAL::parameters::stream_precision(17))) return EXIT_FAILURE; return EXIT_SUCCESS; diff --git a/Point_set_3/include/CGAL/Point_set_3/IO.h b/Point_set_3/include/CGAL/Point_set_3/IO.h index 340977be711..b0da6a026d8 100644 --- a/Point_set_3/include/CGAL/Point_set_3/IO.h +++ b/Point_set_3/include/CGAL/Point_set_3/IO.h @@ -128,7 +128,7 @@ bool read_point_set(const std::string& fname, CGAL::Point_set_3& ps, const CGAL_BGL_NP_CLASS& np) { - const std::string ext = IO::internal::get_file_extension(fname); + const std::string ext = internal::get_file_extension(fname); if(ext == "xyz" || ext == "pwn") return read_XYZ(fname, ps); @@ -228,7 +228,7 @@ bool write_point_set(const std::string& fname, CGAL::Point_set_3& ps, const CGAL_BGL_NP_CLASS& np) { - const std::string ext = IO::internal::get_file_extension(fname); + const std::string ext = internal::get_file_extension(fname); if(ext == "xyz") return write_XYZ(fname, ps, np); diff --git a/Point_set_3/include/CGAL/Point_set_3/IO/LAS.h b/Point_set_3/include/CGAL/Point_set_3/IO/LAS.h index 140dedacc51..be66ddb97dd 100644 --- a/Point_set_3/include/CGAL/Point_set_3/IO/LAS.h +++ b/Point_set_3/include/CGAL/Point_set_3/IO/LAS.h @@ -172,7 +172,7 @@ bool read_LAS(const std::string& fname, CGAL::Point_set_3& point_ \ingroup PkgPointSet3IODeprecated \deprecated This function is deprecated since \cgal 5.2, - \link PkgPointSet3IO `CGAL::read_LAS()` \endlink should be used instead. + \link PkgPointSet3IO `CGAL::IO::read_LAS()` \endlink should be used instead. */ template CGAL_DEPRECATED bool read_las_point_set(std::istream& is, ///< input stream. @@ -408,7 +408,7 @@ bool write_LAS(const std::string& fname, \ingroup PkgPointSet3IODeprecated \deprecated This function is deprecated since \cgal 5.2, - \link PkgPointSet3IO `CGAL::write_LAS()` \endlink should be used instead. + \link PkgPointSet3IO `CGAL::IO::write_LAS()` \endlink should be used instead. */ template CGAL_DEPRECATED bool write_las_point_set(std::ostream& os, ///< output stream. diff --git a/Point_set_3/include/CGAL/Point_set_3/IO/OFF.h b/Point_set_3/include/CGAL/Point_set_3/IO/OFF.h index 56c5babf653..3f37d0cf911 100644 --- a/Point_set_3/include/CGAL/Point_set_3/IO/OFF.h +++ b/Point_set_3/include/CGAL/Point_set_3/IO/OFF.h @@ -104,13 +104,13 @@ bool read_OFF(const std::string& fname, CGAL::Point_set_3& point_ \ingroup PkgPointSet3IODeprecated \deprecated This function is deprecated since \cgal 5.2, - \link PkgPointSet3IO `CGAL::read_OFF()` \endlink should be used instead. + \link PkgPointSet3IO `CGAL::IO::read_OFF()` \endlink should be used instead. */ template CGAL_DEPRECATED bool read_off_point_set(std::istream& is, ///< input stream. CGAL::Point_set_3& point_set) ///< point set. { - return read_OFF(is, point_set); + return IO::read_OFF(is, point_set); } #endif // CGAL_NO_DEPRECATED_CODE @@ -221,13 +221,13 @@ bool write_OFF(const std::string& fname, const CGAL::Point_set_3& \ingroup PkgPointSet3IODeprecated \deprecated This function is deprecated since \cgal 5.2, - \link PkgPointSet3IO `CGAL::write_OFF()` \endlink should be used instead. + \link PkgPointSet3IO `CGAL::IO::write_OFF()` \endlink should be used instead. */ template CGAL_DEPRECATED bool write_off_point_set(std::ostream& os, ///< output stream. const CGAL::Point_set_3& point_set) ///< point set { - return write_OFF(os, point_set); + return IO::write_OFF(os, point_set); } #endif // CGAL_NO_DEPRECATED_CODE diff --git a/Point_set_3/include/CGAL/Point_set_3/IO/PLY.h b/Point_set_3/include/CGAL/Point_set_3/IO/PLY.h index cf8da2e5401..c6966fd553b 100644 --- a/Point_set_3/include/CGAL/Point_set_3/IO/PLY.h +++ b/Point_set_3/include/CGAL/Point_set_3/IO/PLY.h @@ -97,7 +97,7 @@ public: for(std::size_t j=0; jname(); if(name == "x" || @@ -253,8 +253,8 @@ bool read_PLY(std::istream& is, return false; } - IO::internal::PLY_reader reader(true); - IO::internal::Point_set_3_filler filler(point_set); + internal::PLY_reader reader(true); + internal::Point_set_3_filler filler(point_set); if(!(reader.init(is))) { @@ -266,7 +266,7 @@ bool read_PLY(std::istream& is, for(std::size_t i=0; iget(is); if(is.fail()) return false; @@ -392,7 +392,7 @@ bool read_PLY(const std::string& fname, CGAL::Point_set_3& point_ \ingroup PkgPointSet3IODeprecated \deprecated This function is deprecated since \cgal 5.2, - \link PkgPointSet3IO `CGAL::read_PLY()` \endlink should be used instead. + \link PkgPointSet3IO `CGAL::IO::read_PLY()` \endlink should be used instead. \brief reads a point set with properties from an input stream in ASCII or Binary PLY format. @@ -792,7 +792,7 @@ bool write_PLY(const std::string& fname, const CGAL::Point_set_3& \ingroup PkgPointSet3IODeprecated \deprecated This function is deprecated since \cgal 5.2, - \link PkgPointSet3IO `CGAL::write_PLY()` \endlink should be used instead. + \link PkgPointSet3IO `CGAL::IO::write_PLY()` \endlink should be used instead. */ template CGAL_DEPRECATED bool write_ply_point_set(std::ostream& os, diff --git a/Point_set_3/include/CGAL/Point_set_3/IO/XYZ.h b/Point_set_3/include/CGAL/Point_set_3/IO/XYZ.h index 2150e6a817b..c74a184011c 100644 --- a/Point_set_3/include/CGAL/Point_set_3/IO/XYZ.h +++ b/Point_set_3/include/CGAL/Point_set_3/IO/XYZ.h @@ -103,7 +103,7 @@ bool read_XYZ(const std::string& fname, CGAL::Point_set_3& point_ \ingroup PkgPointSet3IODeprecated \deprecated This function is deprecated since \cgal 5.2, - \link PkgPointSet3IO `CGAL::read_XYZ()` \endlink should be used instead. + \link PkgPointSet3IO `CGAL::IO::read_XYZ()` \endlink should be used instead. */ template CGAL_DEPRECATED bool read_xyz_point_set(std::istream& is, CGAL::Point_set_3& point_set) @@ -218,7 +218,7 @@ bool write_XYZ(const std::string& fname, const CGAL::Point_set_3& \ingroup PkgPointSet3IODeprecated \deprecated This function is deprecated since \cgal 5.2, - \link PkgPointSet3IO `CGAL::write_XYZ()` \endlink should be used instead. + \link PkgPointSet3IO `CGAL::IO::write_XYZ()` \endlink should be used instead. */ template CGAL_DEPRECATED bool write_xyz_point_set(std::ostream& os, const CGAL::Point_set_3& point_set) diff --git a/Point_set_3/test/Point_set_3/point_set_test.cpp b/Point_set_3/test/Point_set_3/point_set_test.cpp index 1e03a609caf..1adfaca14a6 100644 --- a/Point_set_3/test/Point_set_3/point_set_test.cpp +++ b/Point_set_3/test/Point_set_3/point_set_test.cpp @@ -36,7 +36,7 @@ int main (int, char**) test (point_set.has_normal_map(), "point set should have normals."); const char* fname ("data/oni.pwn"); - if(!CGAL::read_point_set(fname, point_set)) + if(!CGAL::IO::read_point_set(fname, point_set)) { test (false, "failed to read input point set."); return EXIT_FAILURE; diff --git a/Point_set_processing_3/include/CGAL/IO/read_las_points.h b/Point_set_processing_3/include/CGAL/IO/read_las_points.h index 81148189230..a4416b9e51b 100644 --- a/Point_set_processing_3/include/CGAL/IO/read_las_points.h +++ b/Point_set_processing_3/include/CGAL/IO/read_las_points.h @@ -609,7 +609,7 @@ bool read_las_points(std::istream& is, ///< input stream. /** \ingroup PkgPointSetProcessing3IODeprecated - \deprecated This function is deprecated since \cgal 5.2, `CGAL::read_LAS_with_properties()` should be used instead. + \deprecated This function is deprecated since \cgal 5.2, `CGAL::IO::read_LAS_with_properties()` should be used instead. */ template CGAL_DEPRECATED bool read_ply_points_with_properties(std::istream& is, OutputIterator output, PropertyHandler&& ... properties) @@ -492,7 +492,7 @@ CGAL_DEPRECATED bool read_ply_points_with_properties(std::istream& is, OutputIte \ingroup PkgPointSetProcessing3IODeprecated \deprecated This function is deprecated since \cgal 5.2, - \link PkgPointSetProcessing3IOPly `CGAL::read_PLY()` \endlink should be used instead. + \link PkgPointSetProcessing3IOPly `CGAL::IO::read_PLY()` \endlink should be used instead. */ template CGAL_DEPRECATED bool read_ply_points(std::istream& is, OutputIterator output, const CGAL_BGL_NP_CLASS& np) diff --git a/Point_set_processing_3/include/CGAL/IO/read_xyz_points.h b/Point_set_processing_3/include/CGAL/IO/read_xyz_points.h index 0fe8b27888f..dd9c5fc5a6a 100644 --- a/Point_set_processing_3/include/CGAL/IO/read_xyz_points.h +++ b/Point_set_processing_3/include/CGAL/IO/read_xyz_points.h @@ -428,7 +428,7 @@ bool read_xyz_points(std::istream& is, ///< input stream. \ingroup PkgPointSetProcessing3IODeprecated \deprecated This function is deprecated since \cgal 5.2, - \link PkgPointSetProcessing3IOXyz `CGAL::read_XYZ()` \endlink should be used instead. + \link PkgPointSetProcessing3IOXyz `CGAL::IO::read_XYZ()` \endlink should be used instead. \returns `true` if reading was successful, `false` otherwise. */ diff --git a/Point_set_processing_3/include/CGAL/IO/write_las_points.h b/Point_set_processing_3/include/CGAL/IO/write_las_points.h index 56bd3144229..eb4b33fb763 100644 --- a/Point_set_processing_3/include/CGAL/IO/write_las_points.h +++ b/Point_set_processing_3/include/CGAL/IO/write_las_points.h @@ -408,7 +408,7 @@ bool write_las_points(std::ostream& os, ///< output stream. /** \ingroup PkgPointSetProcessing3IODeprecated - \deprecated This function is deprecated since \cgal 5.2, `CGAL::write_LAS_with_properties()` should be used instead. + \deprecated This function is deprecated since \cgal 5.2, `CGAL::IO::write_LAS_with_properties()` should be used instead. */ template bool write_las_points(std::ostream& os, const PointRange& points, const CGAL_BGL_NP_CLASS& np) diff --git a/Point_set_processing_3/include/CGAL/IO/write_off_points.h b/Point_set_processing_3/include/CGAL/IO/write_off_points.h index 5b7b59d5d6e..83bf88aa5b3 100644 --- a/Point_set_processing_3/include/CGAL/IO/write_off_points.h +++ b/Point_set_processing_3/include/CGAL/IO/write_off_points.h @@ -324,7 +324,7 @@ bool write_off_points(std::ostream& os, ///< output stream. \ingroup PkgPointSetProcessing3IODeprecated \deprecated This function is deprecated since \cgal 5.2, - \link PkgPointSetProcessing3IOOff `CGAL::write_OFF()` \endlink should be used instead. + \link PkgPointSetProcessing3IOOff `CGAL::IO::write_OFF()` \endlink should be used instead. */ template CGAL_DEPRECATED bool write_off_points(std::ostream& os, const PointRange& points, const CGAL_BGL_NP_CLASS& np) diff --git a/Point_set_processing_3/include/CGAL/IO/write_ply_points.h b/Point_set_processing_3/include/CGAL/IO/write_ply_points.h index 994e6ccfcfa..bbb379f84cb 100644 --- a/Point_set_processing_3/include/CGAL/IO/write_ply_points.h +++ b/Point_set_processing_3/include/CGAL/IO/write_ply_points.h @@ -381,7 +381,7 @@ bool write_ply_points(std::ostream& os, ///< output stream. \ingroup PkgPointSetProcessing3IODeprecated \deprecated This function is deprecated since \cgal 5.2, - \link PkgPointSetProcessing3IOPly `CGAL::write_PLY_with_properties()` \endlink should be used instead. + \link PkgPointSetProcessing3IOPly `CGAL::IO::write_PLY_with_properties()` \endlink should be used instead. */ template @@ -396,7 +396,7 @@ CGAL_DEPRECATED bool write_ply_points_with_properties(std::ostream& os, ///< out \ingroup PkgPointSetProcessing3IODeprecated \deprecated This function is deprecated since \cgal 5.2, - \link PkgPointSetProcessing3IOPly `CGAL::write_PLY()` \endlink should be used instead. + \link PkgPointSetProcessing3IOPly `CGAL::IO::write_PLY()` \endlink should be used instead. */ template CGAL_DEPRECATED bool write_ply_points(std::ostream& os, const PointRange& points, const CGAL_BGL_NP_CLASS& np) diff --git a/Poisson_surface_reconstruction_3/examples/Poisson_surface_reconstruction_3/poisson_reconstruction.cpp b/Poisson_surface_reconstruction_3/examples/Poisson_surface_reconstruction_3/poisson_reconstruction.cpp index fdbf3a92357..b958d1a23d3 100644 --- a/Poisson_surface_reconstruction_3/examples/Poisson_surface_reconstruction_3/poisson_reconstruction.cpp +++ b/Poisson_surface_reconstruction_3/examples/Poisson_surface_reconstruction_3/poisson_reconstruction.cpp @@ -187,9 +187,9 @@ int main(int argc, char * argv[]) // Reads the point set file in points[]. // Note: read_points() requires an iterator over points // + property maps to access each point's position and normal. - if (!CGAL::read_points(input_filename.c_str(), std::back_inserter(points), - CGAL::parameters::point_map(CGAL::make_first_of_pair_property_map(Point_with_normal())) - .normal_map(CGAL::make_second_of_pair_property_map(Point_with_normal())))) + if (!CGAL::IO::read_points(input_filename.c_str(), std::back_inserter(points), + CGAL::parameters::point_map(CGAL::make_first_of_pair_property_map(Point_with_normal())) + .normal_map(CGAL::make_second_of_pair_property_map(Point_with_normal())))) { std::cerr << "Error: cannot read input file!" << input_filename << std::endl; return EXIT_FAILURE; diff --git a/Poisson_surface_reconstruction_3/examples/Poisson_surface_reconstruction_3/poisson_reconstruction_example.cpp b/Poisson_surface_reconstruction_3/examples/Poisson_surface_reconstruction_3/poisson_reconstruction_example.cpp index 5495f15ec8e..da42893dc93 100644 --- a/Poisson_surface_reconstruction_3/examples/Poisson_surface_reconstruction_3/poisson_reconstruction_example.cpp +++ b/Poisson_surface_reconstruction_3/examples/Poisson_surface_reconstruction_3/poisson_reconstruction_example.cpp @@ -43,7 +43,7 @@ int main(void) // Note: read_points() requires an iterator over points // + property maps to access each point's position and normal. PointList points; - if(!CGAL::read_points("data/kitten.xyz", std::back_inserter(points), + if(!CGAL::IO::read_points("data/kitten.xyz", std::back_inserter(points), CGAL::parameters::point_map(Point_map()) .normal_map (Normal_map()))) { diff --git a/Poisson_surface_reconstruction_3/examples/Poisson_surface_reconstruction_3/poisson_reconstruction_function.cpp b/Poisson_surface_reconstruction_3/examples/Poisson_surface_reconstruction_3/poisson_reconstruction_function.cpp index f12f9e2cc6a..ef45d80cdde 100644 --- a/Poisson_surface_reconstruction_3/examples/Poisson_surface_reconstruction_3/poisson_reconstruction_function.cpp +++ b/Poisson_surface_reconstruction_3/examples/Poisson_surface_reconstruction_3/poisson_reconstruction_function.cpp @@ -17,9 +17,9 @@ int main(void) { std::vector points; - if(!CGAL::read_points("data/kitten.xyz", std::back_inserter(points), - CGAL::parameters::point_map(CGAL::First_of_pair_property_map()) - .normal_map(CGAL::Second_of_pair_property_map()))) + if(!CGAL::IO::read_points("data/kitten.xyz", std::back_inserter(points), + CGAL::parameters::point_map(CGAL::First_of_pair_property_map()) + .normal_map(CGAL::Second_of_pair_property_map()))) { std::cerr << "Error: cannot read input file!" << std::endl; return EXIT_FAILURE; diff --git a/Poisson_surface_reconstruction_3/examples/Poisson_surface_reconstruction_3/tutorial_example.cpp b/Poisson_surface_reconstruction_3/examples/Poisson_surface_reconstruction_3/tutorial_example.cpp index a763eb28516..53fa20806e5 100644 --- a/Poisson_surface_reconstruction_3/examples/Poisson_surface_reconstruction_3/tutorial_example.cpp +++ b/Poisson_surface_reconstruction_3/examples/Poisson_surface_reconstruction_3/tutorial_example.cpp @@ -141,7 +141,7 @@ int main(int argc, char*argv[]) std::ofstream f ("out.ply", std::ios_base::binary); CGAL::set_binary_mode (f); - CGAL::write_PLY(f, output_mesh); + CGAL::IO::write_PLY(f, output_mesh); f.close (); //! [Output poisson] diff --git a/Poisson_surface_reconstruction_3/test/Poisson_surface_reconstruction_3/poisson_and_parallel_mesh_3.cpp b/Poisson_surface_reconstruction_3/test/Poisson_surface_reconstruction_3/poisson_and_parallel_mesh_3.cpp index cd97fccbb99..8de4b572bff 100644 --- a/Poisson_surface_reconstruction_3/test/Poisson_surface_reconstruction_3/poisson_and_parallel_mesh_3.cpp +++ b/Poisson_surface_reconstruction_3/test/Poisson_surface_reconstruction_3/poisson_and_parallel_mesh_3.cpp @@ -39,7 +39,7 @@ int main(int, char**) std::ifstream stream("data/oni.pwn"); if (!stream || - !CGAL::read_XYZ + !CGAL::IO::read_XYZ (stream, std::back_inserter(points), CGAL::parameters:: point_map(Point_map()). diff --git a/Poisson_surface_reconstruction_3/test/Poisson_surface_reconstruction_3/poisson_reconstruction_test.cpp b/Poisson_surface_reconstruction_3/test/Poisson_surface_reconstruction_3/poisson_reconstruction_test.cpp index 6bdd6b504c8..760e505dc27 100644 --- a/Poisson_surface_reconstruction_3/test/Poisson_surface_reconstruction_3/poisson_reconstruction_test.cpp +++ b/Poisson_surface_reconstruction_3/test/Poisson_surface_reconstruction_3/poisson_reconstruction_test.cpp @@ -138,7 +138,7 @@ int main(int argc, char * argv[]) // Note: read_points() requires an iterator over points // + property maps to access each point's position and normal. // The position property map can be omitted here as we use iterators over Point_3 elements. - if (!CGAL::read_points( + if (!CGAL::IO::read_points( input_filename.c_str(), std::back_inserter(points), CGAL::parameters::normal_map diff --git a/Polygon/include/CGAL/draw_polygon_2.h b/Polygon/include/CGAL/draw_polygon_2.h index 60522c9263d..fc4ad6f6567 100644 --- a/Polygon/include/CGAL/draw_polygon_2.h +++ b/Polygon/include/CGAL/draw_polygon_2.h @@ -74,7 +74,7 @@ protected: Point prev=p2.vertex(p2.size()-1); - CGAL::Color c(75,160,255); + CGAL::IO::Color c(75,160,255); face_begin(c); for (typename P2::Vertex_const_iterator i=p2.vertices_begin(); diff --git a/Polygon/include/CGAL/draw_polygon_with_holes_2.h b/Polygon/include/CGAL/draw_polygon_with_holes_2.h index 0781eb883f7..7b420eea9b6 100644 --- a/Polygon/include/CGAL/draw_polygon_with_holes_2.h +++ b/Polygon/include/CGAL/draw_polygon_with_holes_2.h @@ -91,7 +91,7 @@ protected: if (p2.outer_boundary().is_empty()) return; - CGAL::Color c(75,160,255); + CGAL::IO::Color c(75,160,255); face_begin(c); compute_one_loop_elements(p2.outer_boundary(), false); diff --git a/Polygon_mesh_processing/doc/Polygon_mesh_processing/PackageDescription.txt b/Polygon_mesh_processing/doc/Polygon_mesh_processing/PackageDescription.txt index 860b966cdcd..8e5e7c71448 100644 --- a/Polygon_mesh_processing/doc/Polygon_mesh_processing/PackageDescription.txt +++ b/Polygon_mesh_processing/doc/Polygon_mesh_processing/PackageDescription.txt @@ -227,6 +227,6 @@ The page \ref bgl_namedparameters "Named Parameters" describes their usage. - `CGAL::Polygon_mesh_processing::transform()` \cgalCRPSection{I/O Functions} -- \link PMP_IO_grp `CGAL::Polygon_mesh_processing::read_polygon_mesh()`\endlink +- \link PMP_IO_grp `CGAL::Polygon_mesh_processing::IO::read_polygon_mesh()`\endlink */ diff --git a/Polygon_mesh_processing/doc/Polygon_mesh_processing/Polygon_mesh_processing.txt b/Polygon_mesh_processing/doc/Polygon_mesh_processing/Polygon_mesh_processing.txt index 0a5ed04fdd6..bfd466412fb 100644 --- a/Polygon_mesh_processing/doc/Polygon_mesh_processing/Polygon_mesh_processing.txt +++ b/Polygon_mesh_processing/doc/Polygon_mesh_processing/Polygon_mesh_processing.txt @@ -58,7 +58,7 @@ In all functions of this package, the polygon meshes are required to be models of the graph concepts defined in the package \ref PkgBGLRef. Using common graph concepts enables having common input/output functions for all the models of these concepts. The page \ref PkgBGLIOFct provides an exhaustive description of the available I/O functions. -In addition, this package offers the function `CGAL::Polygon_mesh_processing::read_polygon_mesh()`, +In addition, this package offers the function `CGAL::Polygon_mesh_processing::IO::read_polygon_mesh()`, which can perform some reparation if the input data do not represent a manifold surface. **************************************** diff --git a/Polygon_mesh_processing/examples/Polygon_mesh_processing/compute_normals_example.cpp b/Polygon_mesh_processing/examples/Polygon_mesh_processing/compute_normals_example.cpp index 62a9174d816..ae64831a611 100644 --- a/Polygon_mesh_processing/examples/Polygon_mesh_processing/compute_normals_example.cpp +++ b/Polygon_mesh_processing/examples/Polygon_mesh_processing/compute_normals_example.cpp @@ -23,7 +23,7 @@ int main(int argc, char* argv[]) const char* filename = (argc > 1) ? argv[1] : "data/eight.off"; Surface_mesh mesh; - if(!PMP::read_polygon_mesh(filename, mesh)) + if(!PMP::IO::read_polygon_mesh(filename, mesh)) { std::cerr << "Invalid input." << std::endl; return 1; diff --git a/Polygon_mesh_processing/examples/Polygon_mesh_processing/compute_normals_example_Polyhedron.cpp b/Polygon_mesh_processing/examples/Polygon_mesh_processing/compute_normals_example_Polyhedron.cpp index b8c732a0c1b..72f8b9a0fa0 100644 --- a/Polygon_mesh_processing/examples/Polygon_mesh_processing/compute_normals_example_Polyhedron.cpp +++ b/Polygon_mesh_processing/examples/Polygon_mesh_processing/compute_normals_example_Polyhedron.cpp @@ -27,7 +27,7 @@ int main(int argc, char* argv[]) const char* filename = (argc > 1) ? argv[1] : "data/eight.off"; Polyhedron mesh; - if(!PMP::read_polygon_mesh(filename, mesh)) + if(!PMP::IO::read_polygon_mesh(filename, mesh)) { std::cerr << "Invalid input." << std::endl; return 1; diff --git a/Polygon_mesh_processing/examples/Polygon_mesh_processing/connected_components_example.cpp b/Polygon_mesh_processing/examples/Polygon_mesh_processing/connected_components_example.cpp index b0dd145c427..a0c70aad6cb 100644 --- a/Polygon_mesh_processing/examples/Polygon_mesh_processing/connected_components_example.cpp +++ b/Polygon_mesh_processing/examples/Polygon_mesh_processing/connected_components_example.cpp @@ -74,7 +74,7 @@ int main(int argc, char* argv[]) const char* filename = (argc > 1) ? argv[1] : "data/blobby_3cc.off"; Mesh mesh; - if(!PMP::read_polygon_mesh(filename, mesh)) + if(!PMP::IO::read_polygon_mesh(filename, mesh)) { std::cerr << "Invalid input." << std::endl; return 1; diff --git a/Polygon_mesh_processing/examples/Polygon_mesh_processing/corefinement_LCC.cpp b/Polygon_mesh_processing/examples/Polygon_mesh_processing/corefinement_LCC.cpp index dd9749b2682..c3c74c76457 100644 --- a/Polygon_mesh_processing/examples/Polygon_mesh_processing/corefinement_LCC.cpp +++ b/Polygon_mesh_processing/examples/Polygon_mesh_processing/corefinement_LCC.cpp @@ -20,7 +20,7 @@ int main(int argc, char* argv[]) const char* filename2 = (argc > 2) ? argv[2] : "data/eight.off"; LCC mesh1, mesh2; - if(!PMP::read_polygon_mesh(filename1, mesh1) || !PMP::read_polygon_mesh(filename2, mesh2)) + if(!PMP::IO::read_polygon_mesh(filename1, mesh1) || !PMP::IO::read_polygon_mesh(filename2, mesh2)) { std::cerr << "Invalid input." << std::endl; return 1; @@ -38,10 +38,10 @@ int main(int argc, char* argv[]) std::ofstream output("mesh1_refined.off"); output.precision(17); - CGAL::write_OFF(output, mesh1); + CGAL::IO::write_OFF(output, mesh1); output.close(); output.open("mesh2_refined.off"); - CGAL::write_OFF(output, mesh2); + CGAL::IO::write_OFF(output, mesh2); output.close(); return 0; diff --git a/Polygon_mesh_processing/examples/Polygon_mesh_processing/corefinement_SM.cpp b/Polygon_mesh_processing/examples/Polygon_mesh_processing/corefinement_SM.cpp index e4660e6fdef..2968f4ccce3 100644 --- a/Polygon_mesh_processing/examples/Polygon_mesh_processing/corefinement_SM.cpp +++ b/Polygon_mesh_processing/examples/Polygon_mesh_processing/corefinement_SM.cpp @@ -18,7 +18,7 @@ int main(int argc, char* argv[]) const char* filename2 = (argc > 2) ? argv[2] : "data/eight.off"; Mesh mesh1, mesh2; - if(!PMP::read_polygon_mesh(filename1, mesh1) || !PMP::read_polygon_mesh(filename2, mesh2)) + if(!PMP::IO::read_polygon_mesh(filename1, mesh1) || !PMP::IO::read_polygon_mesh(filename2, mesh2)) { std::cerr << "Invalid input." << std::endl; return 1; @@ -34,8 +34,8 @@ int main(int argc, char* argv[]) << num_vertices(mesh1) << " and " << num_vertices(mesh2) << "\n"; - CGAL::write_polygon_mesh("mesh1_refined.off", mesh1, CGAL::parameters::stream_precision(17)); - CGAL::write_polygon_mesh("mesh2_refined.off", mesh2, CGAL::parameters::stream_precision(17)); + CGAL::IO::write_polygon_mesh("mesh1_refined.off", mesh1, CGAL::parameters::stream_precision(17)); + CGAL::IO::write_polygon_mesh("mesh2_refined.off", mesh2, CGAL::parameters::stream_precision(17)); return 0; } diff --git a/Polygon_mesh_processing/examples/Polygon_mesh_processing/corefinement_consecutive_bool_op.cpp b/Polygon_mesh_processing/examples/Polygon_mesh_processing/corefinement_consecutive_bool_op.cpp index 5c70a466b34..5aa7e826c4d 100644 --- a/Polygon_mesh_processing/examples/Polygon_mesh_processing/corefinement_consecutive_bool_op.cpp +++ b/Polygon_mesh_processing/examples/Polygon_mesh_processing/corefinement_consecutive_bool_op.cpp @@ -69,7 +69,7 @@ int main(int argc, char* argv[]) const char* filename2 = (argc > 2) ? argv[2] : "data/eight.off"; Mesh mesh1, mesh2; - if(!PMP::read_polygon_mesh(filename1, mesh1) || !PMP::read_polygon_mesh(filename2, mesh2)) + if(!PMP::IO::read_polygon_mesh(filename1, mesh1) || !PMP::IO::read_polygon_mesh(filename2, mesh2)) { std::cerr << "Invalid input." << std::endl; return 1; @@ -99,7 +99,7 @@ int main(int argc, char* argv[]) params::vertex_point_map(mesh2_vpm) ) ) { std::cout << "Intersection and union were successfully computed\n"; - CGAL::write_polygon_mesh("inter_union.off", mesh2, CGAL::parameters::stream_precision(17)); + CGAL::IO::write_polygon_mesh("inter_union.off", mesh2, CGAL::parameters::stream_precision(17)); return 0; } diff --git a/Polygon_mesh_processing/examples/Polygon_mesh_processing/corefinement_difference_remeshed.cpp b/Polygon_mesh_processing/examples/Polygon_mesh_processing/corefinement_difference_remeshed.cpp index 54df02b8707..91a926f46b8 100644 --- a/Polygon_mesh_processing/examples/Polygon_mesh_processing/corefinement_difference_remeshed.cpp +++ b/Polygon_mesh_processing/examples/Polygon_mesh_processing/corefinement_difference_remeshed.cpp @@ -40,7 +40,7 @@ int main(int argc, char* argv[]) const char* filename2 = (argc > 2) ? argv[2] : "data/eight.off"; Mesh mesh1, mesh2; - if(!PMP::read_polygon_mesh(filename1, mesh1) || !PMP::read_polygon_mesh(filename2, mesh2)) + if(!PMP::IO::read_polygon_mesh(filename1, mesh1) || !PMP::IO::read_polygon_mesh(filename2, mesh2)) { std::cerr << "Invalid input." << std::endl; return 1; @@ -63,7 +63,7 @@ int main(int argc, char* argv[]) if (valid_difference) { std::cout << "Difference was successfully computed\n"; - CGAL::write_polygon_mesh("difference.off", mesh1, CGAL::parameters::stream_precision(17)); + CGAL::IO::write_polygon_mesh("difference.off", mesh1, CGAL::parameters::stream_precision(17)); } else { @@ -103,7 +103,7 @@ int main(int argc, char* argv[]) PMP::isotropic_remeshing(selected_faces, 0.02, mesh1, params::edge_is_constrained_map(is_constrained_map)); - CGAL::write_polygon_mesh("difference_remeshed.off", mesh1, CGAL::parameters::stream_precision(17)); + CGAL::IO::write_polygon_mesh("difference_remeshed.off", mesh1, CGAL::parameters::stream_precision(17)); return 0; } diff --git a/Polygon_mesh_processing/examples/Polygon_mesh_processing/corefinement_mesh_union.cpp b/Polygon_mesh_processing/examples/Polygon_mesh_processing/corefinement_mesh_union.cpp index be53bb63b82..feb74ddf134 100644 --- a/Polygon_mesh_processing/examples/Polygon_mesh_processing/corefinement_mesh_union.cpp +++ b/Polygon_mesh_processing/examples/Polygon_mesh_processing/corefinement_mesh_union.cpp @@ -17,7 +17,7 @@ int main(int argc, char* argv[]) const char* filename2 = (argc > 2) ? argv[2] : "data/eight.off"; Mesh mesh1, mesh2; - if(!PMP::read_polygon_mesh(filename1, mesh1) || !PMP::read_polygon_mesh(filename2, mesh2)) + if(!PMP::IO::read_polygon_mesh(filename1, mesh1) || !PMP::IO::read_polygon_mesh(filename2, mesh2)) { std::cerr << "Invalid input." << std::endl; return 1; @@ -29,7 +29,7 @@ int main(int argc, char* argv[]) if(valid_union) { std::cout << "Union was successfully computed\n"; - CGAL::write_polygon_mesh("union.off", out, CGAL::parameters::stream_precision(17)); + CGAL::IO::write_polygon_mesh("union.off", out, CGAL::parameters::stream_precision(17)); return 0; } diff --git a/Polygon_mesh_processing/examples/Polygon_mesh_processing/corefinement_mesh_union_and_intersection.cpp b/Polygon_mesh_processing/examples/Polygon_mesh_processing/corefinement_mesh_union_and_intersection.cpp index 2ea59a2ac90..56ded659e4d 100644 --- a/Polygon_mesh_processing/examples/Polygon_mesh_processing/corefinement_mesh_union_and_intersection.cpp +++ b/Polygon_mesh_processing/examples/Polygon_mesh_processing/corefinement_mesh_union_and_intersection.cpp @@ -19,7 +19,7 @@ int main(int argc, char* argv[]) const char* filename2 = (argc > 2) ? argv[2] : "data/eight.off"; Mesh mesh1, mesh2; - if(!PMP::read_polygon_mesh(filename1, mesh1) || !PMP::read_polygon_mesh(filename2, mesh2)) + if(!PMP::IO::read_polygon_mesh(filename1, mesh1) || !PMP::IO::read_polygon_mesh(filename2, mesh2)) { std::cerr << "Invalid input." << std::endl; return 1; @@ -48,7 +48,7 @@ int main(int argc, char* argv[]) if (res[PMP::Corefinement::UNION]) { std::cout << "Union was successfully computed\n"; - CGAL::write_polygon_mesh("union.off", out_union, CGAL::parameters::stream_precision(17)); + CGAL::IO::write_polygon_mesh("union.off", out_union, CGAL::parameters::stream_precision(17)); } else std::cout << "Union could not be computed\n"; @@ -56,7 +56,7 @@ int main(int argc, char* argv[]) if (res[PMP::Corefinement::INTERSECTION]) { std::cout << "Intersection was successfully computed\n"; - CGAL::write_polygon_mesh("intersection.off", out_intersection, CGAL::parameters::stream_precision(17)); + CGAL::IO::write_polygon_mesh("intersection.off", out_intersection, CGAL::parameters::stream_precision(17)); } else std::cout << "Intersection could not be computed\n"; diff --git a/Polygon_mesh_processing/examples/Polygon_mesh_processing/corefinement_mesh_union_with_attributes.cpp b/Polygon_mesh_processing/examples/Polygon_mesh_processing/corefinement_mesh_union_with_attributes.cpp index 787844be103..d40fbe0e903 100644 --- a/Polygon_mesh_processing/examples/Polygon_mesh_processing/corefinement_mesh_union_with_attributes.cpp +++ b/Polygon_mesh_processing/examples/Polygon_mesh_processing/corefinement_mesh_union_with_attributes.cpp @@ -52,7 +52,7 @@ int main(int argc, char* argv[]) const char* filename2 = (argc > 2) ? argv[2] : "data/eight.off"; Mesh mesh1, mesh2; - if(!PMP::read_polygon_mesh(filename1, mesh1) || !PMP::read_polygon_mesh(filename2, mesh2)) + if(!PMP::IO::read_polygon_mesh(filename1, mesh1) || !PMP::IO::read_polygon_mesh(filename2, mesh2)) { std::cerr << "Invalid input." << std::endl; return 1; @@ -88,7 +88,7 @@ int main(int argc, char* argv[]) if (valid_union) { - CGAL::write_polygon_mesh("union.off", out, CGAL::parameters::stream_precision(17)); + CGAL::IO::write_polygon_mesh("union.off", out, CGAL::parameters::stream_precision(17)); return 0; } diff --git a/Polygon_mesh_processing/examples/Polygon_mesh_processing/corefinement_polyhedron_union.cpp b/Polygon_mesh_processing/examples/Polygon_mesh_processing/corefinement_polyhedron_union.cpp index 71bdd4cd2f7..e8ba71436c1 100644 --- a/Polygon_mesh_processing/examples/Polygon_mesh_processing/corefinement_polyhedron_union.cpp +++ b/Polygon_mesh_processing/examples/Polygon_mesh_processing/corefinement_polyhedron_union.cpp @@ -19,7 +19,7 @@ int main(int argc, char* argv[]) const char* filename2 = (argc > 2) ? argv[2] : "data/eight.off"; Mesh mesh1, mesh2; - if(!PMP::read_polygon_mesh(filename1, mesh1) || !PMP::read_polygon_mesh(filename2, mesh2)) + if(!PMP::IO::read_polygon_mesh(filename1, mesh1) || !PMP::IO::read_polygon_mesh(filename2, mesh2)) { std::cerr << "Invalid input." << std::endl; return 1; diff --git a/Polygon_mesh_processing/examples/Polygon_mesh_processing/detect_features_example.cpp b/Polygon_mesh_processing/examples/Polygon_mesh_processing/detect_features_example.cpp index a95c322fc77..ee3c704e7ed 100644 --- a/Polygon_mesh_processing/examples/Polygon_mesh_processing/detect_features_example.cpp +++ b/Polygon_mesh_processing/examples/Polygon_mesh_processing/detect_features_example.cpp @@ -18,7 +18,7 @@ int main(int argc, char* argv[]) const char* filename = (argc > 1) ? argv[1] : "data/P.off"; Mesh mesh; - if(!PMP::read_polygon_mesh(filename, mesh)) + if(!PMP::IO::read_polygon_mesh(filename, mesh)) { std::cerr << "Invalid input." << std::endl; return 1; diff --git a/Polygon_mesh_processing/examples/Polygon_mesh_processing/face_filtered_graph_example.cpp b/Polygon_mesh_processing/examples/Polygon_mesh_processing/face_filtered_graph_example.cpp index 9d54eea2319..8fc832cf4dc 100644 --- a/Polygon_mesh_processing/examples/Polygon_mesh_processing/face_filtered_graph_example.cpp +++ b/Polygon_mesh_processing/examples/Polygon_mesh_processing/face_filtered_graph_example.cpp @@ -28,7 +28,7 @@ int main(int argc, char* argv[]) const char* filename = (argc > 1) ? argv[1] : "data/blobby_3cc.off"; Mesh mesh; - if(!PMP::read_polygon_mesh(filename, mesh)) + if(!PMP::IO::read_polygon_mesh(filename, mesh)) { std::cerr << "Invalid input." << std::endl; return 1; diff --git a/Polygon_mesh_processing/examples/Polygon_mesh_processing/hole_filling_example.cpp b/Polygon_mesh_processing/examples/Polygon_mesh_processing/hole_filling_example.cpp index 2a98bb66781..fe2cfb4a75c 100644 --- a/Polygon_mesh_processing/examples/Polygon_mesh_processing/hole_filling_example.cpp +++ b/Polygon_mesh_processing/examples/Polygon_mesh_processing/hole_filling_example.cpp @@ -23,7 +23,7 @@ int main(int argc, char* argv[]) const char* filename = (argc > 1) ? argv[1] : "data/mech-holes-shark.off"; Polyhedron poly; - if(!PMP::read_polygon_mesh(filename, poly)) + if(!PMP::IO::read_polygon_mesh(filename, poly)) { std::cerr << "Invalid input." << std::endl; return 1; diff --git a/Polygon_mesh_processing/examples/Polygon_mesh_processing/hole_filling_example_LCC.cpp b/Polygon_mesh_processing/examples/Polygon_mesh_processing/hole_filling_example_LCC.cpp index 7dd03e34d99..b7ee221fd8e 100644 --- a/Polygon_mesh_processing/examples/Polygon_mesh_processing/hole_filling_example_LCC.cpp +++ b/Polygon_mesh_processing/examples/Polygon_mesh_processing/hole_filling_example_LCC.cpp @@ -25,7 +25,7 @@ int main(int argc, char* argv[]) const char* filename = (argc > 1) ? argv[1] : "data/mech-holes-shark.off"; LCC mesh; - if(!PMP::read_polygon_mesh(filename, mesh)) + if(!PMP::IO::read_polygon_mesh(filename, mesh)) { std::cerr << "Invalid input." << std::endl; return 1; @@ -58,7 +58,7 @@ int main(int argc, char* argv[]) std::ofstream out("filled_LCC.off"); out.precision(17); - CGAL::write_OFF(out, mesh); + CGAL::IO::write_OFF(out, mesh); return 0; } diff --git a/Polygon_mesh_processing/examples/Polygon_mesh_processing/hole_filling_example_SM.cpp b/Polygon_mesh_processing/examples/Polygon_mesh_processing/hole_filling_example_SM.cpp index 40689ff2054..ea4082b0c5c 100644 --- a/Polygon_mesh_processing/examples/Polygon_mesh_processing/hole_filling_example_SM.cpp +++ b/Polygon_mesh_processing/examples/Polygon_mesh_processing/hole_filling_example_SM.cpp @@ -52,7 +52,7 @@ int main(int argc, char* argv[]) const char* filename = (argc > 1) ? argv[1] : "data/mech-holes-shark.off"; Mesh mesh; - if(!PMP::read_polygon_mesh(filename, mesh)) + if(!PMP::IO::read_polygon_mesh(filename, mesh)) { std::cerr << "Invalid input." << std::endl; return 1; @@ -90,7 +90,7 @@ int main(int argc, char* argv[]) std::cout << std::endl; std::cout << nb_holes << " holes have been filled" << std::endl; - CGAL::write_polygon_mesh("filled_SM.off", mesh, CGAL::parameters::stream_precision(17)); + CGAL::IO::write_polygon_mesh("filled_SM.off", mesh, CGAL::parameters::stream_precision(17)); std::cout << "Mesh written to: filled_SM.off" << std::endl; return 0; diff --git a/Polygon_mesh_processing/examples/Polygon_mesh_processing/isotropic_remeshing_example.cpp b/Polygon_mesh_processing/examples/Polygon_mesh_processing/isotropic_remeshing_example.cpp index 2fb29d976ef..77e11fe115c 100644 --- a/Polygon_mesh_processing/examples/Polygon_mesh_processing/isotropic_remeshing_example.cpp +++ b/Polygon_mesh_processing/examples/Polygon_mesh_processing/isotropic_remeshing_example.cpp @@ -36,7 +36,7 @@ int main(int argc, char* argv[]) const char* filename = (argc > 1) ? argv[1] : "data/pig.off"; Mesh mesh; - if(!PMP::read_polygon_mesh(filename, mesh) || !CGAL::is_triangle_mesh(mesh)) + if(!PMP::IO::read_polygon_mesh(filename, mesh) || !CGAL::is_triangle_mesh(mesh)) { std::cerr << "Invalid input." << std::endl; return 1; diff --git a/Polygon_mesh_processing/examples/Polygon_mesh_processing/isotropic_remeshing_of_patch_example.cpp b/Polygon_mesh_processing/examples/Polygon_mesh_processing/isotropic_remeshing_of_patch_example.cpp index fa67dc57d25..6a331b6a38c 100644 --- a/Polygon_mesh_processing/examples/Polygon_mesh_processing/isotropic_remeshing_of_patch_example.cpp +++ b/Polygon_mesh_processing/examples/Polygon_mesh_processing/isotropic_remeshing_of_patch_example.cpp @@ -37,7 +37,7 @@ int main(int argc, char* argv[]) const char* filename = (argc > 1) ? argv[1] : "data/pig.off"; Mesh mesh; - if(!PMP::read_polygon_mesh(filename, mesh) || !CGAL::is_triangle_mesh(mesh)) + if(!PMP::IO::read_polygon_mesh(filename, mesh) || !CGAL::is_triangle_mesh(mesh)) { std::cerr << "Invalid input." << std::endl; return 1; @@ -75,7 +75,7 @@ int main(int argc, char* argv[]) .protect_constraints(true)//i.e. protect border, here ); - CGAL::write_polygon_mesh("out.off", mesh, CGAL::parameters::stream_precision(17)); + CGAL::IO::write_polygon_mesh("out.off", mesh, CGAL::parameters::stream_precision(17)); std::cout << "Remeshing done." << std::endl; return 0; diff --git a/Polygon_mesh_processing/examples/Polygon_mesh_processing/manifoldness_repair_example.cpp b/Polygon_mesh_processing/examples/Polygon_mesh_processing/manifoldness_repair_example.cpp index 94274b740b3..f035ccc4946 100644 --- a/Polygon_mesh_processing/examples/Polygon_mesh_processing/manifoldness_repair_example.cpp +++ b/Polygon_mesh_processing/examples/Polygon_mesh_processing/manifoldness_repair_example.cpp @@ -35,7 +35,7 @@ int main(int argc, char* argv[]) const char* filename = (argc > 1) ? argv[1] : "data/blobby.off"; Mesh mesh; - if(!PMP::read_polygon_mesh(filename, mesh) || CGAL::is_empty(mesh)) + if(!PMP::IO::read_polygon_mesh(filename, mesh) || CGAL::is_empty(mesh)) { std::cerr << "Invalid input." << std::endl; return 1; diff --git a/Polygon_mesh_processing/examples/Polygon_mesh_processing/mesh_slicer_example.cpp b/Polygon_mesh_processing/examples/Polygon_mesh_processing/mesh_slicer_example.cpp index c8708ba8570..b6dc14e8ff1 100644 --- a/Polygon_mesh_processing/examples/Polygon_mesh_processing/mesh_slicer_example.cpp +++ b/Polygon_mesh_processing/examples/Polygon_mesh_processing/mesh_slicer_example.cpp @@ -27,7 +27,7 @@ int main(int argc, char* argv[]) const char* filename = (argc > 1) ? argv[1] : "data/eight.off"; Mesh mesh; - if(!PMP::read_polygon_mesh(filename, mesh) || CGAL::is_empty(mesh) || !CGAL::is_triangle_mesh(mesh)) + if(!PMP::IO::read_polygon_mesh(filename, mesh) || CGAL::is_empty(mesh) || !CGAL::is_triangle_mesh(mesh)) { std::cerr << "Invalid input." << std::endl; return 1; diff --git a/Polygon_mesh_processing/examples/Polygon_mesh_processing/mesh_smoothing_example.cpp b/Polygon_mesh_processing/examples/Polygon_mesh_processing/mesh_smoothing_example.cpp index afb47b3a465..9aff9d2306d 100644 --- a/Polygon_mesh_processing/examples/Polygon_mesh_processing/mesh_smoothing_example.cpp +++ b/Polygon_mesh_processing/examples/Polygon_mesh_processing/mesh_smoothing_example.cpp @@ -20,7 +20,7 @@ int main(int argc, char** argv) const char* filename = argc > 1 ? argv[1] : "data/anchor_dense.off"; Mesh mesh; - if(!PMP::read_polygon_mesh(filename, mesh)) + if(!PMP::IO::read_polygon_mesh(filename, mesh)) { std::cerr << "Invalid input." << std::endl; return 1; @@ -47,7 +47,7 @@ int main(int argc, char** argv) .use_safety_constraints(false) // authorize all moves .edge_is_constrained_map(eif)); - CGAL::write_polygon_mesh("mesh_smoothed.off", mesh, CGAL::parameters::stream_precision(17)); + CGAL::IO::write_polygon_mesh("mesh_smoothed.off", mesh, CGAL::parameters::stream_precision(17)); std::cout << "Done!" << std::endl; diff --git a/Polygon_mesh_processing/examples/Polygon_mesh_processing/orient_polygon_soup_example.cpp b/Polygon_mesh_processing/examples/Polygon_mesh_processing/orient_polygon_soup_example.cpp index 49cc2711c2f..f0d37d9af7d 100644 --- a/Polygon_mesh_processing/examples/Polygon_mesh_processing/orient_polygon_soup_example.cpp +++ b/Polygon_mesh_processing/examples/Polygon_mesh_processing/orient_polygon_soup_example.cpp @@ -23,7 +23,7 @@ int main(int argc, char* argv[]) std::vector points; std::vector > polygons; - if(!CGAL::read_polygon_soup(filename, points, polygons) || points.empty()) + if(!CGAL::IO::read_polygon_soup(filename, points, polygons) || points.empty()) { std::cerr << "Cannot open file " << std::endl; return EXIT_FAILURE; diff --git a/Polygon_mesh_processing/examples/Polygon_mesh_processing/orientation_pipeline_example.cpp b/Polygon_mesh_processing/examples/Polygon_mesh_processing/orientation_pipeline_example.cpp index bfb6d31f783..f34b46b8604 100644 --- a/Polygon_mesh_processing/examples/Polygon_mesh_processing/orientation_pipeline_example.cpp +++ b/Polygon_mesh_processing/examples/Polygon_mesh_processing/orientation_pipeline_example.cpp @@ -29,7 +29,7 @@ int main(int argc, char** argv) std::vector points; std::vector > polygons; - if(!CGAL::read_polygon_soup(input_filename, points, polygons) || + if(!CGAL::IO::read_polygon_soup(input_filename, points, polygons) || points.size() == 0 || polygons.size() == 0) { std::cerr << "Error: can not read input file.\n"; @@ -37,7 +37,7 @@ int main(int argc, char** argv) } Mesh ref1; - if(!PMP::read_polygon_mesh(reference_filename, ref1)) + if(!PMP::IO::read_polygon_mesh(reference_filename, ref1)) { std::cerr << "Invalid input." << std::endl; return 1; diff --git a/Polygon_mesh_processing/examples/Polygon_mesh_processing/point_inside_example.cpp b/Polygon_mesh_processing/examples/Polygon_mesh_processing/point_inside_example.cpp index 355430023c3..87250a1703e 100644 --- a/Polygon_mesh_processing/examples/Polygon_mesh_processing/point_inside_example.cpp +++ b/Polygon_mesh_processing/examples/Polygon_mesh_processing/point_inside_example.cpp @@ -33,7 +33,7 @@ int main(int argc, char* argv[]) const char* filename = (argc > 1) ? argv[1] : "data/eight.off"; Polyhedron poly; - if(!PMP::read_polygon_mesh(filename, poly) || CGAL::is_empty(poly) || !CGAL::is_triangle_mesh(poly)) + if(!PMP::IO::read_polygon_mesh(filename, poly) || CGAL::is_empty(poly) || !CGAL::is_triangle_mesh(poly)) { std::cerr << "Invalid input." << std::endl; return 1; diff --git a/Polygon_mesh_processing/examples/Polygon_mesh_processing/polyhedral_envelope_of_triangle_soup.cpp b/Polygon_mesh_processing/examples/Polygon_mesh_processing/polyhedral_envelope_of_triangle_soup.cpp index 97a0fa3a607..89c4b7a659c 100644 --- a/Polygon_mesh_processing/examples/Polygon_mesh_processing/polyhedral_envelope_of_triangle_soup.cpp +++ b/Polygon_mesh_processing/examples/Polygon_mesh_processing/polyhedral_envelope_of_triangle_soup.cpp @@ -19,7 +19,7 @@ int main(int argc, char* argv[]) std::vector points; std::vector > polygons; - CGAL::read_OFF(in, points, polygons); + CGAL::IO::read_OFF(in, points, polygons); Envelope envelope(points, polygons, eps); diff --git a/Polygon_mesh_processing/examples/Polygon_mesh_processing/random_perturbation_SM_example.cpp b/Polygon_mesh_processing/examples/Polygon_mesh_processing/random_perturbation_SM_example.cpp index d68467b62bf..2455f47fac8 100644 --- a/Polygon_mesh_processing/examples/Polygon_mesh_processing/random_perturbation_SM_example.cpp +++ b/Polygon_mesh_processing/examples/Polygon_mesh_processing/random_perturbation_SM_example.cpp @@ -21,7 +21,7 @@ int main(int argc, char* argv[]) const char* filename = (argc > 1) ? argv[1] : "data/eight.off"; Surface_mesh mesh; - if(!PMP::read_polygon_mesh(filename, mesh)) + if(!PMP::IO::read_polygon_mesh(filename, mesh)) { std::cerr << "Invalid input." << std::endl; return 1; @@ -31,7 +31,7 @@ int main(int argc, char* argv[]) PMP::random_perturbation(mesh, max_size, CGAL::parameters::vertex_point_map(mesh.points()).geom_traits(K())); - CGAL::write_polygon_mesh("data/eight_perturbed.off", mesh, CGAL::parameters::stream_precision(17)); + CGAL::IO::write_polygon_mesh("data/eight_perturbed.off", mesh, CGAL::parameters::stream_precision(17)); return 0; } diff --git a/Polygon_mesh_processing/examples/Polygon_mesh_processing/refine_fair_example.cpp b/Polygon_mesh_processing/examples/Polygon_mesh_processing/refine_fair_example.cpp index b850c28ae6e..de44126ec22 100644 --- a/Polygon_mesh_processing/examples/Polygon_mesh_processing/refine_fair_example.cpp +++ b/Polygon_mesh_processing/examples/Polygon_mesh_processing/refine_fair_example.cpp @@ -45,7 +45,7 @@ int main(int argc, char* argv[]) const char* filename = (argc > 1) ? argv[1] : "data/blobby.off"; Polyhedron poly; - if(!PMP::read_polygon_mesh(filename, poly) || !CGAL::is_triangle_mesh(poly)) + if(!PMP::IO::read_polygon_mesh(filename, poly) || !CGAL::is_triangle_mesh(poly)) { std::cerr << "Invalid input." << std::endl; return 1; diff --git a/Polygon_mesh_processing/examples/Polygon_mesh_processing/self_intersections_example.cpp b/Polygon_mesh_processing/examples/Polygon_mesh_processing/self_intersections_example.cpp index 75e7e45c3a0..a7b5037743d 100644 --- a/Polygon_mesh_processing/examples/Polygon_mesh_processing/self_intersections_example.cpp +++ b/Polygon_mesh_processing/examples/Polygon_mesh_processing/self_intersections_example.cpp @@ -21,7 +21,7 @@ int main(int argc, char* argv[]) const char* filename = (argc > 1) ? argv[1] : "data/pig.off"; Mesh mesh; - if(!PMP::read_polygon_mesh(filename, mesh) || !CGAL::is_triangle_mesh(mesh)) + if(!PMP::IO::read_polygon_mesh(filename, mesh) || !CGAL::is_triangle_mesh(mesh)) { std::cerr << "Invalid input." << std::endl; return 1; diff --git a/Polygon_mesh_processing/examples/Polygon_mesh_processing/shape_smoothing_example.cpp b/Polygon_mesh_processing/examples/Polygon_mesh_processing/shape_smoothing_example.cpp index ae7ba6f4926..7268a84b337 100644 --- a/Polygon_mesh_processing/examples/Polygon_mesh_processing/shape_smoothing_example.cpp +++ b/Polygon_mesh_processing/examples/Polygon_mesh_processing/shape_smoothing_example.cpp @@ -17,7 +17,7 @@ int main(int argc, char* argv[]) const char* filename = (argc > 1) ? argv[1] : "data/pig.off"; Mesh mesh; - if(!PMP::read_polygon_mesh(filename, mesh)) + if(!PMP::IO::read_polygon_mesh(filename, mesh)) { std::cerr << "Invalid input." << std::endl; return 1; @@ -40,7 +40,7 @@ int main(int argc, char* argv[]) PMP::smooth_shape(mesh, time, PMP::parameters::number_of_iterations(nb_iterations) .vertex_is_constrained_map(vcmap)); - CGAL::write_polygon_mesh("mesh_shape_smoothed.off", mesh, CGAL::parameters::stream_precision(17)); + CGAL::IO::write_polygon_mesh("mesh_shape_smoothed.off", mesh, CGAL::parameters::stream_precision(17)); std::cout << "Done!" << std::endl; return EXIT_SUCCESS; diff --git a/Polygon_mesh_processing/examples/Polygon_mesh_processing/stitch_borders_example.cpp b/Polygon_mesh_processing/examples/Polygon_mesh_processing/stitch_borders_example.cpp index 149bf6a5fee..7da94ff1bf5 100644 --- a/Polygon_mesh_processing/examples/Polygon_mesh_processing/stitch_borders_example.cpp +++ b/Polygon_mesh_processing/examples/Polygon_mesh_processing/stitch_borders_example.cpp @@ -18,7 +18,7 @@ int main(int argc, char* argv[]) const char* filename = (argc > 1) ? argv[1] : "data/full_border_quads.off"; Polyhedron mesh; - if(!PMP::read_polygon_mesh(filename, mesh)) + if(!PMP::IO::read_polygon_mesh(filename, mesh)) { std::cerr << "Invalid input." << std::endl; return 1; @@ -36,7 +36,7 @@ int main(int argc, char* argv[]) std::cout << "\t Number of halfedges :\t" << mesh.size_of_halfedges() << std::endl; std::cout << "\t Number of facets :\t" << mesh.size_of_facets() << std::endl; - CGAL::write_polygon_mesh("mesh_stitched.off", mesh, CGAL::parameters::stream_precision(17)); + CGAL::IO::write_polygon_mesh("mesh_stitched.off", mesh, CGAL::parameters::stream_precision(17)); return 0; } diff --git a/Polygon_mesh_processing/examples/Polygon_mesh_processing/surface_mesh_intersection.cpp b/Polygon_mesh_processing/examples/Polygon_mesh_processing/surface_mesh_intersection.cpp index 177e55f46c3..9f925bdbdce 100644 --- a/Polygon_mesh_processing/examples/Polygon_mesh_processing/surface_mesh_intersection.cpp +++ b/Polygon_mesh_processing/examples/Polygon_mesh_processing/surface_mesh_intersection.cpp @@ -25,7 +25,7 @@ int main(int argc, char* argv[]) const char* filename2 = (argc > 2) ? argv[2] : "data/eight.off"; Mesh mesh1, mesh2; - if(!PMP::read_polygon_mesh(filename1, mesh1) || !PMP::read_polygon_mesh(filename2, mesh2)) + if(!PMP::IO::read_polygon_mesh(filename1, mesh1) || !PMP::IO::read_polygon_mesh(filename2, mesh2)) { std::cerr << "Invalid input." << std::endl; return 1; diff --git a/Polygon_mesh_processing/examples/Polygon_mesh_processing/triangulate_faces_example.cpp b/Polygon_mesh_processing/examples/Polygon_mesh_processing/triangulate_faces_example.cpp index 70c6db3c96f..7391186d70a 100644 --- a/Polygon_mesh_processing/examples/Polygon_mesh_processing/triangulate_faces_example.cpp +++ b/Polygon_mesh_processing/examples/Polygon_mesh_processing/triangulate_faces_example.cpp @@ -21,7 +21,7 @@ int main(int argc, char* argv[]) const char* outfilename = (argc > 2) ? argv[2] : "P_tri.off"; Surface_mesh mesh; - if(!PMP::read_polygon_mesh(filename, mesh)) + if(!PMP::IO::read_polygon_mesh(filename, mesh)) { std::cerr << "Invalid input." << std::endl; return 1; @@ -34,7 +34,7 @@ int main(int argc, char* argv[]) if(!CGAL::is_triangle(halfedge(f, mesh), mesh)) std::cerr << "Error: non-triangular face left in mesh." << std::endl; - CGAL::write_polygon_mesh(outfilename, mesh, CGAL::parameters::stream_precision(17)); + CGAL::IO::write_polygon_mesh(outfilename, mesh, CGAL::parameters::stream_precision(17)); return 0; } diff --git a/Polygon_mesh_processing/examples/Polygon_mesh_processing/triangulate_faces_split_visitor_example.cpp b/Polygon_mesh_processing/examples/Polygon_mesh_processing/triangulate_faces_split_visitor_example.cpp index 4036a4c504a..5091e5e447a 100644 --- a/Polygon_mesh_processing/examples/Polygon_mesh_processing/triangulate_faces_split_visitor_example.cpp +++ b/Polygon_mesh_processing/examples/Polygon_mesh_processing/triangulate_faces_split_visitor_example.cpp @@ -90,7 +90,7 @@ int main(int argc, char* argv[]) Surface_mesh copy; - copy_face_graph(mesh, copy, CGAL::Emptyset_iterator(), CGAL::Emptyset_iterator(),Insert_iterator(t2q)); + CGAL::copy_face_graph(mesh, copy, CGAL::parameters::face_to_face_output_iterator(Insert_iterator(t2q))); Visitor v(t2q); CGAL::Polygon_mesh_processing::triangulate_faces(copy, diff --git a/Polygon_mesh_processing/examples/Polygon_mesh_processing/volume_connected_components.cpp b/Polygon_mesh_processing/examples/Polygon_mesh_processing/volume_connected_components.cpp index c800b9e3c27..8b90977371b 100644 --- a/Polygon_mesh_processing/examples/Polygon_mesh_processing/volume_connected_components.cpp +++ b/Polygon_mesh_processing/examples/Polygon_mesh_processing/volume_connected_components.cpp @@ -21,7 +21,7 @@ int main(int argc, char** argv) const char* filename = (argc > 1) ? argv[1] : "data/blobby.off"; Surface_mesh mesh; - if(!PMP::read_polygon_mesh(filename, mesh)) + if(!PMP::IO::read_polygon_mesh(filename, mesh)) { std::cerr << "Invalid input." << std::endl; return 1; diff --git a/Polygon_mesh_processing/include/CGAL/Polygon_mesh_processing/IO/polygon_mesh_io.h b/Polygon_mesh_processing/include/CGAL/Polygon_mesh_processing/IO/polygon_mesh_io.h index d932c5b7583..4fe8a9deaf0 100644 --- a/Polygon_mesh_processing/include/CGAL/Polygon_mesh_processing/IO/polygon_mesh_io.h +++ b/Polygon_mesh_processing/include/CGAL/Polygon_mesh_processing/IO/polygon_mesh_io.h @@ -33,7 +33,7 @@ namespace CGAL { namespace Polygon_mesh_processing { - +namespace IO { /*! \ingroup PMP_IO_grp @@ -82,7 +82,7 @@ namespace Polygon_mesh_processing { * * \return `true` if the reading, repairing, and orientation operations were successful, `false` otherwise. * - * \sa \link PkgBGLIOFct `CGAL::write_polygon_mesh()` \endlink + * \sa \link PkgBGLIOFct `CGAL::IO::write_polygon_mesh()` \endlink */ template bool read_polygon_mesh(const std::string& fname, @@ -101,7 +101,7 @@ bool read_polygon_mesh(const std::string& fname, std::vector points; std::vector > faces; - if(!CGAL::read_polygon_soup(fname, points, faces)) + if(!CGAL::IO::read_polygon_soup(fname, points, faces)) { if(verbose) std::cerr << "Warning: cannot read polygon soup" << std::endl; @@ -135,11 +135,12 @@ bool read_polygon_mesh(const std::string& fname, template bool read_polygon_mesh(const std::string& fname, PolygonMesh& g) { - return CGAL::Polygon_mesh_processing::read_polygon_mesh(fname, g, parameters::all_default()); + return CGAL::Polygon_mesh_processing::IO::read_polygon_mesh(fname, g, parameters::all_default()); } /// \endcond +} // namespace IO } // namespace Polygon_mesh_processing } // namespace CGAL diff --git a/Polygon_mesh_processing/include/CGAL/Polygon_mesh_processing/repair_degeneracies.h b/Polygon_mesh_processing/include/CGAL/Polygon_mesh_processing/repair_degeneracies.h index 8254cfa4384..cb4a1ce9e08 100644 --- a/Polygon_mesh_processing/include/CGAL/Polygon_mesh_processing/repair_degeneracies.h +++ b/Polygon_mesh_processing/include/CGAL/Polygon_mesh_processing/repair_degeneracies.h @@ -436,7 +436,7 @@ bool remove_almost_degenerate_faces(const FaceRange& face_range, std::cout << "Iter: " << iter << std::endl; std::ostringstream oss; oss << "degen_cleaning_iter_" << iter++ << ".off"; - CGAL::write_polygon_mesh(oss.str(), tmesh, CGAL::parameters::stream_precision(17)); + CGAL::IO::write_polygon_mesh(oss.str(), tmesh, CGAL::parameters::stream_precision(17)); #endif if(edges_to_collapse.empty() && edges_to_flip.empty()) @@ -1680,7 +1680,7 @@ bool remove_degenerate_faces(const FaceRange& face_range, #ifdef CGAL_PMP_REMOVE_DEGENERATE_FACES_DEBUG { std::cout <<"Done with null edges.\n"; - CGAL::write_polygon_mesh("/tmp/no_null_edges.off", tmesh, CGAL::parameters::stream_precision(17)); + CGAL::IO::write_polygon_mesh("/tmp/no_null_edges.off", tmesh, CGAL::parameters::stream_precision(17)); } #endif @@ -1804,7 +1804,7 @@ bool remove_degenerate_faces(const FaceRange& face_range, std::vector points; std::vector > triangles; std::ifstream in("/tmp/out.off"); - CGAL::read_OFF(in, points, triangles); + CGAL::IO::read_OFF(in, points, triangles); if(!CGAL::Polygon_mesh_processing::is_polygon_soup_a_polygon_mesh(triangles)) { std::cerr << "Warning: got a polygon soup (may simply be a non-manifold vertex)!\n"; diff --git a/Polygon_mesh_processing/include/CGAL/Polygon_mesh_processing/repair_self_intersections.h b/Polygon_mesh_processing/include/CGAL/Polygon_mesh_processing/repair_self_intersections.h index 1f0d457ddda..7663a49a419 100644 --- a/Polygon_mesh_processing/include/CGAL/Polygon_mesh_processing/repair_self_intersections.h +++ b/Polygon_mesh_processing/include/CGAL/Polygon_mesh_processing/repair_self_intersections.h @@ -245,7 +245,7 @@ FaceOutputIterator replace_faces_with_patch(const std::vector #include #include +#include +#include + #ifdef DOXYGEN_RUNNING #define CGAL_PMP_NP_TEMPLATE_PARAMETERS NamedParameters #define CGAL_PMP_NP_CLASS NamedParameters diff --git a/Polygon_mesh_processing/test/Polygon_mesh_processing/autorefinement_sm.cpp b/Polygon_mesh_processing/test/Polygon_mesh_processing/autorefinement_sm.cpp index 97f80e530ee..e437fe6e23e 100644 --- a/Polygon_mesh_processing/test/Polygon_mesh_processing/autorefinement_sm.cpp +++ b/Polygon_mesh_processing/test/Polygon_mesh_processing/autorefinement_sm.cpp @@ -17,7 +17,7 @@ int main(int argc, char* argv[]) const char* filename = (argc > 1) ? argv[1] : "data/blobby.off"; Mesh mesh; - if(!PMP::read_polygon_mesh(filename, mesh)) + if(!PMP::IO::read_polygon_mesh(filename, mesh)) { std::cerr << "Input mesh is not a valid off file." << std::endl; return 1; @@ -42,17 +42,17 @@ int main(int argc, char* argv[]) PMP::experimental::autorefine(mesh); std::cout << "Number of vertices after autorefinement " << mesh.number_of_vertices() << "\n"; - CGAL::write_polygon_mesh("mesh_autorefined.off", mesh, CGAL::parameters::stream_precision(17)); + CGAL::IO::write_polygon_mesh("mesh_autorefined.off", mesh, CGAL::parameters::stream_precision(17)); clear(mesh); - CGAL::Polygon_mesh_processing::read_polygon_mesh(filename, mesh); + CGAL::Polygon_mesh_processing::IO::read_polygon_mesh(filename, mesh); std::cout << "Number of vertices before self-intersection removal " << mesh.number_of_vertices() << "\n"; if (!PMP::experimental::autorefine_and_remove_self_intersections(mesh)) std::cout << "WARNING: Cannot remove all self-intersections\n"; std::cout << "Number of vertices after self-intersection removal " << mesh.number_of_vertices() << "\n"; - CGAL::write_polygon_mesh("mesh_fixed.off", mesh, CGAL::parameters::stream_precision(17)); + CGAL::IO::write_polygon_mesh("mesh_fixed.off", mesh, CGAL::parameters::stream_precision(17)); return EXIT_SUCCESS; } diff --git a/Polygon_mesh_processing/test/Polygon_mesh_processing/surface_intersection_sm_poly.cpp b/Polygon_mesh_processing/test/Polygon_mesh_processing/surface_intersection_sm_poly.cpp index 242e50edcbf..2eec580c5bc 100644 --- a/Polygon_mesh_processing/test/Polygon_mesh_processing/surface_intersection_sm_poly.cpp +++ b/Polygon_mesh_processing/test/Polygon_mesh_processing/surface_intersection_sm_poly.cpp @@ -28,13 +28,13 @@ template void run(const char* filename1, const char* filename2, const char* msg) { TriangleMesh mesh1; - if ( !CGAL::Polygon_mesh_processing::read_polygon_mesh(filename1, mesh1) ) { + if ( !PMP::IO::read_polygon_mesh(filename1, mesh1) ) { std::cerr << filename1 << " is not a valid off file.\n"; exit(1); } TriangleMesh mesh2; - if ( !CGAL::Polygon_mesh_processing::read_polygon_mesh(filename2, mesh2) ) { + if ( !PMP::IO::read_polygon_mesh(filename2, mesh2) ) { std::cerr << filename2 << " is not a valid off file.\n"; exit(1); } diff --git a/Polygon_mesh_processing/test/Polygon_mesh_processing/test_corefinement_bool_op.cpp b/Polygon_mesh_processing/test/Polygon_mesh_processing/test_corefinement_bool_op.cpp index 4cc5233a1ce..0355040ecad 100644 --- a/Polygon_mesh_processing/test/Polygon_mesh_processing/test_corefinement_bool_op.cpp +++ b/Polygon_mesh_processing/test/Polygon_mesh_processing/test_corefinement_bool_op.cpp @@ -67,7 +67,7 @@ void run_boolean_operations( #ifdef CGAL_COREFINEMENT_DEBUG std::stringstream fname; fname << scenario << "_tm1_union_tm2.off"; - CGAL::write_polygon_mesh(fname.str(), union_, CGAL::parameters::stream_precision(17)); + CGAL::IO::write_polygon_mesh(fname.str(), union_, CGAL::parameters::stream_precision(17)); #endif } else @@ -79,7 +79,7 @@ void run_boolean_operations( #ifdef CGAL_COREFINEMENT_DEBUG std::stringstream fname; fname << scenario << "_tm1_inter_tm2.off"; - CGAL::write_polygon_mesh(fname.str(), inter, CGAL::parameters::stream_precision(17)); + CGAL::IO::write_polygon_mesh(fname.str(), inter, CGAL::parameters::stream_precision(17)); #endif } else @@ -91,7 +91,7 @@ void run_boolean_operations( #ifdef CGAL_COREFINEMENT_DEBUG std::stringstream fname; fname << scenario << "_tm1_minus_tm2.off"; - CGAL::write_polygon_mesh(fname.str(), tm1_minus_tm2, CGAL::parameters::stream_precision(17)); + CGAL::IO::write_polygon_mesh(fname.str(), tm1_minus_tm2, CGAL::parameters::stream_precision(17)); #endif } else @@ -103,7 +103,7 @@ void run_boolean_operations( #ifdef CGAL_COREFINEMENT_DEBUG std::stringstream fname; fname << scenario << "_tm2_minus_tm1.off"; - CGAL::write_polygon_mesh(fname.str(), tm2_minus_tm1, CGAL::parameters::stream_precision(17)); + CGAL::IO::write_polygon_mesh(fname.str(), tm2_minus_tm1, CGAL::parameters::stream_precision(17)); #endif } else diff --git a/Polygon_mesh_processing/test/Polygon_mesh_processing/test_is_polygon_soup_a_polygon_mesh.cpp b/Polygon_mesh_processing/test/Polygon_mesh_processing/test_is_polygon_soup_a_polygon_mesh.cpp index c6e889e008f..97836482d73 100644 --- a/Polygon_mesh_processing/test/Polygon_mesh_processing/test_is_polygon_soup_a_polygon_mesh.cpp +++ b/Polygon_mesh_processing/test/Polygon_mesh_processing/test_is_polygon_soup_a_polygon_mesh.cpp @@ -40,7 +40,7 @@ void test_polygon_soup(std::string fname, bool expected) exit(EXIT_FAILURE); } - if(!CGAL::read_OFF(input, points, polygons)) + if(!CGAL::IO::read_OFF(input, points, polygons)) { std::cerr << "Error parsing the OFF file " << fname << "\n"; exit(EXIT_FAILURE); diff --git a/Polygon_mesh_processing/test/Polygon_mesh_processing/test_merging_border_vertices.cpp b/Polygon_mesh_processing/test/Polygon_mesh_processing/test_merging_border_vertices.cpp index a178117ab66..491837ea01d 100644 --- a/Polygon_mesh_processing/test/Polygon_mesh_processing/test_merging_border_vertices.cpp +++ b/Polygon_mesh_processing/test/Polygon_mesh_processing/test_merging_border_vertices.cpp @@ -32,7 +32,7 @@ void test_merge_duplicated_vertices_in_boundary_cycles(const char* fname, if (expected_nb_vertices==0) { std::cout << "writing output to out1.off\n"; - CGAL::write_polygon_mesh("out1.off", mesh, CGAL::parameters::stream_precision(17)); + CGAL::IO::write_polygon_mesh("out1.off", mesh, CGAL::parameters::stream_precision(17)); } } diff --git a/Polygon_mesh_processing/test/Polygon_mesh_processing/test_pmp_distance.cpp b/Polygon_mesh_processing/test/Polygon_mesh_processing/test_pmp_distance.cpp index 7a908e33b8c..f1758c33948 100644 --- a/Polygon_mesh_processing/test/Polygon_mesh_processing/test_pmp_distance.cpp +++ b/Polygon_mesh_processing/test/Polygon_mesh_processing/test_pmp_distance.cpp @@ -318,7 +318,7 @@ int main(int argc, char** argv) std::vector > faces; std::vector points; input.open(argv[1]); - CGAL::read_OFF(input, points, faces); + CGAL::IO::read_OFF(input, points, faces); input.close(); std::vector samples; diff --git a/Polygon_mesh_processing/test/Polygon_mesh_processing/test_pmp_non_conforming_snapping.cpp b/Polygon_mesh_processing/test/Polygon_mesh_processing/test_pmp_non_conforming_snapping.cpp index d9ede5fc7d0..c41b951d573 100644 --- a/Polygon_mesh_processing/test/Polygon_mesh_processing/test_pmp_non_conforming_snapping.cpp +++ b/Polygon_mesh_processing/test/Polygon_mesh_processing/test_pmp_non_conforming_snapping.cpp @@ -51,7 +51,7 @@ void read_mesh(const char* filename, { std::vector points; std::vector > faces; - CGAL::read_STL(in, points, faces); + CGAL::IO::read_STL(in, points, faces); if(!CGAL::Polygon_mesh_processing::orient_polygon_soup(points, faces)) std::cerr << "W: File does not describe a polygon mesh" << std::endl; diff --git a/Polygon_mesh_processing/test/Polygon_mesh_processing/test_pmp_polyhedral_envelope.cpp b/Polygon_mesh_processing/test/Polygon_mesh_processing/test_pmp_polyhedral_envelope.cpp index 7127b22e3e0..1a7d4ff8041 100644 --- a/Polygon_mesh_processing/test/Polygon_mesh_processing/test_pmp_polyhedral_envelope.cpp +++ b/Polygon_mesh_processing/test/Polygon_mesh_processing/test_pmp_polyhedral_envelope.cpp @@ -17,7 +17,7 @@ void test_API() std::vector points; std::vector > triangles; std::ifstream in("data/eight.off"); - CGAL::read_OFF(in, points, triangles); + CGAL::IO::read_OFF(in, points, triangles); CGAL::Surface_mesh sm; CGAL::Polyhedron_3 poly; PMP::polygon_soup_to_polygon_mesh(points, triangles, sm); diff --git a/Polygon_mesh_processing/test/Polygon_mesh_processing/test_pmp_read_polygon_mesh.cpp b/Polygon_mesh_processing/test/Polygon_mesh_processing/test_pmp_read_polygon_mesh.cpp index 3ad4d43e8f5..e205ea5c5db 100644 --- a/Polygon_mesh_processing/test/Polygon_mesh_processing/test_pmp_read_polygon_mesh.cpp +++ b/Polygon_mesh_processing/test/Polygon_mesh_processing/test_pmp_read_polygon_mesh.cpp @@ -42,14 +42,14 @@ void test(const std::string& filename, const bool is_pm) Mesh g; std::cout<<"0"< cvpm(cpoints); std::cout<<"4"<("segment_index")))) + if (!CGAL::IO::read_PLY_with_properties(input_stream, + std::back_inserter(points), + CGAL::make_ply_point_reader(Point_map()), + CGAL::make_ply_normal_reader(Normal_map()), + std::make_pair(Plane_index_map(), CGAL::PLY_property("segment_index")))) { std::cerr << "Error: cannot read file " << input_file << std::endl; return EXIT_FAILURE; @@ -91,7 +91,7 @@ int main() } else { const std::string& output_file = "data/building_result-0.05.off"; - if (CGAL::write_OFF(output_file, model)) { + if (CGAL::IO::write_OFF(output_file, model)) { std::cout << " Done. Saved to " << output_file << ". Time: " << t.time() << " sec." << std::endl; } else { @@ -109,7 +109,7 @@ int main() } else { const std::string& output_file = "data/building_result-0.5.off"; - if (CGAL::write_OFF(output_file, model)) + if (CGAL::IO::write_OFF(output_file, model)) std::cout << " Done. Saved to " << output_file << ". Time: " << t.time() << " sec." << std::endl; else { std::cerr << " Failed saving file." << std::endl; @@ -126,7 +126,7 @@ int main() } else { const std::string& output_file = "data/building_result-0.7.off"; - if (CGAL::write_OFF(output_file, model)){ + if (CGAL::IO::write_OFF(output_file, model)){ std::cout << " Done. Saved to " << output_file << ". Time: " << t.time() << " sec." << std::endl; } else { diff --git a/Polygonal_surface_reconstruction/examples/Polygonal_surface_reconstruction/polyfit_example_user_provided_planes.cpp b/Polygonal_surface_reconstruction/examples/Polygonal_surface_reconstruction/polyfit_example_user_provided_planes.cpp index dbe23f024fb..3a032287bdd 100644 --- a/Polygonal_surface_reconstruction/examples/Polygonal_surface_reconstruction/polyfit_example_user_provided_planes.cpp +++ b/Polygonal_surface_reconstruction/examples/Polygonal_surface_reconstruction/polyfit_example_user_provided_planes.cpp @@ -50,11 +50,11 @@ int main() CGAL::Timer t; t.start(); - if (!CGAL::read_PLY_with_properties(input_stream, - std::back_inserter(points), - CGAL::make_ply_point_reader(Point_map()), - CGAL::make_ply_normal_reader(Normal_map()), - std::make_pair(Plane_index_map(), CGAL::PLY_property("segment_index")))) + if (!CGAL::IO::read_PLY_with_properties(input_stream, + std::back_inserter(points), + CGAL::make_ply_point_reader(Point_map()), + CGAL::make_ply_normal_reader(Normal_map()), + std::make_pair(Plane_index_map(), CGAL::PLY_property("segment_index")))) { std::cerr << "Error: cannot read file " << input_file << std::endl; return EXIT_FAILURE; @@ -90,7 +90,7 @@ int main() // Saves the mesh model const std::string& output_file("data/ball_result.off"); - if (CGAL::write_OFF(output_file, model)) + if (CGAL::IO::write_OFF(output_file, model)) std::cout << " Done. Saved to " << output_file << ". Time: " << t.time() << " sec." << std::endl; else { std::cerr << " Failed saving file." << std::endl; diff --git a/Polygonal_surface_reconstruction/examples/Polygonal_surface_reconstruction/polyfit_example_with_region_growing.cpp b/Polygonal_surface_reconstruction/examples/Polygonal_surface_reconstruction/polyfit_example_with_region_growing.cpp index a30cfd29c01..936034142cd 100644 --- a/Polygonal_surface_reconstruction/examples/Polygonal_surface_reconstruction/polyfit_example_with_region_growing.cpp +++ b/Polygonal_surface_reconstruction/examples/Polygonal_surface_reconstruction/polyfit_example_with_region_growing.cpp @@ -101,8 +101,8 @@ int main() CGAL::Timer t; t.start(); - if (!CGAL::read_points(input_file.c_str(), std::back_inserter(points), - CGAL::parameters::point_map(Point_map()).normal_map(Normal_map()))) { + if (!CGAL::IO::read_points(input_file.c_str(), std::back_inserter(points), + CGAL::parameters::point_map(Point_map()).normal_map(Normal_map()))) { std::cerr << "Error: cannot read file " << input_file << std::endl; return EXIT_FAILURE; @@ -175,7 +175,7 @@ int main() std::cout << "Saving..."; t.reset(); const std::string& output_file("data/cube_result.off"); - if (CGAL::write_OFF(output_file, model)) + if (CGAL::IO::write_OFF(output_file, model)) std::cout << " Done. Saved to " << output_file << ". Time: " << t.time() << " sec." << std::endl; else { std::cerr << " Failed saving file." << std::endl; diff --git a/Polygonal_surface_reconstruction/examples/Polygonal_surface_reconstruction/polyfit_example_without_input_planes.cpp b/Polygonal_surface_reconstruction/examples/Polygonal_surface_reconstruction/polyfit_example_without_input_planes.cpp index 0f8365be9a7..1a5d215a79f 100644 --- a/Polygonal_surface_reconstruction/examples/Polygonal_surface_reconstruction/polyfit_example_without_input_planes.cpp +++ b/Polygonal_surface_reconstruction/examples/Polygonal_surface_reconstruction/polyfit_example_without_input_planes.cpp @@ -68,8 +68,8 @@ int main() CGAL::Timer t; t.start(); - if (!CGAL::read_points(input_file.c_str(), std::back_inserter(points), - CGAL::parameters::point_map(Point_map()).normal_map(Normal_map()))) + if (!CGAL::IO::read_points(input_file.c_str(), std::back_inserter(points), + CGAL::parameters::point_map(Point_map()).normal_map(Normal_map()))) { std::cerr << "Error: cannot read file " << input_file << std::endl; return EXIT_FAILURE; @@ -126,7 +126,7 @@ int main() } const std::string& output_file("data/cube_result.off"); - if (CGAL::write_OFF(output_file, model)) + if (CGAL::IO::write_OFF(output_file, model)) std::cout << " Done. Saved to " << output_file << ". Time: " << t.time() << " sec." << std::endl; else { std::cerr << " Failed saving file." << std::endl; @@ -140,7 +140,7 @@ int main() algo.output_candidate_faces(candidate_faces); const std::string& candidate_faces_file("data/cube_candidate_faces.off"); std::ofstream candidate_stream(candidate_faces_file.c_str()); - if (CGAL::write_OFF(candidate_stream, candidate_faces)) + if (CGAL::IO::write_OFF(candidate_stream, candidate_faces)) std::cout << "Candidate faces saved to " << candidate_faces_file << "." << std::endl; return EXIT_SUCCESS; diff --git a/Polygonal_surface_reconstruction/test/Polygonal_surface_reconstruction/polygonal_surface_reconstruction_test_framework.h b/Polygonal_surface_reconstruction/test/Polygonal_surface_reconstruction/polygonal_surface_reconstruction_test_framework.h index 01021729f87..0f0582591cf 100644 --- a/Polygonal_surface_reconstruction/test/Polygonal_surface_reconstruction/polygonal_surface_reconstruction_test_framework.h +++ b/Polygonal_surface_reconstruction/test/Polygonal_surface_reconstruction/polygonal_surface_reconstruction_test_framework.h @@ -84,37 +84,36 @@ int reconstruct(const std::string& input_file, bool force_extract_planes) CGAL::Timer t; t.start(); if (extension == ".pwn") { - if (!CGAL::read_XYZ( - input_stream, - std::back_inserter(points), - CGAL::parameters::point_map(Point_map()).normal_map(Normal_map()))) - { + if (!CGAL::IO::read_XYZ(input_stream, + std::back_inserter(points), + CGAL::parameters::point_map(Point_map()).normal_map(Normal_map()))) + { std::cerr << " Error: cannot read file " << input_file << std::endl; - return EXIT_FAILURE; - } - else - std::cout << " Done. " << points.size() << " points. Time: " << t.time() << " sec." << std::endl; + return EXIT_FAILURE; + } + else + std::cout << " Done. " << points.size() << " points. Time: " << t.time() << " sec." << std::endl; } else if (extension == ".ply") { - if (!CGAL::read_PLY_with_properties( + if (!CGAL::IO::read_PLY_with_properties( input_stream, std::back_inserter(points), CGAL::make_ply_point_reader(Point_map()), CGAL::make_ply_normal_reader(Normal_map()), std::make_pair(Plane_index_map(), CGAL::PLY_property("segment_index")))) - { - std::cerr << " Error: cannot read file " << input_file << std::endl; - return EXIT_FAILURE; - } - else - std::cout << " Done. " << points.size() << " points. Time: " << t.time() << " sec." << std::endl; + { + std::cerr << " Error: cannot read file " << input_file << std::endl; + return EXIT_FAILURE; + } + else + std::cout << " Done. " << points.size() << " points. Time: " << t.time() << " sec." << std::endl; - int max_plane_index = 0; + int max_plane_index = 0; for (std::size_t i = 0; i < points.size(); ++i) { - int plane_index = points[i].template get<2>(); - if (plane_index > max_plane_index) - max_plane_index = plane_index; - } + int plane_index = points[i].template get<2>(); + if (plane_index > max_plane_index) + max_plane_index = plane_index; + } int num_planes = max_plane_index + 1; // if fewer than 4 planes provided, we consider it as not provided. diff --git a/Polyhedron/demo/Polyhedron/Plugins/Classification/Cluster_classification.cpp b/Polyhedron/demo/Polyhedron/Plugins/Classification/Cluster_classification.cpp index 1de6a367cb5..b919ba2ca6b 100644 --- a/Polyhedron/demo/Polyhedron/Plugins/Classification/Cluster_classification.cpp +++ b/Polyhedron/demo/Polyhedron/Plugins/Classification/Cluster_classification.cpp @@ -389,10 +389,10 @@ void Cluster_classification::backup_existing_colors_and_add_new() { if (m_points->point_set()->has_colors()) { - m_color = m_points->point_set()->add_property_map("real_color").first; + m_color = m_points->point_set()->add_property_map("real_color").first; for (Point_set::const_iterator it = m_points->point_set()->begin(); it != m_points->point_set()->first_selected(); ++ it) - m_color[*it] = CGAL::Color ((unsigned char)(255 * m_points->point_set()->red(*it)), + m_color[*it] = CGAL::IO::Color ((unsigned char)(255 * m_points->point_set()->red(*it)), (unsigned char)(255 * m_points->point_set()->green(*it)), (unsigned char)(255 * m_points->point_set()->blue(*it))); @@ -404,7 +404,7 @@ void Cluster_classification::backup_existing_colors_and_add_new() void Cluster_classification::reset_colors() { - if (m_color == Point_set::Property_map()) + if (m_color == Point_set::Property_map()) m_points->point_set()->remove_colors(); else { @@ -599,7 +599,7 @@ int Cluster_classification::real_index_color() const { int out = m_index_color; - if (out == 0 && m_color == Point_set::Property_map()) + if (out == 0 && m_color == Point_set::Property_map()) out = -1; return out; } @@ -635,7 +635,7 @@ void Cluster_classification::compute_features (std::size_t nb_scales, float voxe if (normals) normal_map = m_points->point_set()->normal_map(); - bool colors = (m_color != Point_set::Property_map()); + bool colors = (m_color != Point_set::Property_map()); Point_set::Property_map echo_map; bool echo; diff --git a/Polyhedron/demo/Polyhedron/Plugins/Classification/Cluster_classification.h b/Polyhedron/demo/Polyhedron/Plugins/Classification/Cluster_classification.h index e7b3df3e9b2..224a66d20c7 100644 --- a/Polyhedron/demo/Polyhedron/Plugins/Classification/Cluster_classification.h +++ b/Polyhedron/demo/Polyhedron/Plugins/Classification/Cluster_classification.h @@ -379,7 +379,7 @@ class Cluster_classification : public Item_classification_base Point_set::Property_map m_red; Point_set::Property_map m_green; Point_set::Property_map m_blue; - Point_set::Property_map m_color; + Point_set::Property_map m_color; Point_set::Property_map m_cluster_id; Point_set::Property_map m_training; Point_set::Property_map m_classif; diff --git a/Polyhedron/demo/Polyhedron/Plugins/Classification/Item_classification_base.h b/Polyhedron/demo/Polyhedron/Plugins/Classification/Item_classification_base.h index ad13090ccc9..5b860c1b15c 100644 --- a/Polyhedron/demo/Polyhedron/Plugins/Classification/Item_classification_base.h +++ b/Polyhedron/demo/Polyhedron/Plugins/Classification/Item_classification_base.h @@ -228,7 +228,7 @@ public: void change_label_color (std::size_t position, const QColor& color) { m_labels[position]->set_color - (CGAL::Color (color.red(), color.green(), color.blue())); + (CGAL::IO::Color (color.red(), color.green(), color.blue())); } void change_label_name (std::size_t position, const std::string& name) { diff --git a/Polyhedron/demo/Polyhedron/Plugins/Classification/Point_set_item_classification.cpp b/Polyhedron/demo/Polyhedron/Plugins/Classification/Point_set_item_classification.cpp index 06a51d6d962..b6295553e1a 100644 --- a/Polyhedron/demo/Polyhedron/Plugins/Classification/Point_set_item_classification.cpp +++ b/Polyhedron/demo/Polyhedron/Plugins/Classification/Point_set_item_classification.cpp @@ -325,10 +325,10 @@ void Point_set_item_classification::backup_existing_colors_and_add_new() { if (m_points->point_set()->has_colors()) { - m_color = m_points->point_set()->add_property_map("real_color").first; + m_color = m_points->point_set()->add_property_map("real_color").first; for (Point_set::const_iterator it = m_points->point_set()->begin(); it != m_points->point_set()->first_selected(); ++ it) - m_color[*it] = CGAL::Color((unsigned char)(255 * m_points->point_set()->red(*it)), + m_color[*it] = CGAL::IO::Color((unsigned char)(255 * m_points->point_set()->red(*it)), (unsigned char)(255 * m_points->point_set()->green(*it)), (unsigned char)(255 * m_points->point_set()->blue(*it))); @@ -340,7 +340,7 @@ void Point_set_item_classification::backup_existing_colors_and_add_new() void Point_set_item_classification::reset_colors() { - if (m_color == Point_set::Property_map()) + if (m_color == Point_set::Property_map()) m_points->point_set()->remove_colors(); else { @@ -491,7 +491,7 @@ int Point_set_item_classification::real_index_color() const { int out = m_index_color; - if (out == 0 && m_color == Point_set::Property_map()) + if (out == 0 && m_color == Point_set::Property_map()) out = -1; return out; } @@ -530,7 +530,7 @@ void Point_set_item_classification::compute_features (std::size_t nb_scales, flo if (normals) normal_map = m_points->point_set()->normal_map(); - bool colors = (m_color != Point_set::Property_map()); + bool colors = (m_color != Point_set::Property_map()); Point_set::Property_map echo_map; bool echo; diff --git a/Polyhedron/demo/Polyhedron/Plugins/Classification/Point_set_item_classification.h b/Polyhedron/demo/Polyhedron/Plugins/Classification/Point_set_item_classification.h index bf6f3e1cf66..f52e2438aab 100644 --- a/Polyhedron/demo/Polyhedron/Plugins/Classification/Point_set_item_classification.h +++ b/Polyhedron/demo/Polyhedron/Plugins/Classification/Point_set_item_classification.h @@ -399,7 +399,7 @@ class Point_set_item_classification : public Item_classification_base Point_set::Property_map m_red; Point_set::Property_map m_green; Point_set::Property_map m_blue; - Point_set::Property_map m_color; + Point_set::Property_map m_color; std::vector > m_label_probabilities; Point_set::Property_map m_training; diff --git a/Polyhedron/demo/Polyhedron/Plugins/Classification/Surface_mesh_item_classification.cpp b/Polyhedron/demo/Polyhedron/Plugins/Classification/Surface_mesh_item_classification.cpp index 41f56217c4c..3fc12e4dd2f 100644 --- a/Polyhedron/demo/Polyhedron/Plugins/Classification/Surface_mesh_item_classification.cpp +++ b/Polyhedron/demo/Polyhedron/Plugins/Classification/Surface_mesh_item_classification.cpp @@ -58,27 +58,27 @@ Surface_mesh_item_classification::~Surface_mesh_item_classification() void Surface_mesh_item_classification::backup_existing_colors_and_add_new() { bool has_colors = false; - boost::tie (m_color, has_colors) = m_mesh->polyhedron()->property_map("f:color"); + boost::tie (m_color, has_colors) = m_mesh->polyhedron()->property_map("f:color"); if (has_colors) { m_real_color - = m_mesh->polyhedron()->add_property_map("f:real_color").first; + = m_mesh->polyhedron()->add_property_map("f:real_color").first; for(face_descriptor fd : faces(*(m_mesh->polyhedron()))) { m_real_color[fd] = m_color[fd]; - m_color[fd] = CGAL::Color(128, 128, 128); + m_color[fd] = CGAL::IO::Color(128, 128, 128); } } else m_color = - m_mesh->polyhedron()->add_property_map("f:color", CGAL::Color(128,128,128)).first; + m_mesh->polyhedron()->add_property_map("f:color", CGAL::IO::Color(128,128,128)).first; } void Surface_mesh_item_classification::change_color (int index, float* vmin, float* vmax) { m_index_color = index; int index_color = index; - if (index == 0 && m_real_color == Mesh::Property_map()) + if (index == 0 && m_real_color == Mesh::Property_map()) index_color = -1; static Color_ramp ramp; @@ -87,7 +87,7 @@ void Surface_mesh_item_classification::change_color (int index, float* vmin, flo if (index_color == -1) // item color { for(face_descriptor fd : faces(*(m_mesh->polyhedron()))) - m_color[fd] = CGAL::Color(128,128,128); + m_color[fd] = CGAL::IO::Color(128,128,128); } else if (index_color == 0) // real colors { @@ -104,7 +104,7 @@ void Surface_mesh_item_classification::change_color (int index, float* vmin, flo if (c != std::size_t(-1)) color = label_qcolor (m_labels[c]); - m_color[fd] = CGAL::Color(color.red(), color.green(), color.blue()); + m_color[fd] = CGAL::IO::Color(color.red(), color.green(), color.blue()); } } else if (index_color == 2) // training @@ -121,7 +121,7 @@ void Surface_mesh_item_classification::change_color (int index, float* vmin, flo float div = 1; if (c != c2) div = 2; - m_color[fd] = CGAL::Color(color.red() / div, + m_color[fd] = CGAL::IO::Color(color.red() / div, color.green() / div, color.blue() / div); } @@ -136,7 +136,7 @@ void Surface_mesh_item_classification::change_color (int index, float* vmin, flo { for(face_descriptor fd : faces(*(m_mesh->polyhedron()))) { - m_color[fd] = CGAL::Color((unsigned char)(128), + m_color[fd] = CGAL::IO::Color((unsigned char)(128), (unsigned char)(128), (unsigned char)(128)); } @@ -146,7 +146,7 @@ void Surface_mesh_item_classification::change_color (int index, float* vmin, flo for(face_descriptor fd : faces(*(m_mesh->polyhedron()))) { float v = (std::max) (0.f, (std::min)(1.f, m_label_probabilities[corrected_index][fd])); - m_color[fd] = CGAL::Color((unsigned char)(ramp.r(v) * 255), + m_color[fd] = CGAL::IO::Color((unsigned char)(ramp.r(v) * 255), (unsigned char)(ramp.g(v) * 255), (unsigned char)(ramp.b(v) * 255)); } @@ -190,7 +190,7 @@ void Surface_mesh_item_classification::change_color (int index, float* vmin, flo if (v < 0.f) v = 0.f; if (v > 1.f) v = 1.f; - m_color[fd] = CGAL::Color((unsigned char)(ramp.r(v) * 255), + m_color[fd] = CGAL::IO::Color((unsigned char)(ramp.r(v) * 255), (unsigned char)(ramp.g(v) * 255), (unsigned char)(ramp.b(v) * 255)); } diff --git a/Polyhedron/demo/Polyhedron/Plugins/Classification/Surface_mesh_item_classification.h b/Polyhedron/demo/Polyhedron/Plugins/Classification/Surface_mesh_item_classification.h index 1b6b2c1e720..797e88de438 100644 --- a/Polyhedron/demo/Polyhedron/Plugins/Classification/Surface_mesh_item_classification.h +++ b/Polyhedron/demo/Polyhedron/Plugins/Classification/Surface_mesh_item_classification.h @@ -200,8 +200,8 @@ protected: Scene_polyhedron_selection_item* m_selection; Mesh::Property_map m_training; Mesh::Property_map m_classif; - Mesh::Property_map m_color; - Mesh::Property_map m_real_color; + Mesh::Property_map m_color; + Mesh::Property_map m_real_color; std::vector > m_label_probabilities; diff --git a/Polyhedron/demo/Polyhedron/Plugins/Display/Display_property_plugin.cpp b/Polyhedron/demo/Polyhedron/Plugins/Display/Display_property_plugin.cpp index 8b92ffb1b37..c787c901e5b 100644 --- a/Polyhedron/demo/Polyhedron/Plugins/Display/Display_property_plugin.cpp +++ b/Polyhedron/demo/Polyhedron/Plugins/Display/Display_property_plugin.cpp @@ -207,8 +207,8 @@ public: typedef boost::graph_traits::face_descriptor face_descriptor; typedef boost::graph_traits::halfedge_descriptor halfedge_descriptor; typedef boost::graph_traits::vertex_descriptor vertex_descriptor; - SMesh::Property_map vcolors = - sm->property_map("v:color").first; + SMesh::Property_map vcolors = + sm->property_map("v:color").first; SMesh::Property_map vdist= sm->property_map("v:dist").first; typedef CGAL::Buffer_for_vao CPF; @@ -263,7 +263,7 @@ public: } for(vertex_descriptor vd : vertices(*sm)) { - CGAL::Color c = vcolors[vd]; + CGAL::IO::Color c = vcolors[vd]; colors.push_back((float)c.red()/255); colors.push_back((float)c.green()/255); colors.push_back((float)c.blue()/255); @@ -966,8 +966,8 @@ private Q_SLOTS: dock_widget->maxBox->setValue(max); displayLegend(); //} - SMesh::Property_map vcolors = - mesh.add_property_map("v:color", CGAL::Color()).first; + SMesh::Property_map vcolors = + mesh.add_property_map("v:color", CGAL::IO::Color()).first; SMesh::Property_map vdist= mesh.add_property_map("v:dist", 0.0).first; for(boost::graph_traits::vertex_iterator vit = vertices(mesh).begin(); @@ -975,7 +975,7 @@ private Q_SLOTS: ++vit) { double h =(heat_intensity[*vit]-min)/(max-min); - CGAL::Color color( + CGAL::IO::Color color( 255*color_ramp.r(h), 255*color_ramp.g(h), 255*color_ramp.b(h)); @@ -1535,7 +1535,7 @@ private: pit != this->dataset.end(); ++pit) { - CGAL::Color color( + CGAL::IO::Color color( this->parent->color_map[value_index_map[this->property_map[*pit]]].red(), this->parent->color_map[value_index_map[this->property_map[*pit]]].green(), this->parent->color_map[value_index_map[this->property_map[*pit]]].blue()); @@ -1558,7 +1558,7 @@ private: f = 0; if(f>1) f = 1; - CGAL::Color color( + CGAL::IO::Color color( 255*this->parent->color_ramp.r(f), 255*this->parent->color_ramp.g(f), 255*this->parent->color_ramp.b(f)); @@ -1589,13 +1589,13 @@ private: void set_colors_map(std::unordered_map &value_index_map) { - SMesh::Property_map vcolors = - this->dataset.template add_property_map("v:color", CGAL::Color()).first; + SMesh::Property_map vcolors = + this->dataset.template add_property_map("v:color", CGAL::IO::Color()).first; for(boost::graph_traits::vertex_iterator vit = vertices(this->dataset).begin(); vit != vertices(this->dataset).end(); ++vit) { - CGAL::Color color( + CGAL::IO::Color color( this->parent->color_map[value_index_map[this->property_map[*vit]]].red(), this->parent->color_map[value_index_map[this->property_map[*vit]]].green(), this->parent->color_map[value_index_map[this->property_map[*vit]]].blue()); @@ -1605,8 +1605,8 @@ private: void set_colors_ramp() { - SMesh::Property_map vcolors = - this->dataset.template add_property_map("v:color", CGAL::Color()).first; + SMesh::Property_map vcolors = + this->dataset.template add_property_map("v:color", CGAL::IO::Color()).first; float max = this->parent->maxBox; float min = this->parent->minBox; for(boost::graph_traits::vertex_iterator vit = vertices(this->dataset).begin(); @@ -1620,7 +1620,7 @@ private: f = 0; if(f>1) f = 1; - CGAL::Color color( + CGAL::IO::Color color( 255*this->parent->color_ramp.r(f), 255*this->parent->color_ramp.g(f), 255*this->parent->color_ramp.b(f)); @@ -1648,13 +1648,13 @@ private: void set_colors_map(std::unordered_map &value_index_map) { - SMesh::Property_map fcolors = - this->dataset.template add_property_map("f:color", CGAL::Color()).first; + SMesh::Property_map fcolors = + this->dataset.template add_property_map("f:color", CGAL::IO::Color()).first; for(boost::graph_traits::face_iterator fit = faces(this->dataset).begin(); fit != faces(this->dataset).end(); ++fit) { - CGAL::Color color( + CGAL::IO::Color color( this->parent->color_map[value_index_map[this->property_map[*fit]]].red(), this->parent->color_map[value_index_map[this->property_map[*fit]]].green(), this->parent->color_map[value_index_map[this->property_map[*fit]]].blue()); @@ -1664,8 +1664,8 @@ private: void set_colors_ramp() { - SMesh::Property_map fcolors = - this->dataset.template add_property_map("f:color", CGAL::Color()).first; + SMesh::Property_map fcolors = + this->dataset.template add_property_map("f:color", CGAL::IO::Color()).first; float max = this->parent->maxBox; float min = this->parent->minBox; for(boost::graph_traits::face_iterator fit = faces(this->dataset).begin(); @@ -1679,7 +1679,7 @@ private: f = 0; if(f>1) f = 1; - CGAL::Color color( + CGAL::IO::Color color( 255*this->parent->color_ramp.r(f), 255*this->parent->color_ramp.g(f), 255*this->parent->color_ramp.b(f)); diff --git a/Polyhedron/demo/Polyhedron/Plugins/IO/3mf_io_plugin.cpp b/Polyhedron/demo/Polyhedron/Plugins/IO/3mf_io_plugin.cpp index 401834f0a0f..739eb180174 100644 --- a/Polyhedron/demo/Polyhedron/Plugins/IO/3mf_io_plugin.cpp +++ b/Polyhedron/demo/Polyhedron/Plugins/IO/3mf_io_plugin.cpp @@ -32,7 +32,7 @@ class Io_3mf_plugin: typedef std::vector Polygon; typedef std::vector PolygonRange; typedef std::list PolylineRange; - typedef std::vector ColorRange; + typedef std::vector ColorRange; void init() Q_DECL_OVERRIDE { QMenu* menuFile = CGAL::Three::Three::mainWindow()->findChild("menuFile"); @@ -76,10 +76,10 @@ class Io_3mf_plugin: std::vector all_polygons; std::vector names; QList result; - std::vector > all_colors; + std::vector > all_colors; int nb_meshes = - CGAL::read_3MF(fileinfo.filePath().toUtf8().toStdString(), - all_points, all_polygons, all_colors, names); + CGAL::IO::read_3MF(fileinfo.filePath().toUtf8().toStdString(), + all_points, all_polygons, all_colors, names); if(nb_meshes <0 ) { ok = false; @@ -100,7 +100,7 @@ class Io_3mf_plugin: } SMesh mesh; PMP::polygon_soup_to_polygon_mesh(points, triangles, mesh); - CGAL::Color first = colors.front(); + CGAL::IO::Color first = colors.front(); bool need_pmap = false; for(auto color : colors) { @@ -112,16 +112,16 @@ class Io_3mf_plugin: } if(need_pmap) { - SMesh::Property_map fcolor = - mesh.add_property_map("f:color",first).first; + SMesh::Property_map fcolor = + mesh.add_property_map("f:color",first).first; for(std::size_t pid = 0; pid < colors.size(); ++pid) { put(fcolor, face_descriptor(pid), colors[pid]);//should work bc mesh is just created and shouldn't have any destroyed face. Not so sure bc of orientation though. } } Scene_surface_mesh_item* sm_item = new Scene_surface_mesh_item(mesh); - if(first == CGAL::Color(0,0,0,0)) - first = CGAL::Color(50,80,120,255); + if(first == CGAL::IO::Color(0,0,0,0)) + first = CGAL::IO::Color(50,80,120,255); sm_item->setColor(QColor(first.red(), first.green(), first.blue())); sm_item->setProperty("already_colored", true); sm_item->setName(names[i].data()); @@ -206,13 +206,13 @@ class Io_3mf_plugin: triangles.push_back(triangle); } - std::vector colors; + std::vector colors; //if item is multicolor, fill colors with f:color if(sm_item->isItemMulticolor()) { colors.reserve(triangles.size()); - SMesh::Property_map fcolors = - mesh.property_map("f:color").first; + SMesh::Property_map fcolors = + mesh.property_map("f:color").first; for(auto fd : mesh.faces()) { colors.push_back(get(fcolors, fd)); @@ -227,7 +227,7 @@ class Io_3mf_plugin: { int pid = get(fpid, fd); QColor q_color = sm_item->color_vector()[pid]; - colors.push_back(CGAL::Color(q_color.red(), q_color.green(), + colors.push_back(CGAL::IO::Color(q_color.red(), q_color.green(), q_color.blue(), q_color.alpha())); } } @@ -246,7 +246,7 @@ class Io_3mf_plugin: for(Scene_points_with_normal_item* pts_item : pts_items) { QColor qc = pts_item->color(); - CGAL::Color color(qc.red(), qc.green(), qc.blue()); + CGAL::IO::Color color(qc.red(), qc.green(), qc.blue()); CGAL::IO::write_point_cloud_to_model(pts_item->point_set()->points(), color, pts_item->name().toStdString(), &pMeshObject, pModel); @@ -257,7 +257,7 @@ class Io_3mf_plugin: pol_it != pol_item->polylines.end(); ++pol_it) { QColor qc = pol_item->color(); - CGAL::Color color(qc.red(), qc.green(), qc.blue()); + CGAL::IO::Color color(qc.red(), qc.green(), qc.blue()); CGAL::IO::write_polyline_to_model(*pol_it,color, pol_item->name().toStdString(), &pMeshObject, pModel); diff --git a/Polyhedron/demo/Polyhedron/Plugins/IO/GOCAD_io_plugin.cpp b/Polyhedron/demo/Polyhedron/Plugins/IO/GOCAD_io_plugin.cpp index 1e4e522cf45..feeef33572e 100644 --- a/Polyhedron/demo/Polyhedron/Plugins/IO/GOCAD_io_plugin.cpp +++ b/Polyhedron/demo/Polyhedron/Plugins/IO/GOCAD_io_plugin.cpp @@ -74,7 +74,7 @@ Polyhedron_demo_gocad_plugin::load(QFileInfo fileinfo, bool& ok, bool add_to_sce SMesh& P = * const_cast(item->polyhedron()); std::pair name_and_color; - if(! CGAL::read_GOCAD(in, name_and_color, P)) + if(! CGAL::IO::read_GOCAD(in, name_and_color, P)) { std::cerr << "Error: Invalid polyhedron" << std::endl; delete item; @@ -121,7 +121,7 @@ save(QFileInfo fileinfo,QList& items) std::ofstream out(fileinfo.filePath().toUtf8()); out.precision (std::numeric_limits::digits10 + 2); SMesh* poly = const_cast(sm_item->polyhedron()); - CGAL::write_GOCAD(out, qPrintable(fileinfo.baseName()), *poly); + CGAL::IO::write_GOCAD(out, qPrintable(fileinfo.baseName()), *poly); items.pop_front(); return true; diff --git a/Polyhedron/demo/Polyhedron/Plugins/IO/LAS_io_plugin.cpp b/Polyhedron/demo/Polyhedron/Plugins/IO/LAS_io_plugin.cpp index ee4b373b160..a46bc54d3bf 100644 --- a/Polyhedron/demo/Polyhedron/Plugins/IO/LAS_io_plugin.cpp +++ b/Polyhedron/demo/Polyhedron/Plugins/IO/LAS_io_plugin.cpp @@ -40,7 +40,7 @@ load(QFileInfo fileinfo, bool& ok, bool add_to_scene) { item->point_set()->clear(); - ok = CGAL::read_LAS (in, *(item->point_set())) && !item->isEmpty(); + ok = CGAL::IO::read_LAS (in, *(item->point_set())) && !item->isEmpty(); if(ok) { std::cerr << item->point_set()->info(); @@ -95,7 +95,7 @@ bool Polyhedron_demo_las_plugin::save(QFileInfo fileinfo,QListpoint_set()->reset_indices(); - return CGAL::write_LAS(out, *(point_set_item->point_set())); + return CGAL::IO::write_LAS(out, *(point_set_item->point_set())); } diff --git a/Polyhedron/demo/Polyhedron/Plugins/IO/OFF_io_plugin.cpp b/Polyhedron/demo/Polyhedron/Plugins/IO/OFF_io_plugin.cpp index 87b92228a80..e7de52da567 100644 --- a/Polyhedron/demo/Polyhedron/Plugins/IO/OFF_io_plugin.cpp +++ b/Polyhedron/demo/Polyhedron/Plugins/IO/OFF_io_plugin.cpp @@ -221,7 +221,7 @@ Polyhedron_demo_off_plugin::load_obj(QFileInfo fileinfo) { //if not polygonmesh load in soup std::vector points; std::vector > polygons; - if(CGAL::read_OBJ(in, points, polygons)) + if(CGAL::IO::read_OBJ(in, points, polygons)) { Scene_polygon_soup_item* soup_item = new Scene_polygon_soup_item(); soup_item->load(points, polygons); @@ -272,7 +272,7 @@ save(QFileInfo fileinfo,QList& items) } if(fileinfo.suffix().toLower() == "obj"){ bool res = (sm_item && sm_item->save_obj(out)) - || (soup_item && CGAL::write_OBJ(out, soup_item->points(), soup_item->polygons())); + || (soup_item && CGAL::IO::write_OBJ(out, soup_item->points(), soup_item->polygons())); if(res) { items.pop_front(); diff --git a/Polyhedron/demo/Polyhedron/Plugins/IO/PLY_io_plugin.cpp b/Polyhedron/demo/Polyhedron/Plugins/IO/PLY_io_plugin.cpp index d649629168a..92a452b3184 100644 --- a/Polyhedron/demo/Polyhedron/Plugins/IO/PLY_io_plugin.cpp +++ b/Polyhedron/demo/Polyhedron/Plugins/IO/PLY_io_plugin.cpp @@ -102,7 +102,7 @@ load(QFileInfo fileinfo, bool& ok, bool add_to_scene) { // First try mesh std::string comments; Scene_surface_mesh_item* sm_item = new Scene_surface_mesh_item(); - if (CGAL::read_PLY(in, *sm_item->face_graph(), comments)) + if (CGAL::IO::read_PLY(in, *sm_item->face_graph(), comments)) { if(sm_item->face_graph()->property_map("f:patch_id").second) { @@ -129,10 +129,10 @@ load(QFileInfo fileinfo, bool& ok, bool add_to_scene) { // else try polygon soup std::vector points; std::vector > polygons; - std::vector fcolors; - std::vector vcolors; + std::vector fcolors; + std::vector vcolors; - if (!(CGAL::read_PLY (in, points, polygons, fcolors, vcolors))) + if (!(CGAL::IO::read_PLY (in, points, polygons, fcolors, vcolors))) { QApplication::restoreOverrideCursor(); ok = false; @@ -227,7 +227,7 @@ save(QFileInfo fileinfo,QList& items) if (soup_item) { bool res = - CGAL::write_PLY (out, soup_item->points(), soup_item->polygons()); + CGAL::IO::write_PLY (out, soup_item->points(), soup_item->polygons()); if(res) items.pop_front(); return res; @@ -239,7 +239,7 @@ save(QFileInfo fileinfo,QList& items) if (sm_item) { bool res = - CGAL::write_PLY(out, *(sm_item->polyhedron()), sm_item->comments()); + CGAL::IO::write_PLY(out, *(sm_item->polyhedron()), sm_item->comments()); if(res) items.pop_front(); return res; @@ -251,7 +251,7 @@ save(QFileInfo fileinfo,QList& items) if (stm_item) { bool res = - CGAL::write_PLY(out, *(stm_item->textured_face_graph())); + CGAL::IO::write_PLY(out, *(stm_item->textured_face_graph())); if(res) items.pop_front(); return res; diff --git a/Polyhedron/demo/Polyhedron/Plugins/IO/STL_io_plugin.cpp b/Polyhedron/demo/Polyhedron/Plugins/IO/STL_io_plugin.cpp index 90626158e40..e144d24db4d 100644 --- a/Polyhedron/demo/Polyhedron/Plugins/IO/STL_io_plugin.cpp +++ b/Polyhedron/demo/Polyhedron/Plugins/IO/STL_io_plugin.cpp @@ -78,7 +78,7 @@ load(QFileInfo fileinfo, bool& ok, bool add_to_scene){ } std::vector points; std::vector > triangles; - if (!CGAL::read_polygon_soup(fileinfo.filePath().toUtf8().toStdString(), points, triangles)) + if (!CGAL::IO::read_polygon_soup(fileinfo.filePath().toUtf8().toStdString(), points, triangles)) { std::cerr << "Error: invalid STL file" << std::endl; ok = false; @@ -156,7 +156,7 @@ save(QFileInfo fileinfo,QList& items) if (sm_item) { - CGAL::write_STL(out, *sm_item->face_graph()); + CGAL::IO::write_STL(out, *sm_item->face_graph()); items.pop_front(); return true; } diff --git a/Polyhedron/demo/Polyhedron/Plugins/IO/VTK_io_plugin.cpp b/Polyhedron/demo/Polyhedron/Plugins/IO/VTK_io_plugin.cpp index b9a83c648c5..12616332198 100644 --- a/Polyhedron/demo/Polyhedron/Plugins/IO/VTK_io_plugin.cpp +++ b/Polyhedron/demo/Polyhedron/Plugins/IO/VTK_io_plugin.cpp @@ -241,7 +241,7 @@ public: std::ofstream os(output_filename.data()); os << std::setprecision(16); //write header - CGAL::write_VTP(os, *mesh); + CGAL::IO::write_VTP(os, *mesh); } } else diff --git a/Polyhedron/demo/Polyhedron/Plugins/IO/WKT_io_plugin.cpp b/Polyhedron/demo/Polyhedron/Plugins/IO/WKT_io_plugin.cpp index 5c509345eda..9dbd44d2abe 100644 --- a/Polyhedron/demo/Polyhedron/Plugins/IO/WKT_io_plugin.cpp +++ b/Polyhedron/demo/Polyhedron/Plugins/IO/WKT_io_plugin.cpp @@ -60,7 +60,7 @@ load(QFileInfo fileinfo, bool& ok, bool add_to_scene) { } std::list > polylines; - CGAL::read_multi_linestring_WKT (in, polylines); + CGAL::IO::read_multi_linestring_WKT (in, polylines); Scene_polylines_item* item = new Scene_polylines_item; item->polylines = polylines; @@ -101,7 +101,7 @@ save(QFileInfo fileinfo,QList& items) qobject_cast(item); if (polylines_item) { - CGAL::write_multi_linestring_WKT (out, polylines_item->polylines); + CGAL::IO::write_multi_linestring_WKT (out, polylines_item->polylines); items.pop_front(); return true; } diff --git a/Polyhedron/demo/Polyhedron/Plugins/PMP/Orient_soup_plugin.cpp b/Polyhedron/demo/Polyhedron/Plugins/PMP/Orient_soup_plugin.cpp index b98ab4052a4..467331c4fd2 100644 --- a/Polyhedron/demo/Polyhedron/Plugins/PMP/Orient_soup_plugin.cpp +++ b/Polyhedron/demo/Polyhedron/Plugins/PMP/Orient_soup_plugin.cpp @@ -113,28 +113,28 @@ QList Polyhedron_demo_orient_soup_plugin::actions() const { << actionClean; } -void set_vcolors(SMesh* smesh, std::vector colors) +void set_vcolors(SMesh* smesh, std::vector colors) { typedef SMesh SMesh; typedef boost::graph_traits::vertex_descriptor vertex_descriptor; - SMesh::Property_map vcolors = - smesh->property_map("v:color").first; + SMesh::Property_map vcolors = + smesh->property_map("v:color").first; bool created; - boost::tie(vcolors, created) = smesh->add_property_map("v:color",CGAL::Color(0,0,0)); + boost::tie(vcolors, created) = smesh->add_property_map("v:color",CGAL::IO::Color(0,0,0)); assert(colors.size()==smesh->number_of_vertices()); int color_id = 0; for(vertex_descriptor vd : vertices(*smesh)) vcolors[vd] = colors[color_id++]; } -void set_fcolors(SMesh* smesh, std::vector colors) +void set_fcolors(SMesh* smesh, std::vector colors) { typedef SMesh SMesh; typedef boost::graph_traits::face_descriptor face_descriptor; - SMesh::Property_map fcolors = - smesh->property_map("f:color").first; + SMesh::Property_map fcolors = + smesh->property_map("f:color").first; bool created; - boost::tie(fcolors, created) = smesh->add_property_map("f:color",CGAL::Color(0,0,0)); + boost::tie(fcolors, created) = smesh->add_property_map("f:color",CGAL::IO::Color(0,0,0)); assert(colors.size()==smesh->number_of_faces()); int color_id = 0; for(face_descriptor fd : faces(*smesh)) diff --git a/Polyhedron/demo/Polyhedron/Plugins/Surface_mesh/Surface_mesh_approximation_plugin.cpp b/Polyhedron/demo/Polyhedron/Plugins/Surface_mesh/Surface_mesh_approximation_plugin.cpp index bba6d446aa6..bf993b55c90 100644 --- a/Polyhedron/demo/Polyhedron/Plugins/Surface_mesh/Surface_mesh_approximation_plugin.cpp +++ b/Polyhedron/demo/Polyhedron/Plugins/Surface_mesh/Surface_mesh_approximation_plugin.cpp @@ -254,10 +254,10 @@ public: cvx_hull_points.push_back(origin + p.x() * base1 + p.y() * base2); } } - std::vector fcolors; + std::vector fcolors; for(const QColor& c : approx.proxy_colors()) - fcolors.push_back(CGAL::Color(c.red(), c.green(), c.blue())); - approx.visual_items().planes->load(cvx_hull_points, cvx_hulls, fcolors, std::vector()); + fcolors.push_back(CGAL::IO::Color(c.red(), c.green(), c.blue())); + approx.visual_items().planes->load(cvx_hull_points, cvx_hulls, fcolors, std::vector()); } public Q_SLOTS: diff --git a/Polyhedron/demo/Polyhedron/Plugins/Surface_mesh_deformation/Scene_edit_polyhedron_item.cpp b/Polyhedron/demo/Polyhedron/Plugins/Surface_mesh_deformation/Scene_edit_polyhedron_item.cpp index 3709992f052..f316258cb5d 100644 --- a/Polyhedron/demo/Polyhedron/Plugins/Surface_mesh_deformation/Scene_edit_polyhedron_item.cpp +++ b/Polyhedron/demo/Polyhedron/Plugins/Surface_mesh_deformation/Scene_edit_polyhedron_item.cpp @@ -357,7 +357,7 @@ void Scene_edit_polyhedron_item_priv::compute_normals_and_vertices(Mesh* mesh) if(spheres) { - CGAL::Color c(0,255,0); + CGAL::IO::Color c(0,255,0); EPICK::Point_3 point(p.x()+offset.x, p.y()+offset.y, p.z()+offset.z); spheres->add_sphere(EPICK::Sphere_3(point, length_of_axis/15.0*length_of_axis/15.0), 0, c); } @@ -391,7 +391,7 @@ void Scene_edit_polyhedron_item_priv::compute_normals_and_vertices(Mesh* mesh) if(spheres_ctrl) { - CGAL::Color c(255*r,0,255*b); + CGAL::IO::Color c(255*r,0,255*b); EPICK::Point_3 center(p.x()+offset.x, p.y()+offset.y, diff --git a/Polyhedron/demo/Polyhedron/Scene_c3t3_item.cpp b/Polyhedron/demo/Polyhedron/Scene_c3t3_item.cpp index ea6e7ec566b..3b604818e77 100644 --- a/Polyhedron/demo/Polyhedron/Scene_c3t3_item.cpp +++ b/Polyhedron/demo/Polyhedron/Scene_c3t3_item.cpp @@ -186,7 +186,7 @@ public : } void addTriangle(const Tr::Bare_point& pa, const Tr::Bare_point& pb, - const Tr::Bare_point& pc, const CGAL::Color color) + const Tr::Bare_point& pc, const CGAL::IO::Color color) { const CGAL::qglviewer::Vec offset = Three::mainViewer()->offset(); Geom_traits::Vector_3 n = cross_product(pb - pa, pc - pa); @@ -1323,7 +1323,7 @@ void Scene_c3t3_item_priv::computeIntersection(const Primitive& cell) const Tr::Bare_point& pc = wp2p(ch->vertex(2)->point()); const Tr::Bare_point& pd = wp2p(ch->vertex(3)->point()); - CGAL::Color color(UC(c.red()), UC(c.green()), UC(c.blue())); + CGAL::IO::Color color(UC(c.red()), UC(c.green()), UC(c.blue())); intersection->addTriangle(pb, pa, pc, color); intersection->addTriangle(pa, pb, pd, color); @@ -1415,7 +1415,7 @@ void Scene_c3t3_item_priv::computeSpheres() typedef unsigned char UC; tr_vertices.push_back(*vit); spheres->add_sphere(Geom_traits::Sphere_3(center, radius),s_id++, - CGAL::Color(UC(c.red()), UC(c.green()), UC(c.blue()))); + CGAL::IO::Color(UC(c.red()), UC(c.green()), UC(c.blue()))); } spheres->invalidateOpenGLBuffers(); diff --git a/Polyhedron/demo/Polyhedron/Scene_points_with_normal_item.cpp b/Polyhedron/demo/Polyhedron/Scene_points_with_normal_item.cpp index deaf33e1cc7..3af64ff323c 100644 --- a/Polyhedron/demo/Polyhedron/Scene_points_with_normal_item.cpp +++ b/Polyhedron/demo/Polyhedron/Scene_points_with_normal_item.cpp @@ -554,7 +554,7 @@ bool Scene_points_with_normal_item::read_ply_point_set(std::istream& stream) d->m_points->clear(); - bool ok = CGAL::read_PLY(stream, *(d->m_points), d->m_comments) && !isEmpty(); + bool ok = CGAL::IO::read_PLY(stream, *(d->m_points), d->m_comments) && !isEmpty(); d->point_Slider->setValue(CGAL::Three::Three::getDefaultPointSize()); std::cerr << d->m_points->info(); @@ -588,7 +588,7 @@ bool Scene_points_with_normal_item::write_ply_point_set(std::ostream& stream, bo if (binary) CGAL::set_binary_mode (stream); - return CGAL::write_PLY(stream, *(d->m_points), d->m_comments); + return CGAL::IO::write_PLY(stream, *(d->m_points), d->m_comments); } // Loads point set from .OFF file @@ -597,7 +597,7 @@ bool Scene_points_with_normal_item::read_off_point_set(std::istream& stream) Q_ASSERT(d->m_points != nullptr); d->m_points->clear(); - bool ok = CGAL::read_OFF(stream, *(d->m_points)) && !isEmpty(); + bool ok = CGAL::IO::read_OFF(stream, *(d->m_points)) && !isEmpty(); d->point_Slider->setValue(CGAL::Three::Three::getDefaultPointSize()); invalidateOpenGLBuffers(); @@ -611,7 +611,7 @@ bool Scene_points_with_normal_item::write_off_point_set(std::ostream& stream) co d->m_points->reset_indices(); - return CGAL::write_OFF(stream, *(d->m_points)); + return CGAL::IO::write_OFF(stream, *(d->m_points)); } // Loads point set from .XYZ file @@ -621,7 +621,7 @@ bool Scene_points_with_normal_item::read_xyz_point_set(std::istream& stream) d->m_points->clear(); - bool ok = CGAL::read_XYZ (stream, *(d->m_points)) && !isEmpty(); + bool ok = CGAL::IO::read_XYZ (stream, *(d->m_points)) && !isEmpty(); d->point_Slider->setValue(CGAL::Three::Three::getDefaultPointSize()); invalidateOpenGLBuffers(); @@ -635,7 +635,7 @@ bool Scene_points_with_normal_item::write_xyz_point_set(std::ostream& stream) co d->m_points->reset_indices(); - return CGAL::write_XYZ(stream, *(d->m_points)); + return CGAL::IO::write_XYZ(stream, *(d->m_points)); } QString diff --git a/Polyhedron/demo/Polyhedron/Scene_polygon_soup_item.cpp b/Polyhedron/demo/Polyhedron/Scene_polygon_soup_item.cpp index 40935ddfffb..6e106c555eb 100644 --- a/Polyhedron/demo/Polyhedron/Scene_polygon_soup_item.cpp +++ b/Polyhedron/demo/Polyhedron/Scene_polygon_soup_item.cpp @@ -186,7 +186,7 @@ Scene_polygon_soup_item_priv::triangulate_polygon(Polygons_iterator pit, int pol positions_poly.push_back(ffit->vertex(2)->point().y()); positions_poly.push_back(ffit->vertex(2)->point().z()); - CGAL::Color color; + CGAL::IO::Color color; if(!soup->fcolors.empty()) color = soup->fcolors[polygon_id]; for(int i=0; i<3; i++) @@ -202,7 +202,7 @@ Scene_polygon_soup_item_priv::triangulate_polygon(Polygons_iterator pit, int pol } if(!soup->vcolors.empty()) { - CGAL::Color vcolor = soup->vcolors[triangulation.v2v[ffit->vertex(i)]]; + CGAL::IO::Color vcolor = soup->vcolors[triangulation.v2v[ffit->vertex(i)]]; v_colors.push_back((float)vcolor.red()/255); v_colors.push_back((float)vcolor.green()/255); v_colors.push_back((float)vcolor.blue()/255); @@ -262,7 +262,7 @@ Scene_polygon_soup_item_priv::compute_normals_and_vertices() const{ positions_poly.push_back(p.z()+offset.z); if(!soup->fcolors.empty()) { - const CGAL::Color color = soup->fcolors[nb]; + const CGAL::IO::Color color = soup->fcolors[nb]; f_colors.push_back((float)color.red()/255); f_colors.push_back((float)color.green()/255); f_colors.push_back((float)color.blue()/255); @@ -270,7 +270,7 @@ Scene_polygon_soup_item_priv::compute_normals_and_vertices() const{ if(!soup->vcolors.empty()) { - const CGAL::Color color = soup->vcolors[it->at(i)]; + const CGAL::IO::Color color = soup->vcolors[it->at(i)]; v_colors.push_back((float)color.red()/255); v_colors.push_back((float)color.green()/255); v_colors.push_back((float)color.blue()/255); @@ -350,9 +350,9 @@ Scene_polygon_soup_item::load(std::istream& in) else d->soup->clear(); - bool result = CGAL::read_OFF(in, d->soup->points, d->soup->polygons, - CGAL::parameters::vertex_color_output_iterator(std::back_inserter(d->soup->vcolors)) - .face_color_output_iterator(std::back_inserter(d->soup->fcolors))); + bool result = CGAL::IO::read_OFF(in, d->soup->points, d->soup->polygons, + CGAL::parameters::vertex_color_output_iterator(std::back_inserter(d->soup->vcolors)) + .face_color_output_iterator(std::back_inserter(d->soup->fcolors))); invalidateOpenGLBuffers(); return result; @@ -689,8 +689,8 @@ void Scene_polygon_soup_item::load(const std::vector& points, const std:: template void Scene_polygon_soup_item::load(const std::vector& points, const std::vector& polygons, - const std::vector& fcolors, - const std::vector& vcolors) + const std::vector& fcolors, + const std::vector& vcolors) { load (points, polygons); @@ -708,8 +708,8 @@ template SCENE_POLYGON_SOUP_ITEM_EXPORT void Scene_polygon_soup_item::load& points, const std::vector >& polygons); template SCENE_POLYGON_SOUP_ITEM_EXPORT void Scene_polygon_soup_item::load > (const std::vector& points, const std::vector >& polygons, - const std::vector& fcolors, - const std::vector& vcolors); + const std::vector& fcolors, + const std::vector& vcolors); // Local Variables: // c-basic-offset: 4 @@ -718,8 +718,8 @@ template SCENE_POLYGON_SOUP_ITEM_EXPORT void Scene_polygon_soup_item::loadsoup->points; } const Scene_polygon_soup_item::Polygons& Scene_polygon_soup_item::polygons() const { return d->soup->polygons; } bool Scene_polygon_soup_item::isDataColored() { return d->soup->fcolors.size()>0 || d->soup->vcolors.size()>0;} -std::vector Scene_polygon_soup_item::getVColors() const{return d->soup->vcolors;} -std::vector Scene_polygon_soup_item::getFColors() const{return d->soup->fcolors;} +std::vector Scene_polygon_soup_item::getVColors() const{return d->soup->vcolors;} +std::vector Scene_polygon_soup_item::getFColors() const{return d->soup->fcolors;} void Scene_polygon_soup_item::itemAboutToBeDestroyed(Scene_item *item) { diff --git a/Polyhedron/demo/Polyhedron/Scene_polygon_soup_item.h b/Polyhedron/demo/Polyhedron/Scene_polygon_soup_item.h index b7a849ca566..e20306ca916 100644 --- a/Polyhedron/demo/Polyhedron/Scene_polygon_soup_item.h +++ b/Polyhedron/demo/Polyhedron/Scene_polygon_soup_item.h @@ -20,7 +20,7 @@ struct Polygon_soup typedef std::map, std::set > Edges_map; typedef boost::array Edge; typedef std::vector Polygons; - typedef std::vector Colors; + typedef std::vector Colors; typedef std::set Edges; typedef Polygons::size_type size_type; @@ -120,16 +120,16 @@ public: template void load(const std::vector& points, const std::vector& polygons, - const std::vector& fcolors, - const std::vector& vcolors); + const std::vector& fcolors, + const std::vector& vcolors); bool load(std::istream& in); void load(Scene_surface_mesh_item*); bool isDataColored(); bool save(std::ostream& out) const; - std::vector getVColors() const; - std::vector getFColors() const; + std::vector getVColors() const; + std::vector getFColors() const; QString toolTip() const Q_DECL_OVERRIDE; // Indicate if rendering mode is supported diff --git a/Polyhedron/demo/Polyhedron/Scene_polylines_item.cpp b/Polyhedron/demo/Polyhedron/Scene_polylines_item.cpp index 328539eb94c..7dfc1825da6 100644 --- a/Polyhedron/demo/Polyhedron/Scene_polylines_item.cpp +++ b/Polyhedron/demo/Polyhedron/Scene_polylines_item.cpp @@ -253,7 +253,7 @@ Scene_polylines_item_private::computeSpheres() colors[2] = 200; } - CGAL::Color c(colors[0], colors[1], colors[2]); + CGAL::IO::Color c(colors[0], colors[1], colors[2]); spheres->add_sphere(K::Sphere_3(center+offset, spheres_drawn_square_radius),s_id++, c); } spheres->setToolTip( diff --git a/Polyhedron/demo/Polyhedron/Scene_spheres_item.cpp b/Polyhedron/demo/Polyhedron/Scene_spheres_item.cpp index 21df39ff5b0..836b4641636 100644 --- a/Polyhedron/demo/Polyhedron/Scene_spheres_item.cpp +++ b/Polyhedron/demo/Polyhedron/Scene_spheres_item.cpp @@ -22,7 +22,7 @@ struct Scene_spheres_item_priv { typedef CGAL::Exact_predicates_inexact_constructions_kernel Kernel; typedef CGAL::Sphere_3 Sphere; - typedef std::pair Sphere_pair; + typedef std::pair Sphere_pair; typedef std::vector > Spheres_container; Scene_spheres_item_priv(bool planed, std::size_t max_index, Scene_spheres_item* parent, bool pickable) @@ -247,7 +247,7 @@ void Scene_spheres_item::drawEdges(Viewer_interface *viewer) const getEdgeContainer(0)->draw(viewer, false); } -void Scene_spheres_item::add_sphere(const Sphere &sphere, std::size_t index, CGAL::Color color) +void Scene_spheres_item::add_sphere(const Sphere &sphere, std::size_t index, CGAL::IO::Color color) { if((int)index > (int)d->spheres.size() - 1) d->spheres.resize(index+1); diff --git a/Polyhedron/demo/Polyhedron/Scene_spheres_item.h b/Polyhedron/demo/Polyhedron/Scene_spheres_item.h index 7520a4fca3e..aa040096054 100644 --- a/Polyhedron/demo/Polyhedron/Scene_spheres_item.h +++ b/Polyhedron/demo/Polyhedron/Scene_spheres_item.h @@ -30,7 +30,7 @@ class SCENE_BASIC_OBJECTS_EXPORT Scene_spheres_item public: typedef CGAL::Exact_predicates_inexact_constructions_kernel Kernel; typedef CGAL::Sphere_3 Sphere; - typedef std::pair Sphere_pair; + typedef std::pair Sphere_pair; typedef std::vector > Spheres_container; Scene_spheres_item(Scene_group_item* parent, std::size_t max_index = 0, bool planed = false, bool pickable = true); @@ -45,7 +45,7 @@ public: return (m == Gouraud || m == Wireframe); } void compute_bbox() const Q_DECL_OVERRIDE; - void add_sphere(const Sphere &sphere, std::size_t index = 0, CGAL::Color = CGAL::Color(120,120,120)); + void add_sphere(const Sphere &sphere, std::size_t index = 0, CGAL::IO::Color = CGAL::IO::Color(120,120,120)); void clear_spheres(); void setPrecision(int prec); void gl_initialization(CGAL::Three::Viewer_interface* viewer); diff --git a/Polyhedron/demo/Polyhedron/Scene_surface_mesh_item.cpp b/Polyhedron/demo/Polyhedron/Scene_surface_mesh_item.cpp index b275fc3db75..d24357f2f1c 100644 --- a/Polyhedron/demo/Polyhedron/Scene_surface_mesh_item.cpp +++ b/Polyhedron/demo/Polyhedron/Scene_surface_mesh_item.cpp @@ -211,7 +211,7 @@ struct Scene_surface_mesh_item_priv{ void initialize_colors() const; void invalidate_stats(); void initializeBuffers(CGAL::Three::Viewer_interface *) const; - void addFlatData(Point, EPICK::Vector_3, CGAL::Color *, Scene_item_rendering_helper::Gl_data_names name) const; + void addFlatData(Point, EPICK::Vector_3, CGAL::IO::Color *, Scene_item_rendering_helper::Gl_data_names name) const; void* get_aabb_tree(); QList triangulate_primitive(face_descriptor fit, EPICK::Vector_3 normal); @@ -226,13 +226,13 @@ struct Scene_surface_mesh_item_priv{ void triangulate_facet(face_descriptor fd, SMesh::Property_map *fnormals, - SMesh::Property_map *fcolors, + SMesh::Property_map *fcolors, boost::property_map< SMesh, boost::vertex_index_t >::type *im, Scene_item_rendering_helper::Gl_data_names name, bool index) const; void triangulate_convex_facet(face_descriptor fd, SMesh::Property_map *fnormals, - SMesh::Property_map *fcolors, + SMesh::Property_map *fcolors, boost::property_map< SMesh, boost::vertex_index_t >::type *im, Scene_item_rendering_helper::Gl_data_names name, bool index) const; @@ -384,7 +384,7 @@ Scene_surface_mesh_item::color_vector() } -void Scene_surface_mesh_item_priv::addFlatData(Point p, EPICK::Vector_3 n, CGAL::Color *c, Scene_item_rendering_helper::Gl_data_names name) const +void Scene_surface_mesh_item_priv::addFlatData(Point p, EPICK::Vector_3 n, CGAL::IO::Color *c, Scene_item_rendering_helper::Gl_data_names name) const { const CGAL::qglviewer::Vec offset = static_cast(CGAL::QGLViewer::QGLViewerPool().first())->offset(); if(name.testFlag(Scene_item_rendering_helper::GEOMETRY)) @@ -443,11 +443,11 @@ void Scene_surface_mesh_item_priv::compute_elements(Scene_item_rendering_helper: SMesh::Property_map positions = smesh_->points(); - SMesh::Property_map vcolors = - smesh_->property_map("v:color").first; + SMesh::Property_map vcolors = + smesh_->property_map("v:color").first; - SMesh::Property_map fcolors = - smesh_->property_map("f:color").first; + SMesh::Property_map fcolors = + smesh_->property_map("f:color").first; boost::property_map< SMesh, boost::vertex_index_t >::type im = get(boost::vertex_index, *smesh_); @@ -508,8 +508,8 @@ void Scene_surface_mesh_item_priv::compute_elements(Scene_item_rendering_helper: { has_fpatch_id = smesh_->property_map("f:patch_id").second; - has_fcolors = smesh_->property_map("f:color").second; - has_vcolors = smesh_->property_map("v:color").second; + has_fcolors = smesh_->property_map("f:color").second; + has_vcolors = smesh_->property_map("v:color").second; } if(name.testFlag(Scene_item_rendering_helper::GEOMETRY)) { @@ -564,12 +564,12 @@ void Scene_surface_mesh_item_priv::compute_elements(Scene_item_rendering_helper: //The sharp features detection produces patch ids >=1, this //is meant to insure the wanted id is in the range [min,max] QColor c = item->color_vector()[fpatch_id_map[fd] - min_patch_id]; - CGAL::Color color(c.red(),c.green(),c.blue()); + CGAL::IO::Color color(c.red(),c.green(),c.blue()); CPF::add_color_in_buffer(color, f_colors); } else if(has_fcolors) { - CGAL::Color c = fcolors[fd]; + CGAL::IO::Color c = fcolors[fd]; CPF::add_color_in_buffer(c, f_colors); } } @@ -589,11 +589,11 @@ void Scene_surface_mesh_item_priv::compute_elements(Scene_item_rendering_helper: halfedge_descriptor hd = halfedge(fd, *smesh_); Point p = positions[source(hd, *smesh_)]; EPICK::Vector_3 n = fnormals[fd]; - CGAL::Color *c; + CGAL::IO::Color *c; if(has_fpatch_id) { QColor color = item->color_vector()[fpatch_id_map[fd] - min_patch_id]; - c = new CGAL::Color(color.red(),color.green(),color.blue()); + c = new CGAL::IO::Color(color.red(),color.green(),color.blue()); } else if(has_fcolors) c= &fcolors[fd]; @@ -648,7 +648,7 @@ void Scene_surface_mesh_item_priv::compute_elements(Scene_item_rendering_helper: { for(vertex_descriptor vd : vertices(*smesh_)) { - CGAL::Color c = vcolors[vd]; + CGAL::IO::Color c = vcolors[vd]; v_colors.push_back((float)c.red()/255); v_colors.push_back((float)c.green()/255); v_colors.push_back((float)c.blue()/255); @@ -896,7 +896,7 @@ void Scene_surface_mesh_item_priv::checkFloat()const void Scene_surface_mesh_item_priv::triangulate_convex_facet(face_descriptor fd, SMesh::Property_map *fnormals, - SMesh::Property_map *fcolors, + SMesh::Property_map *fcolors, boost::property_map< SMesh, boost::vertex_index_t >::type *im, Scene_item_rendering_helper::Gl_data_names name, bool index) const @@ -916,11 +916,11 @@ void Scene_surface_mesh_item_priv::triangulate_convex_facet(face_descriptor fd, p2 = smesh_->point(v2); if(!index) { - CGAL::Color* color; + CGAL::IO::Color* color; if(has_fpatch_id) { QColor c = item->color_vector()[fpatch_id_map[fd] - min_patch_id]; - color = new CGAL::Color(c.red(),c.green(),c.blue()); + color = new CGAL::IO::Color(c.red(),c.green(),c.blue()); } else if(has_fcolors) color = &(*fcolors)[fd]; @@ -953,7 +953,7 @@ void Scene_surface_mesh_item_priv::triangulate_convex_facet(face_descriptor fd, void Scene_surface_mesh_item_priv::triangulate_facet(face_descriptor fd, SMesh::Property_map *fnormals, - SMesh::Property_map *fcolors, + SMesh::Property_map *fcolors, boost::property_map< SMesh, boost::vertex_index_t >::type *im, Scene_item_rendering_helper::Gl_data_names name, bool index) const @@ -1008,11 +1008,11 @@ Scene_surface_mesh_item_priv::triangulate_facet(face_descriptor fd, //adds the vertices, normals and colors to the appropriate vectors if(!index) { - CGAL::Color* color; + CGAL::IO::Color* color; if(has_fpatch_id) { QColor c= item->color_vector()[fpatch_id_map[fd] - min_patch_id]; - color = new CGAL::Color(c.red(),c.green(),c.blue()); + color = new CGAL::IO::Color(c.red(),c.green(),c.blue()); } else if(has_fcolors) color = &(*fcolors)[fd]; @@ -1470,17 +1470,17 @@ void Scene_surface_mesh_item::setItemIsMulticolor(bool b) d->smesh_->remove_property_map(d->fpatch_id_map); d->has_fcolors = false; } - if(d->smesh_->property_map("f:color").second) + if(d->smesh_->property_map("f:color").second) { - SMesh::Property_map pmap = - d->smesh_->property_map("f:color").first; + SMesh::Property_map pmap = + d->smesh_->property_map("f:color").first; d->smesh_->remove_property_map(pmap); d->has_fcolors = false; } - if(d->smesh_->property_map("v:color").second) + if(d->smesh_->property_map("v:color").second) { - SMesh::Property_map pmap = - d->smesh_->property_map("v:color").first; + SMesh::Property_map pmap = + d->smesh_->property_map("v:color").first; d->smesh_->remove_property_map(pmap); d->has_vcolors = false; } @@ -1524,14 +1524,14 @@ bool Scene_surface_mesh_item::load_obj(std::istream& in) { typedef SMesh::Point Point; - bool failed = !CGAL::read_OBJ(in, *(d->smesh_)); + bool failed = !CGAL::IO::read_OBJ(in, *(d->smesh_)); if(failed) { in.clear(); in.seekg(0); std::vector points; std::vector > faces; - failed = !CGAL::read_OBJ(in, points, faces); + failed = !CGAL::IO::read_OBJ(in, points, faces); if(!failed) { CGAL::Polygon_mesh_processing::repair_polygon_soup(points, faces); @@ -1557,9 +1557,9 @@ Scene_surface_mesh_item::save_obj(std::ostream& out) const boost::tie(vnormals, has_normals) = d->smesh_->template property_map("v:normal"); if(has_normals) - return CGAL::write_OBJ(out, *(d->smesh_), CGAL::parameters::vertex_normal_map(vnormals)); + return CGAL::IO::write_OBJ(out, *(d->smesh_), CGAL::parameters::vertex_normal_map(vnormals)); else - return CGAL::write_OBJ(out, *(d->smesh_)); + return CGAL::IO::write_OBJ(out, *(d->smesh_)); } void diff --git a/Polyhedron/doc/Polyhedron/CGAL/IO/Polyhedron_iostream.h b/Polyhedron/doc/Polyhedron/CGAL/IO/Polyhedron_iostream.h index 275f633766e..16a41bd1542 100644 --- a/Polyhedron/doc/Polyhedron/CGAL/IO/Polyhedron_iostream.h +++ b/Polyhedron/doc/Polyhedron/CGAL/IO/Polyhedron_iostream.h @@ -37,7 +37,7 @@ bool read_OFF( std::istream& in, Polyhedron_3& P); /*! \relates Polyhedron_3 \deprecated This function is deprecated since \cgal 5.2, - \link PkgPolyhedronIOFunc `CGAL::read_OFF(std::ostream&, Polyhedron_3&)` \endlink should be used instead. + \link PkgPolyhedronIOFunc `CGAL::IO::read_OFF(std::ostream&, Polyhedron_3&)` \endlink should be used instead. */ template bool read_off( std::ostream& out, Polyhedron_3& P); @@ -80,7 +80,7 @@ bool write_OFF( std::ostream& out, Polyhedron_3& P); /*! \relates Polyhedron_3 \deprecated This function is deprecated since \cgal 5.2, - \link PkgPolyhedronIOFunc `CGAL::write_OFF(std::ostream&, Polyhedron_3&)` \endlink should be used instead. + \link PkgPolyhedronIOFunc `CGAL::IO::write_OFF(std::ostream&, Polyhedron_3&)` \endlink should be used instead. */ template bool write_off( std::ostream& out, Polyhedron_3& P); diff --git a/Polyhedron/doc/Polyhedron/Polyhedron.txt b/Polyhedron/doc/Polyhedron/Polyhedron.txt index ff1b4df6ec8..91fc936f60b 100644 --- a/Polyhedron/doc/Polyhedron/Polyhedron.txt +++ b/Polyhedron/doc/Polyhedron/Polyhedron.txt @@ -430,7 +430,7 @@ faces but would be for vertices - and add the color attribute. template struct My_face : public CGAL::HalfedgeDS_face_base { -CGAL::Color color; +CGAL::IO::Color color; }; \endcode diff --git a/Polyhedron/examples/Polyhedron/polyhedron_prog_color.cpp b/Polyhedron/examples/Polyhedron/polyhedron_prog_color.cpp index 13a5569c3d0..68fe759f33a 100644 --- a/Polyhedron/examples/Polyhedron/polyhedron_prog_color.cpp +++ b/Polyhedron/examples/Polyhedron/polyhedron_prog_color.cpp @@ -5,7 +5,7 @@ // A face type with a color member variable. template struct My_face : public CGAL::HalfedgeDS_face_base { - CGAL::Color color; + CGAL::IO::Color color; }; // An items type using my face. @@ -23,6 +23,6 @@ typedef Polyhedron::Halfedge_handle Halfedge_handle; int main() { Polyhedron P; Halfedge_handle h = P.make_tetrahedron(); - h->facet()->color = CGAL::red(); + h->facet()->color = CGAL::IO::red(); return 0; } diff --git a/Polyhedron/examples/Polyhedron/polyhedron_prog_vertex_color.cpp b/Polyhedron/examples/Polyhedron/polyhedron_prog_vertex_color.cpp index 63abfbc9b2a..639c1540f4f 100644 --- a/Polyhedron/examples/Polyhedron/polyhedron_prog_vertex_color.cpp +++ b/Polyhedron/examples/Polyhedron/polyhedron_prog_vertex_color.cpp @@ -7,7 +7,7 @@ template struct My_vertex : public CGAL::HalfedgeDS_vertex_base { - CGAL::Color color; + CGAL::IO::Color color; My_vertex() {} // repeat the required constructors My_vertex( const Point& p) : CGAL::HalfedgeDS_vertex_base(p) {} @@ -29,6 +29,6 @@ typedef Polyhedron::Halfedge_handle Halfedge_handle; int main() { Polyhedron P; Halfedge_handle h = P.make_tetrahedron(); - h->vertex()->color = CGAL::red(); + h->vertex()->color = CGAL::IO::red(); return 0; } diff --git a/Polyhedron/include/CGAL/IO/Polyhedron_OFF_iostream.h b/Polyhedron/include/CGAL/IO/Polyhedron_OFF_iostream.h index 54b9438a8ee..70065dcee54 100644 --- a/Polyhedron/include/CGAL/IO/Polyhedron_OFF_iostream.h +++ b/Polyhedron/include/CGAL/IO/Polyhedron_OFF_iostream.h @@ -31,6 +31,8 @@ namespace CGAL { +namespace IO { + //////////////////////////////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////////////////////////////// // Read @@ -56,7 +58,7 @@ bool read_OFF(std::istream& in, typedef typename boost::property_traits::value_type Point; typedef typename Kernel_traits::Kernel Kernel; - typedef typename internal::Converter_selector::type Converter; + typedef typename CGAL::internal::Converter_selector::type Converter; using parameters::choose_parameter; using parameters::get_parameter; @@ -97,13 +99,15 @@ bool read_OFF(std::istream& in, Polyhedron_3& P) return read_OFF(in, P, parameters::all_default()); } +} // namespace IO + template class HDS, class Alloc> std::istream& operator>>(std::istream& in, Polyhedron_3& P) { - read_OFF(in, P); + IO::read_OFF(in, P); return in; } @@ -111,6 +115,8 @@ std::istream& operator>>(std::istream& in, Polyhedron_3 class HDS, @@ -149,13 +155,15 @@ bool write_OFF(std::ostream& out, const Polyhedron_3& return write_OFF(out, P, parameters::all_default()); } +} // namespace IO + template class HDS, class Alloc> std::ostream& operator<<(std::ostream& out, const Polyhedron_3& P) { - write_OFF(out, P); + IO::write_OFF(out, P); return out; } diff --git a/Polyhedron/include/CGAL/IO/Polyhedron_scan_OFF.h b/Polyhedron/include/CGAL/IO/Polyhedron_scan_OFF.h index 51935383f32..0023d882f63 100644 --- a/Polyhedron/include/CGAL/IO/Polyhedron_scan_OFF.h +++ b/Polyhedron/include/CGAL/IO/Polyhedron_scan_OFF.h @@ -88,7 +88,7 @@ void Polyhedron_scan_OFF:: operator()(HDS& target) B.add_vertex( p); if(scanner.has_vcolors()) { - Color c; + IO::Color c; file_scan_color(scanner, c); } scanner.skip_to_next_vertex(i); diff --git a/Polyhedron/test/Polyhedron/test_polyhedron_io.cpp b/Polyhedron/test/Polyhedron/test_polyhedron_io.cpp index ce9ff3e0ff7..fc6d0032056 100644 --- a/Polyhedron/test/Polyhedron/test_polyhedron_io.cpp +++ b/Polyhedron/test/Polyhedron/test_polyhedron_io.cpp @@ -115,7 +115,7 @@ void test_file_IO_OFF() { Polyhedron P; std::istringstream in( ::empty); - read_OFF(in, P); + IO::read_OFF(in, P); assert(P.empty()); assert(in); } diff --git a/Polyline_simplification_2/demo/Polyline_simplification_2/Polyline_simplification_2.cpp b/Polyline_simplification_2/demo/Polyline_simplification_2/Polyline_simplification_2.cpp index 0bf0684ae3f..965fa4e5bcb 100644 --- a/Polyline_simplification_2/demo/Polyline_simplification_2/Polyline_simplification_2.cpp +++ b/Polyline_simplification_2/demo/Polyline_simplification_2/Polyline_simplification_2.cpp @@ -395,7 +395,7 @@ void MainWindow::loadWKT(QString MultiPoint points; MultiLineString polylines; MultiPolygon polygons; - CGAL::read_WKT(ifs, points,polylines,polygons); + CGAL::IO::read_WKT(ifs, points,polylines,polygons); m_pct.clear(); mGI->modelChanged(); diff --git a/Polyline_simplification_2/examples/Polyline_simplification_2/points_and_vertices.cpp b/Polyline_simplification_2/examples/Polyline_simplification_2/points_and_vertices.cpp index 1ccdb7ab524..95d0aaf1a1a 100644 --- a/Polyline_simplification_2/examples/Polyline_simplification_2/points_and_vertices.cpp +++ b/Polyline_simplification_2/examples/Polyline_simplification_2/points_and_vertices.cpp @@ -62,7 +62,7 @@ int main(int argc, char* argv[]) Polygon_with_holes_2 P; Constraint_id cid; std::size_t largest = 0; - while(CGAL::read_polygon_WKT(ifs, P)){ + while(CGAL::IO::read_polygon_WKT(ifs, P)){ const Polygon_2& poly = P.outer_boundary(); Constraint_id cid2 = ct.insert_constraint(poly); if(poly.size() > largest){ diff --git a/Polyline_simplification_2/examples/Polyline_simplification_2/simplify.cpp b/Polyline_simplification_2/examples/Polyline_simplification_2/simplify.cpp index f815a9b9dd2..ccfd6222431 100644 --- a/Polyline_simplification_2/examples/Polyline_simplification_2/simplify.cpp +++ b/Polyline_simplification_2/examples/Polyline_simplification_2/simplify.cpp @@ -35,7 +35,7 @@ int main(int argc, char* argv[]) std::ifstream ifs( (argc==1)?"data/polygon.wkt":argv[1]); CT ct; Polygon_with_holes_2 P; - while(CGAL::read_polygon_WKT(ifs, P)){ + while(CGAL::IO::read_polygon_WKT(ifs, P)){ const Polygon_2& poly = P.outer_boundary(); ct.insert_constraint(poly); for(Polygon_with_holes_2::Hole_const_iterator it = P.holes_begin(); it != P.holes_end(); ++it){ diff --git a/Polyline_simplification_2/examples/Polyline_simplification_2/simplify_polygon.cpp b/Polyline_simplification_2/examples/Polyline_simplification_2/simplify_polygon.cpp index 989b6b68ba4..a5763c20399 100644 --- a/Polyline_simplification_2/examples/Polyline_simplification_2/simplify_polygon.cpp +++ b/Polyline_simplification_2/examples/Polyline_simplification_2/simplify_polygon.cpp @@ -21,12 +21,12 @@ int main(int argc, char* argv[]) { std::ifstream ifs( (argc==1)?"data/polygon.wkt":argv[1]); Polygon_with_holes_2 polygon; - CGAL::read_polygon_WKT(ifs, polygon); + CGAL::IO::read_polygon_WKT(ifs, polygon); Cost cost; polygon = PS::simplify(polygon, cost, Stop(0.5)); std::cout.precision(12); - CGAL::write_polygon_WKT(std::cout, polygon) << std::endl; + CGAL::IO::write_polygon_WKT(std::cout, polygon) << std::endl; return 0; } diff --git a/Polyline_simplification_2/examples/Polyline_simplification_2/simplify_polyline.cpp b/Polyline_simplification_2/examples/Polyline_simplification_2/simplify_polyline.cpp index f1dfd1da732..6bffee9ad49 100644 --- a/Polyline_simplification_2/examples/Polyline_simplification_2/simplify_polyline.cpp +++ b/Polyline_simplification_2/examples/Polyline_simplification_2/simplify_polyline.cpp @@ -23,7 +23,7 @@ int main(int argc, char* argv[]) #if BOOST_VERSION >= 105600 && (! defined(BOOST_GCC) || BOOST_GCC >= 40500) Polyline_2 polyline; std::ifstream ifs( (argc==1)?"data/polyline.wkt":argv[1]); - CGAL::read_linestring_WKT(ifs, polyline); + CGAL::IO::read_linestring_WKT(ifs, polyline); Cost cost; std::deque result; PS::simplify(polyline.begin(), polyline.end(), cost, Stop(0.5), std::back_inserter(result)); diff --git a/Ridges_3/examples/Ridges_3/Ridges_Umbilics_LCC.cpp b/Ridges_3/examples/Ridges_3/Ridges_Umbilics_LCC.cpp index 5ce258d2909..5df0c1a42c7 100644 --- a/Ridges_3/examples/Ridges_3/Ridges_Umbilics_LCC.cpp +++ b/Ridges_3/examples/Ridges_3/Ridges_Umbilics_LCC.cpp @@ -285,7 +285,7 @@ int main() //load the model from PolyhedralSurf P; - CGAL::read_polygon_mesh(if_name.c_str(), P); + CGAL::IO::read_polygon_mesh(if_name.c_str(), P); fprintf(stderr, "loadMesh %d Ves %d Facets\n", (int)num_vertices(P), (int)num_faces(P)); if(verbose) diff --git a/Scale_space_reconstruction_3/examples/Scale_space_reconstruction_3/scale_space.cpp b/Scale_space_reconstruction_3/examples/Scale_space_reconstruction_3/scale_space.cpp index be02efbc6a2..26952258243 100644 --- a/Scale_space_reconstruction_3/examples/Scale_space_reconstruction_3/scale_space.cpp +++ b/Scale_space_reconstruction_3/examples/Scale_space_reconstruction_3/scale_space.cpp @@ -24,7 +24,7 @@ int main(int argc, char** argv) std::cerr << "Reading " << std::flush; std::vector points; - if(!CGAL::read_points(argv[1], std::back_inserter(points))) + if(!CGAL::IO::read_points(argv[1], std::back_inserter(points))) { std::cerr << "Error: cannot read file" << std::endl; return EXIT_FAILURE; diff --git a/Scale_space_reconstruction_3/examples/Scale_space_reconstruction_3/scale_space_advancing_front.cpp b/Scale_space_reconstruction_3/examples/Scale_space_reconstruction_3/scale_space_advancing_front.cpp index 23a392617a0..aa34edd6441 100644 --- a/Scale_space_reconstruction_3/examples/Scale_space_reconstruction_3/scale_space_advancing_front.cpp +++ b/Scale_space_reconstruction_3/examples/Scale_space_reconstruction_3/scale_space_advancing_front.cpp @@ -32,7 +32,7 @@ int main(int argc, char** argv) // Read the data. std::cerr << "Reading " << std::flush; Point_set points; - if(!CGAL::read_point_set(argv[1], points)) + if(!CGAL::IO::read_point_set(argv[1], points)) { std::cerr << "Error: cannot read file" << std::endl; return EXIT_FAILURE; diff --git a/Scale_space_reconstruction_3/examples/Scale_space_reconstruction_3/scale_space_incremental.cpp b/Scale_space_reconstruction_3/examples/Scale_space_reconstruction_3/scale_space_incremental.cpp index 0adee0d8fda..ce2aa4d670c 100644 --- a/Scale_space_reconstruction_3/examples/Scale_space_reconstruction_3/scale_space_incremental.cpp +++ b/Scale_space_reconstruction_3/examples/Scale_space_reconstruction_3/scale_space_incremental.cpp @@ -40,7 +40,7 @@ int main(int argc, char* argv[]) std::cout << "Reading " << std::flush; std::vector points; - if(!CGAL::read_points(argv[1], std::back_inserter(points))) + if(!CGAL::IO::read_points(argv[1], std::back_inserter(points))) { std::cerr << "Error: cannot read file" << std::endl; return EXIT_FAILURE; diff --git a/Scale_space_reconstruction_3/examples/Scale_space_reconstruction_3/scale_space_manifold.cpp b/Scale_space_reconstruction_3/examples/Scale_space_reconstruction_3/scale_space_manifold.cpp index cfa6f39723c..abf1920fcd7 100644 --- a/Scale_space_reconstruction_3/examples/Scale_space_reconstruction_3/scale_space_manifold.cpp +++ b/Scale_space_reconstruction_3/examples/Scale_space_reconstruction_3/scale_space_manifold.cpp @@ -30,7 +30,7 @@ int main(int argc, char* argv[]) std::cerr << "Reading " << std::flush; std::vector points; - if(!CGAL::read_points(argv[1], std::back_inserter(points))) + if(!CGAL::IO::read_points(argv[1], std::back_inserter(points))) { std::cerr << "Error: cannot read file" << std::endl; return EXIT_FAILURE; diff --git a/Shape_detection/examples/Shape_detection/efficient_RANSAC_and_plane_regularization.cpp b/Shape_detection/examples/Shape_detection/efficient_RANSAC_and_plane_regularization.cpp index aa7022bbcf4..08d3d5d79e4 100644 --- a/Shape_detection/examples/Shape_detection/efficient_RANSAC_and_plane_regularization.cpp +++ b/Shape_detection/examples/Shape_detection/efficient_RANSAC_and_plane_regularization.cpp @@ -30,7 +30,7 @@ int main(int argc, char** argv) { Pwn_vector points; - if (!CGAL::read_points( + if (!CGAL::IO::read_points( (argc > 1 ? argv[1] : "data/cube.pwn"), std::back_inserter(points), CGAL::parameters::point_map(Point_map()). diff --git a/Shape_detection/examples/Shape_detection/efficient_RANSAC_basic.cpp b/Shape_detection/examples/Shape_detection/efficient_RANSAC_basic.cpp index 548229e42b6..f6e422702ea 100644 --- a/Shape_detection/examples/Shape_detection/efficient_RANSAC_basic.cpp +++ b/Shape_detection/examples/Shape_detection/efficient_RANSAC_basic.cpp @@ -35,7 +35,7 @@ int main (int argc, char** argv) { // Load point set from a file. - if (!CGAL::read_points( + if (!CGAL::IO::read_points( filename, std::back_inserter(points), CGAL::parameters::point_map(Point_map()). diff --git a/Shape_detection/examples/Shape_detection/efficient_RANSAC_with_callback.cpp b/Shape_detection/examples/Shape_detection/efficient_RANSAC_with_callback.cpp index 2a946a3c312..e17aae6482b 100644 --- a/Shape_detection/examples/Shape_detection/efficient_RANSAC_with_callback.cpp +++ b/Shape_detection/examples/Shape_detection/efficient_RANSAC_with_callback.cpp @@ -62,7 +62,7 @@ int main (int argc, char** argv) { Pwn_vector points; - if (!CGAL::read_points( + if (!CGAL::IO::read_points( filename, std::back_inserter(points), CGAL::parameters::point_map(Point_map()). diff --git a/Shape_detection/examples/Shape_detection/efficient_RANSAC_with_custom_shape.cpp b/Shape_detection/examples/Shape_detection/efficient_RANSAC_with_custom_shape.cpp index cc9e6b1f5b8..4bd26cb2169 100644 --- a/Shape_detection/examples/Shape_detection/efficient_RANSAC_with_custom_shape.cpp +++ b/Shape_detection/examples/Shape_detection/efficient_RANSAC_with_custom_shape.cpp @@ -28,9 +28,9 @@ int main(int argc, char** argv) { // Load point set from a file. - if (!CGAL::read_points(((argc > 1) ? argv[1] : "data/cube.pwn"), std::back_inserter(points), - CGAL::parameters::point_map(Point_map()) - .normal_map(Normal_map()))) + if (!CGAL::IO::read_points(((argc > 1) ? argv[1] : "data/cube.pwn"), std::back_inserter(points), + CGAL::parameters::point_map(Point_map()) + .normal_map(Normal_map()))) { std::cerr << "Error: cannot read input file!" << std::endl; return EXIT_FAILURE; diff --git a/Shape_detection/examples/Shape_detection/efficient_RANSAC_with_parameters.cpp b/Shape_detection/examples/Shape_detection/efficient_RANSAC_with_parameters.cpp index 18da3c0fa59..2d0280be98a 100644 --- a/Shape_detection/examples/Shape_detection/efficient_RANSAC_with_parameters.cpp +++ b/Shape_detection/examples/Shape_detection/efficient_RANSAC_with_parameters.cpp @@ -32,7 +32,7 @@ int main(int argc, char** argv) { // Load point set from a file. - if (!CGAL::read_points( + if (!CGAL::IO::read_points( ((argc > 1) ? argv[1] : "data/cube.pwn"), std::back_inserter(points), CGAL::parameters::point_map(Point_map()). diff --git a/Shape_detection/examples/Shape_detection/efficient_RANSAC_with_point_access.cpp b/Shape_detection/examples/Shape_detection/efficient_RANSAC_with_point_access.cpp index 1feda5d0684..21e2ef6e531 100644 --- a/Shape_detection/examples/Shape_detection/efficient_RANSAC_with_point_access.cpp +++ b/Shape_detection/examples/Shape_detection/efficient_RANSAC_with_point_access.cpp @@ -29,7 +29,7 @@ int main(int argc, char** argv) { // Load point set from a file. - if (!CGAL::read_points( + if (!CGAL::IO::read_points( ((argc > 1) ? argv[1] : "data/cube.pwn"), std::back_inserter(points), CGAL::parameters::point_map(Point_map()). diff --git a/Shape_detection/examples/Shape_detection/region_growing_on_point_set_2.cpp b/Shape_detection/examples/Shape_detection/region_growing_on_point_set_2.cpp index a7359da29ee..a98ed11da0d 100644 --- a/Shape_detection/examples/Shape_detection/region_growing_on_point_set_2.cpp +++ b/Shape_detection/examples/Shape_detection/region_growing_on_point_set_2.cpp @@ -162,7 +162,7 @@ int main(int argc, char *argv[]) { std::ofstream out(fullpath); CGAL::set_ascii_mode(out); - CGAL::write_PLY_with_properties( + CGAL::IO::write_PLY_with_properties( out, pwc, CGAL::make_ply_point_writer(PLY_Point_map()), std::make_tuple( diff --git a/Shape_detection/examples/Shape_detection/region_growing_on_polygon_mesh.cpp b/Shape_detection/examples/Shape_detection/region_growing_on_polygon_mesh.cpp index 9fd7ff44639..63002bea13d 100644 --- a/Shape_detection/examples/Shape_detection/region_growing_on_polygon_mesh.cpp +++ b/Shape_detection/examples/Shape_detection/region_growing_on_polygon_mesh.cpp @@ -25,7 +25,7 @@ using Kernel = CGAL::Exact_predicates_exact_constructions_kernel; using FT = typename Kernel::FT; using Point_3 = typename Kernel::Point_3; -using Color = CGAL::Color; +using Color = CGAL::IO::Color; // Choose the type of a container for a polygon mesh. #define USE_SURFACE_MESH diff --git a/Shape_detection/examples/Shape_detection/shape_detection_basic_deprecated.cpp b/Shape_detection/examples/Shape_detection/shape_detection_basic_deprecated.cpp index 531709d4ec5..a134f355f0b 100644 --- a/Shape_detection/examples/Shape_detection/shape_detection_basic_deprecated.cpp +++ b/Shape_detection/examples/Shape_detection/shape_detection_basic_deprecated.cpp @@ -41,10 +41,10 @@ int run(const char* filename) { // read_points takes an OutputIterator for storing the points // and a property map to store the normal vector with each point. - if (!CGAL::read_points(filename, - std::back_inserter(points), - CGAL::parameters::point_map(Point_map()). - normal_map(Normal_map()))) { + if (!CGAL::IO::read_points(filename, + std::back_inserter(points), + CGAL::parameters::point_map(Point_map()). + normal_map(Normal_map()))) { std::cout << "Error: cannot read the file cube.pwn" << std::endl; return EXIT_FAILURE; diff --git a/Shape_detection/test/Shape_detection/test_efficient_RANSAC_scene.cpp b/Shape_detection/test/Shape_detection/test_efficient_RANSAC_scene.cpp index ff2e341b93d..d46cffbaa61 100644 --- a/Shape_detection/test/Shape_detection/test_efficient_RANSAC_scene.cpp +++ b/Shape_detection/test/Shape_detection/test_efficient_RANSAC_scene.cpp @@ -36,7 +36,7 @@ bool test_scene(int argc, char** argv) { // and a property map to store the normal vector with each point. const char* filename = (argc > 1) ? argv[1] : "data/cube.pwn"; - if (!CGAL::read_points(filename, std::back_inserter(points), + if (!CGAL::IO::read_points(filename, std::back_inserter(points), CGAL::parameters::point_map(Point_map()) .normal_map(Normal_map()))) { diff --git a/Shape_detection/test/Shape_detection/test_validity_sampled_data.cpp b/Shape_detection/test/Shape_detection/test_validity_sampled_data.cpp index eccb69cd07d..e13aae67dfc 100644 --- a/Shape_detection/test/Shape_detection/test_validity_sampled_data.cpp +++ b/Shape_detection/test/Shape_detection/test_validity_sampled_data.cpp @@ -49,7 +49,7 @@ int main (int argc, char** argv) std::ifstream ifile(ifilename); if (!ifile || - !CGAL::read_XYZ( + !CGAL::IO::read_XYZ( ifile, std::back_inserter(points), CGAL::parameters::point_map(Point_map()). diff --git a/Spatial_searching/examples/Spatial_searching/searching_surface_mesh_vertices.cpp b/Spatial_searching/examples/Spatial_searching/searching_surface_mesh_vertices.cpp index b9faabfeb64..b377bf083ec 100644 --- a/Spatial_searching/examples/Spatial_searching/searching_surface_mesh_vertices.cpp +++ b/Spatial_searching/examples/Spatial_searching/searching_surface_mesh_vertices.cpp @@ -28,7 +28,7 @@ int main(int argc, char* argv[]) const char* filename = (argc>1) ? argv[1] : "data/tripod.off"; Mesh mesh; - if(!CGAL::read_polygon_mesh(filename, mesh)) + if(!CGAL::IO::read_polygon_mesh(filename, mesh)) { std::cerr << "Invalid input." << std::endl; return 1; diff --git a/Straight_skeleton_2/include/CGAL/IO/Dxf_stream.h b/Straight_skeleton_2/include/CGAL/IO/Dxf_stream.h index 78a29f7f1d3..0744fcda56b 100644 --- a/Straight_skeleton_2/include/CGAL/IO/Dxf_stream.h +++ b/Straight_skeleton_2/include/CGAL/IO/Dxf_stream.h @@ -63,12 +63,12 @@ protected: Dxf_writer mWriter ; int mDefaultDxfColor; int mDxfColor; - Color mCgalColor ; + IO::Color mCgalColor ; std::string mLayer ; struct Color_less { - bool operator() ( Color const& a, Color const& b ) const + bool operator() ( IO::Color const& a, IO::Color const& b ) const { return Color_value(a) < Color_value(b); } @@ -79,7 +79,7 @@ protected: } } ; - typedef std::map Color_table ; + typedef std::map Color_table ; typedef typename Color_table::const_iterator Color_table_iterator ; Color_table mColorTable ; @@ -126,7 +126,7 @@ public: /*! * Get the current CGAL color. */ - Color color () const { return mCgalColor ; } + IO::Color color () const { return mCgalColor ; } /*! * Get the current DXF color. @@ -152,7 +152,7 @@ public: * Set the current color. * \pre The color must be defined. */ - void set_color ( Color aColor ) + void set_color ( IO::Color aColor ) { mCgalColor = aColor ; @@ -177,7 +177,7 @@ public: * \param aCgalColor The CGAL color. * \param aDxfColor The DXF color. */ - void define_color ( Color const& aCgalColor, int aDxfColor ) + void define_color ( IO::Color const& aCgalColor, int aDxfColor ) { mColorTable.insert( std::make_pair(aCgalColor,aDxfColor) ) ; } @@ -265,7 +265,7 @@ public: /*! * Set the current color. */ - Dxf_stream& operator<< ( Color const& aColor ) + Dxf_stream& operator<< ( IO::Color const& aColor ) { set_color (aColor); return (*this); @@ -300,15 +300,15 @@ protected: void setup_initial_color_table() { - define_color(black(),0); - define_color(red(),1); - define_color(yellow(),2); - define_color(green(),3); - define_color(purple(),4); - define_color(blue(),5); - define_color(violet(),6); - define_color(white(),7); - define_color(gray(),8); + define_color(IO::black(),0); + define_color(IO::red(),1); + define_color(IO::yellow(),2); + define_color(IO::green(),3); + define_color(IO::purple(),4); + define_color(IO::blue(),5); + define_color(IO::violet(),6); + define_color(IO::white(),7); + define_color(IO::gray(),8); } }; diff --git a/Straight_skeleton_2/include/CGAL/draw_straight_skeleton_2.h b/Straight_skeleton_2/include/CGAL/draw_straight_skeleton_2.h index 02956b3d686..8bf2a8bf393 100644 --- a/Straight_skeleton_2/include/CGAL/draw_straight_skeleton_2.h +++ b/Straight_skeleton_2/include/CGAL/draw_straight_skeleton_2.h @@ -28,7 +28,7 @@ namespace CGAL { struct DefaultColorFunctorSS2 { template - static CGAL::Color run(const SS2&, + static CGAL::IO::Color run(const SS2&, const typename SS2::Finite_faces_iterator fh) { CGAL::Random random((unsigned int)(std::size_t)(&*fh)); @@ -65,7 +65,7 @@ protected: /* void compute_face(Facet_const_handle fh) { - CGAL::Color c=m_fcolor.run(ss2, fh); + CGAL::IO::Color c=m_fcolor.run(ss2, fh); face_begin(c); add_point_in_face(fh->vertex(0)->point()); @@ -78,9 +78,9 @@ protected: void compute_edge(Halfedge_const_handle eh) { if(eh->is_bisector()) - add_segment(eh->opposite()->vertex()->point(), eh->vertex()->point(), CGAL::red()); + add_segment(eh->opposite()->vertex()->point(), eh->vertex()->point(), CGAL::IO::red()); else - add_segment(eh->opposite()->vertex()->point(), eh->vertex()->point(), CGAL::black()); + add_segment(eh->opposite()->vertex()->point(), eh->vertex()->point(), CGAL::IO::black()); } void print_halfedge_labels(Halfedge_const_handle h) { @@ -93,11 +93,11 @@ protected: void compute_vertex(Vertex_const_handle vh) { if(vh->is_split()) - add_point(vh->point(), CGAL::Color(10,10,180)); // blue, but not flashy + add_point(vh->point(), CGAL::IO::Color(10,10,180)); // blue, but not flashy else if(vh->has_infinite_time()) - add_point(vh->point(), CGAL::orange()); + add_point(vh->point(), CGAL::IO::orange()); else - add_point(vh->point(), CGAL::Color(10,180,10)); // green, but not flashy + add_point(vh->point(), CGAL::IO::Color(10,180,10)); // green, but not flashy } void print_vertex_label(Vertex_const_handle vh) { diff --git a/Straight_skeleton_2/test/Straight_skeleton_2/test_sls.cpp b/Straight_skeleton_2/test/Straight_skeleton_2/test_sls.cpp index 6cf6dbb2f7d..c3e87ac3cfe 100644 --- a/Straight_skeleton_2/test/Straight_skeleton_2/test_sls.cpp +++ b/Straight_skeleton_2/test/Straight_skeleton_2/test_sls.cpp @@ -121,6 +121,7 @@ typedef CGAL::Dxf_stream DxfStream ; using namespace std ; using namespace CGAL ; +using namespace CGAL::IO ; inline string to_string( double n ) { ostringstream ss ; ss << n ; return ss.str(); } inline bool is_even ( int n ) { return n % 2 == 0 ; } @@ -458,7 +459,7 @@ void dump_to_eps ( TestCase const& aCase ) } template -void dump_polygon_to_dxf( Polygon const& aPolygon, Color aColor, string aLayer, DxfStream& rDXF ) +void dump_polygon_to_dxf( Polygon const& aPolygon, IO::Color aColor, string aLayer, DxfStream& rDXF ) { rDXF << aColor << Dxf_layer(aLayer) ; @@ -467,7 +468,7 @@ void dump_polygon_to_dxf( Polygon const& aPolygon, Color aColor, string aLayer, template -void dump_region_to_dxf( Region const& aRegion, Color aColor, string aBaseLayer, DxfStream& rDXF ) +void dump_region_to_dxf( Region const& aRegion, IO::Color aColor, string aBaseLayer, DxfStream& rDXF ) { int lN = 0 ; for ( typename Region::const_iterator bit = aRegion.begin() ; bit != aRegion.end() ; ++ bit ) @@ -480,10 +481,10 @@ void dump_region_to_dxf( Region const& aRegion, Color aColor, string aBaseLayer, } void dump_skeleton_to_dxf( ISls const& aSkeleton - , Color aContourBisectorColor - , Color aSkeletonBisectorColor - , Color aPeakBisectorColor - , Color /*aInfiniteBisectorColor*/ + , IO::Color aContourBisectorColor + , IO::Color aSkeletonBisectorColor + , IO::Color aPeakBisectorColor + , IO::Color /*aInfiniteBisectorColor*/ , string aLayer , DxfStream& rDXF ) diff --git a/Stream_support/doc/Stream_support/File_formats/Supported_file_formats.txt b/Stream_support/doc/Stream_support/File_formats/Supported_file_formats.txt index d0644f0d513..14b74e375f5 100644 --- a/Stream_support/doc/Stream_support/File_formats/Supported_file_formats.txt +++ b/Stream_support/doc/Stream_support/File_formats/Supported_file_formats.txt @@ -43,62 +43,62 @@ The following table lists some \cgal data structures that have I/O functions com Input Polygon Mesh `CGAL::Surface_mesh` - \link PkgSurfaceMeshIOFuncOFF CGAL::read_OFF(const char*, CGAL::Surface_mesh&)\endlink + \link PkgSurfaceMeshIOFuncOFF CGAL::IO::read_OFF(const char*, CGAL::Surface_mesh&)\endlink `CGAL::Polyhedron_3` - \link PkgPolyhedronIOFunc CGAL::read_OFF(const char*, CGAL::Polyhedron_3&)\endlink + \link PkgPolyhedronIOFunc CGAL::IO::read_OFF(const char*, CGAL::Polyhedron_3&)\endlink Any model of `MutableFaceGraph` - \link PkgBGLIoFuncsOFF CGAL::read_OFF(const char*, Graph&)\endlink + \link PkgBGLIoFuncsOFF CGAL::IO::read_OFF(const char*, Graph&)\endlink Point Set `CGAL::Point_set_3` - \link PkgPointSet3IOOFF CGAL::read_OFF(const char*, CGAL::Point_set_3&)\endlink + \link PkgPointSet3IOOFF CGAL::IO::read_OFF(const char*, CGAL::Point_set_3&)\endlink Any point range - \link PkgPointSetProcessing3IOOff CGAL::read_OFF(const char*, PointRange&)\endlink + \link PkgPointSetProcessing3IOOff CGAL::IO::read_OFF(const char*, PointRange&)\endlink Polygon Soup Any point + polygon range - \link PkgStreamSupportIoFuncsOFF CGAL::read_OFF(const char*, PointRange&, PolygonRange&)\endlink + \link PkgStreamSupportIoFuncsOFF CGAL::IO::read_OFF(const char*, PointRange&, PolygonRange&)\endlink Output Polygon Mesh `CGAL::Surface_mesh` - \link PkgSurfaceMeshIOFuncOFF CGAL::write_OFF(const char*, CGAL::Surface_mesh&)\endlink + \link PkgSurfaceMeshIOFuncOFF CGAL::IO::write_OFF(const char*, CGAL::Surface_mesh&)\endlink `CGAL::Polyhedron_3` - \link PkgPolyhedronIOFunc CGAL::write_OFF(const char*, CGAL::Polyhedron_3&)\endlink + \link PkgPolyhedronIOFunc CGAL::IO::write_OFF(const char*, CGAL::Polyhedron_3&)\endlink Any model of `FaceGraph` - \link PkgBGLIoFuncsOFF CGAL::write_OFF(const char*, Graph&)\endlink + \link PkgBGLIoFuncsOFF CGAL::IO::write_OFF(const char*, Graph&)\endlink Point Set `CGAL::Point_set_3` - \link PkgPointSet3IOOFF CGAL::write_OFF(const char*, CGAL::Point_set_3&)\endlink + \link PkgPointSet3IOOFF CGAL::IO::write_OFF(const char*, CGAL::Point_set_3&)\endlink Any point range - \link PkgPointSetProcessing3IOOff CGAL::write_OFF(const char*, PointRange&)\endlink + \link PkgPointSetProcessing3IOOff CGAL::IO::write_OFF(const char*, PointRange&)\endlink Polygon Soup Any point + polygon range - \link PkgStreamSupportIoFuncsOFF CGAL::write_OFF(const char*, PointRange&, PolygonRange&)\endlink + \link PkgStreamSupportIoFuncsOFF CGAL::IO::write_OFF(const char*, PointRange&, PolygonRange&)\endlink If the data of a polygon mesh cannot be read in a `FaceGraph` due to bad orientation or -manifoldness issues, consider using \link PMP_IO_grp `CGAL::Polygon_mesh_processing::read_polygon_mesh()` \endlink, +manifoldness issues, consider using \link PMP_IO_grp `CGAL::Polygon_mesh_processing::IO::read_polygon_mesh()` \endlink, which offers combinatorial repairing while reading bad inputs. @@ -117,28 +117,28 @@ A precise specification of the format is available Input Polygon Mesh Any model of `MutableFaceGraph` - \link PkgBGLIoFuncsOBJ CGAL::read_OBJ(const char*, Graph&)\endlink + \link PkgBGLIoFuncsOBJ CGAL::IO::read_OBJ(const char*, Graph&)\endlink Polygon Soup Any point + polygon range - \link PkgStreamSupportIoFuncsOBJ CGAL::read_OBJ(const char*, PointRange&, PolygonRange&)\endlink + \link PkgStreamSupportIoFuncsOBJ CGAL::IO::read_OBJ(const char*, PointRange&, PolygonRange&)\endlink Output Polygon Mesh Any model of `FaceGraph` - \link PkgBGLIoFuncsOBJ CGAL::write_OBJ(const char*, Graph&)\endlink + \link PkgBGLIoFuncsOBJ CGAL::IO::write_OBJ(const char*, Graph&)\endlink Polygon Soup Any point + polygon range - \link PkgStreamSupportIoFuncsOBJ CGAL::write_OBJ(const char*, PointRange&, PolygonRange&)\endlink + \link PkgStreamSupportIoFuncsOBJ CGAL::IO::write_OBJ(const char*, PointRange&, PolygonRange&)\endlink If the data of a polygon mesh cannot be read in a `FaceGraph` due to bad orientation or -manifoldness issues, consider using \link PMP_IO_grp `CGAL::Polygon_mesh_processing::read_polygon_mesh()` \endlink, +manifoldness issues, consider using \link PMP_IO_grp `CGAL::Polygon_mesh_processing::IO::read_polygon_mesh()` \endlink, which offers combinatorial repairing while reading bad inputs. @@ -158,23 +158,23 @@ A precise specification of those formats is available Input Polygon Mesh Any model of `MutableFaceGraph` - \link PkgBGLIoFuncsSTL CGAL::read_STL(const char*, Graph&)\endlink + \link PkgBGLIoFuncsSTL CGAL::IO::read_STL(const char*, Graph&)\endlink Polygon Soup Any point + polygon range - \link PkgStreamSupportIoFuncsSTL CGAL::read_STL(const char*, PointRange&, TriangleRange&)\endlink + \link PkgStreamSupportIoFuncsSTL CGAL::IO::read_STL(const char*, PointRange&, TriangleRange&)\endlink Output Polygon Mesh Any model of `FaceGraph` - \link PkgBGLIoFuncsSTL CGAL::write_STL(const char*, Graph&)\endlink + \link PkgBGLIoFuncsSTL CGAL::IO::write_STL(const char*, Graph&)\endlink Polygon Soup Any point + polygon range - \link PkgStreamSupportIoFuncsSTL CGAL::write_STL(const char*, PointRange&, TriangleRange&)\endlink + \link PkgStreamSupportIoFuncsSTL CGAL::IO::write_STL(const char*, PointRange&, TriangleRange&)\endlink @@ -182,7 +182,7 @@ Note that the STL file format exports triangular faces as geometric triangles an combinatorial information is lost. If the data of a polygon mesh cannot be read in a `FaceGraph` due to bad orientation or -manifoldness issues, consider using \link PMP_IO_grp `CGAL::Polygon_mesh_processing::read_polygon_mesh()` \endlink, +manifoldness issues, consider using \link PMP_IO_grp `CGAL::Polygon_mesh_processing::IO::read_polygon_mesh()` \endlink, which offers combinatorial repairing while reading bad inputs. @@ -202,54 +202,54 @@ A precise specification of those formats is available Input Polygon Mesh `CGAL::Surface_mesh` - \link PkgSurfaceMeshIOFuncPLY CGAL::read_PLY(const char*, CGAL::Surface_mesh&)\endlink + \link PkgSurfaceMeshIOFuncPLY CGAL::IO::read_PLY(const char*, CGAL::Surface_mesh&)\endlink Any model of `MutableFaceGraph` - \link PkgBGLIoFuncsPLY CGAL::read_PLY(const char*, Graph&)\endlink + \link PkgBGLIoFuncsPLY CGAL::IO::read_PLY(const char*, Graph&)\endlink Point Set `CGAL::Point_set_3` - \link PkgPointSet3IOPLY CGAL::read_PLY(const char*, CGAL::Point_set_3&)\endlink + \link PkgPointSet3IOPLY CGAL::IO::read_PLY(const char*, CGAL::Point_set_3&)\endlink Any point range - \link PkgPointSetProcessing3IOPly CGAL::read_PLY(const char*, PointRange&)\endlink + \link PkgPointSetProcessing3IOPly CGAL::IO::read_PLY(const char*, PointRange&)\endlink Polygon Soup Any point + polygon range - \link PkgStreamSupportIoFuncsPLY CGAL::read_PLY(const char*, PointRange&, PolygonRange&)\endlink + \link PkgStreamSupportIoFuncsPLY CGAL::IO::read_PLY(const char*, PointRange&, PolygonRange&)\endlink Output Polygon Mesh `CGAL::Surface_mesh` - \link PkgSurfaceMeshIOFuncPLY CGAL::write_PLY(const char*, CGAL::Surface_mesh&)\endlink + \link PkgSurfaceMeshIOFuncPLY CGAL::IO::write_PLY(const char*, CGAL::Surface_mesh&)\endlink Any model of `FaceGraph` - \link PkgBGLIoFuncsPLY CGAL::write_PLY(const char*, Graph&)\endlink + \link PkgBGLIoFuncsPLY CGAL::IO::write_PLY(const char*, Graph&)\endlink Point Set `CGAL::Point_set_3` - \link PkgPointSet3IOPLY CGAL::write_PLY(const char*, CGAL::Point_set_3&)\endlink + \link PkgPointSet3IOPLY CGAL::IO::write_PLY(const char*, CGAL::Point_set_3&)\endlink Any point range - \link PkgPointSetProcessing3IOPly CGAL::write_PLY(const char*, PointRange&)\endlink + \link PkgPointSetProcessing3IOPly CGAL::IO::write_PLY(const char*, PointRange&)\endlink Polygon Soup Any point + polygon range - \link PkgStreamSupportIoFuncsPLY CGAL::write_PLY(const char*, PointRange&, PolygonRange&)\endlink + \link PkgStreamSupportIoFuncsPLY CGAL::IO::write_PLY(const char*, PointRange&, PolygonRange&)\endlink If the data of a polygon mesh cannot be read in a `FaceGraph` due to bad orientation or -manifoldness issues, consider using \link PMP_IO_grp `CGAL::Polygon_mesh_processing::read_polygon_mesh()` \endlink, +manifoldness issues, consider using \link PMP_IO_grp `CGAL::Polygon_mesh_processing::IO::read_polygon_mesh()` \endlink, which offers combinatorial repairing while reading bad inputs. @@ -270,21 +270,21 @@ A precise specification of those formats is available Input Point Set `CGAL::Point_set_3` - \link PkgPointSet3IOLAS CGAL::read_LAS(const char*, CGAL::Point_set_3&)\endlink + \link PkgPointSet3IOLAS CGAL::IO::read_LAS(const char*, CGAL::Point_set_3&)\endlink Any point range - \link PkgPointSetProcessing3IOLas CGAL::read_LAS(const char*, PointRange&)\endlink + \link PkgPointSetProcessing3IOLas CGAL::IO::read_LAS(const char*, PointRange&)\endlink Output Point Set `CGAL::Point_set_3` - \link PkgPointSet3IOLAS CGAL::write_LAS(const char*, CGAL::Point_set_3&)\endlink + \link PkgPointSet3IOLAS CGAL::IO::write_LAS(const char*, CGAL::Point_set_3&)\endlink Any point range - \link PkgPointSetProcessing3IOLas CGAL::write_LAS(const char*, PointRange&)\endlink + \link PkgPointSetProcessing3IOLas CGAL::IO::write_LAS(const char*, PointRange&)\endlink @@ -303,21 +303,21 @@ of its coordinates and other properties. Only coordinates and normals are curren Input Point Set `CGAL::Point_set_3` - \link PkgPointSet3IOXYZ CGAL::read_XYZ(const char*, CGAL::Point_set_3&)\endlink + \link PkgPointSet3IOXYZ CGAL::IO::read_XYZ(const char*, CGAL::Point_set_3&)\endlink Any point range - \link PkgPointSetProcessing3IOXyz CGAL::read_XYZ(const char*, PointRange&)\endlink + \link PkgPointSetProcessing3IOXyz CGAL::IO::read_XYZ(const char*, PointRange&)\endlink Output Point Set `CGAL::Point_set_3` - \link PkgPointSet3IOXYZ CGAL::write_XYZ(const char*, CGAL::Point_set_3&)\endlink + \link PkgPointSet3IOXYZ CGAL::IO::write_XYZ(const char*, CGAL::Point_set_3&)\endlink Any point range - \link PkgPointSetProcessing3IOXyz CGAL::write_XYZ(const char*, PointRange&)\endlink + \link PkgPointSetProcessing3IOXyz CGAL::IO::write_XYZ(const char*, PointRange&)\endlink @@ -337,28 +337,28 @@ A precise specification of the format is available Input Polygon Mesh Any model of `MutableFaceGraph` - \link PkgBGLIoFuncsGOCAD CGAL::read_GOCAD(const char*, Graph&)\endlink + \link PkgBGLIoFuncsGOCAD CGAL::IO::read_GOCAD(const char*, Graph&)\endlink Polygon Soup Any point + polygon range - \link PkgStreamSupportIoFuncsGOCAD CGAL::read_GOCAD(const char*, PointRange&, PolygonRange&)\endlink + \link PkgStreamSupportIoFuncsGOCAD CGAL::IO::read_GOCAD(const char*, PointRange&, PolygonRange&)\endlink Output Polygon Mesh Any model of `FaceGraph` - \link PkgBGLIoFuncsGOCAD CGAL::write_GOCAD(const char*, Graph&)\endlink + \link PkgBGLIoFuncsGOCAD CGAL::IO::write_GOCAD(const char*, Graph&)\endlink Polygon Soup Any point + polygon range - \link PkgStreamSupportIoFuncsGOCAD CGAL::write_GOCAD(const char*, PointRange&, PolygonRange&)\endlink + \link PkgStreamSupportIoFuncsGOCAD CGAL::IO::write_GOCAD(const char*, PointRange&, PolygonRange&)\endlink If the data of a polygon mesh cannot be read in a `FaceGraph` due to bad orientation or -manifoldness issues, consider using \link PMP_IO_grp `CGAL::Polygon_mesh_processing::read_polygon_mesh()` \endlink, +manifoldness issues, consider using \link PMP_IO_grp `CGAL::Polygon_mesh_processing::IO::read_polygon_mesh()` \endlink, which offers combinatorial repairing while reading bad inputs. @@ -381,28 +381,28 @@ note that only versions `1.x` are currently supported in \cgal. Input Polygon Mesh `CGAL::Surface_mesh` - \link PkgSurfaceMeshIOFunc3MF CGAL::read_3MF(const char*, Surface_meshRange&)\endlink + \link PkgSurfaceMeshIOFunc3MF CGAL::IO::read_3MF(const char*, Surface_meshRange&)\endlink Polygon Soup Any point + polygon range - \link PkgStreamSupportIoFuncs3MF CGAL::read_3MF(const char*, PointRanges&, PolygonRanges&)\endlink + \link PkgStreamSupportIoFuncs3MF CGAL::IO::read_3MF(const char*, PointRanges&, PolygonRanges&)\endlink Output Polygon Mesh Any model of `FaceGraph` - \link PkgBGLIoFuncs3MF CGAL::write_3MF(const char*, GraphRange&)\endlink + \link PkgBGLIoFuncs3MF CGAL::IO::write_3MF(const char*, GraphRange&)\endlink Polygon Soup Any point + polygon range - \link PkgStreamSupportIoFuncs3MF CGAL::write_3MF(const char*, PointRanges&, PolygonRanges&)\endlink + \link PkgStreamSupportIoFuncs3MF CGAL::IO::write_3MF(const char*, PointRanges&, PolygonRanges&)\endlink If the data of a polygon mesh cannot be read in a `FaceGraph` due to bad orientation or -manifoldness issues, consider using \link PMP_IO_grp `CGAL::Polygon_mesh_processing::read_polygon_mesh()` \endlink, +manifoldness issues, consider using \link PMP_IO_grp `CGAL::Polygon_mesh_processing::IO::read_polygon_mesh()` \endlink, which offers combinatorial repairing while reading bad inputs. @@ -422,7 +422,7 @@ A precise specification of the format is available Output Polygon Mesh Any model of `FaceGraph` - \link PkgBGLIoFuncsWRL CGAL::write_WRL(const char*, Graph&)\endlink + \link PkgBGLIoFuncsWRL CGAL::IO::write_WRL(const char*, Graph&)\endlink @@ -451,30 +451,30 @@ A precise specification of those formats is available at Input Polygon Mesh Any model of `MutableFaceGraph` - \link PkgBGLIoFuncsVTP CGAL::read_VTP(const char*, Graph&)\endlink + \link PkgBGLIoFuncsVTP CGAL::IO::read_VTP(const char*, Graph&)\endlink Polygon Soup Any point + polygon range - \link PkgStreamSupportIoFuncsVTP CGAL::read_VTP(const char*, PointRange&, PolygonRange&)\endlink + \link PkgStreamSupportIoFuncsVTP CGAL::IO::read_VTP(const char*, PointRange&, PolygonRange&)\endlink Output Polygon Mesh Any model of `FaceGraph` - \link PkgBGLIoFuncsVTP CGAL::write_VTP(const char*, Graph&)\endlink + \link PkgBGLIoFuncsVTP CGAL::IO::write_VTP(const char*, Graph&)\endlink Polygon Soup Any point + polygon range - \link PkgStreamSupportIoFuncsVTP CGAL::write_VTP(const char*, PointRange&, PolygonRange&)\endlink + \link PkgStreamSupportIoFuncsVTP CGAL::IO::write_VTP(const char*, PointRange&, PolygonRange&)\endlink The following \cgal data structures can be exported into the `.VTU` file format: -- `CGAL::Mesh_complex_3_in_triangulation_3`, using \link PkgMesh3IOFunctions `CGAL::output_to_vtu()` \endlink -- `CGAL::Constrained_Delaunay_triangulation_2`, using the function \link PkgMesh2IO `CGAL::write_vtu()` \endlink +- `CGAL::Mesh_complex_3_in_triangulation_3`, using \link PkgMesh3IOFunctions `CGAL::IO::output_to_vtu()` \endlink +- `CGAL::Constrained_Delaunay_triangulation_2`, using the function \link PkgMesh2IO `CGAL::IO::write_vtu()` \endlink \section IOStreamAvizo Avizo File Format @@ -483,7 +483,7 @@ The AmiraMesh format, using file extension `.am`, is used by the Avizo software to read 3D geometry. A single \cgal data structure, `CGAL::Mesh_complex_3_in_triangulation_3`, can be exported into `.am` files. -This can be done using the function `CGAL::output_to_avizo()`. +This can be done using the function `CGAL::IO::output_to_avizo()`. A precise specification of the format is available in this guide. @@ -497,7 +497,7 @@ A precise specification of the format is available ` - `CGAL::Ostream_iterator` - `CGAL::Verbose_ostream` @@ -89,8 +89,8 @@ the printing mode. - `CGAL::oformat()` \cgalCRPSection{I/O Functions} -- `CGAL::read_polygon_soup()` -- `CGAL::write_polygon_soup()` +- `CGAL::IO::read_polygon_soup()` +- `CGAL::IO::write_polygon_soup()` - \link PkgStreamSupportIoFuncsSTL I/O for STL files \endlink - \link PkgStreamSupportIoFuncsPLY I/O for PLY files \endlink - \link PkgStreamSupportIoFuncsOBJ I/O for OBJ files \endlink diff --git a/Stream_support/examples/Stream_support/Linestring_WKT.cpp b/Stream_support/examples/Stream_support/Linestring_WKT.cpp index 6988a1d0ad7..597f871353b 100644 --- a/Stream_support/examples/Stream_support/Linestring_WKT.cpp +++ b/Stream_support/examples/Stream_support/Linestring_WKT.cpp @@ -23,7 +23,7 @@ int main(int argc, char* argv[]) LineString ls; { std::ifstream is((argc>1)?argv[1]:"data/linestring.wkt"); - CGAL::read_linestring_WKT(is, ls); + CGAL::IO::read_linestring_WKT(is, ls); is.close(); } for(Point p : ls) @@ -32,7 +32,7 @@ int main(int argc, char* argv[]) MultiLineString mls; { std::ifstream is((argc>2)?argv[2]:"data/multilinestring.wkt"); - CGAL::read_multi_linestring_WKT(is, mls); + CGAL::IO::read_multi_linestring_WKT(is, mls); is.close(); } for(LineString l : mls) diff --git a/Stream_support/examples/Stream_support/Point_WKT.cpp b/Stream_support/examples/Stream_support/Point_WKT.cpp index ce6020f4e23..768b3d20099 100644 --- a/Stream_support/examples/Stream_support/Point_WKT.cpp +++ b/Stream_support/examples/Stream_support/Point_WKT.cpp @@ -21,7 +21,7 @@ int main(int argc, char* argv[]) std::ifstream is((argc>1)?argv[1]:"data/multipoint.wkt"); MultiPoint mp; - CGAL::read_multi_point_WKT(is, mp); + CGAL::IO::read_multi_point_WKT(is, mp); for(const Point& p : mp) { std::cout<2)?argv[2]:"data/multipolygon.wkt"); MultiPolygon mp; - CGAL::read_multi_polygon_WKT(is, mp); + CGAL::IO::read_multi_polygon_WKT(is, mp); for(Polygon p : mp) std::cout< colors(all_triangles[id].size()); + std::vector colors(all_triangles[id].size()); IO::write_mesh_to_model(all_points[id], all_triangles[id], colors, name, &pMeshObject, pModel); } @@ -502,13 +504,15 @@ bool write_3MF(const std::string& fname, template bool write_3MF(const std::string& fname, const PointRange& points, const TriangleRange& triangles, - typename boost::enable_if >::type* = nullptr) + typename boost::enable_if >::type* = nullptr) { return write_triangle_soup_to_3mf(fname, points, triangles, "anonymous"); } /// \endcond +} // namespace IO + } // namespace CGAL #endif // defined(CGAL_LINKED_WITH_3MF) || defined(DOXYGEN_RUNNING) diff --git a/Stream_support/include/CGAL/IO/3MF/read_3mf.h b/Stream_support/include/CGAL/IO/3MF/read_3mf.h index 6c81f124380..ca4d64af3d0 100644 --- a/Stream_support/include/CGAL/IO/3MF/read_3mf.h +++ b/Stream_support/include/CGAL/IO/3MF/read_3mf.h @@ -128,7 +128,7 @@ bool extract_soups (NMR::PLib3MFModelMeshObject *pMeshObject, NMR::MODELMESH_TRIANGLECOLOR_SRGB pColor; NMR::lib3mf_propertyhandler_getcolor(pPropertyHandler, pid, &pColor); NMR::MODELMESHCOLOR_SRGB mColor = pColor.m_Colors[0]; - colors[pid]=CGAL::Color(mColor.m_Red, mColor.m_Green, + colors[pid]=CGAL::IO::Color(mColor.m_Red, mColor.m_Green, mColor.m_Blue, mColor.m_Alpha); } diff --git a/Stream_support/include/CGAL/IO/Color.h b/Stream_support/include/CGAL/IO/Color.h index 10754d9979a..12bdd320e28 100644 --- a/Stream_support/include/CGAL/IO/Color.h +++ b/Stream_support/include/CGAL/IO/Color.h @@ -27,6 +27,7 @@ namespace CGAL { +namespace IO { /*! \ingroup PkgStreamSupportRef @@ -350,6 +351,22 @@ inline Color white() { return Color(255,255,255); } */ inline Color yellow() { return Color(255,255,0); } +} //namespace IO + +#ifndef CGAL_NO_DEPRECATED_CODE +using IO::Color; +using IO::black; +using IO::blue; +using IO::deep_blue; +using IO::gray; +using IO::green; +using IO::orange; +using IO::purple; +using IO::red; +using IO::violet; +using IO::white; +using IO::yellow; +#endif } //namespace CGAL diff --git a/Stream_support/include/CGAL/IO/GOCAD.h b/Stream_support/include/CGAL/IO/GOCAD.h index 104a3c6cc54..ab838f15b9e 100644 --- a/Stream_support/include/CGAL/IO/GOCAD.h +++ b/Stream_support/include/CGAL/IO/GOCAD.h @@ -32,6 +32,8 @@ namespace CGAL { +namespace IO { + //////////////////////////////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////////////////////////////// // Read @@ -192,7 +194,7 @@ bool read_GOCAD(std::istream& is, PolygonRange& polygons, const CGAL_BGL_NP_CLASS& np #ifndef DOXYGEN_RUNNING - , typename boost::enable_if >::type* = nullptr + , typename boost::enable_if >::type* = nullptr #endif ) { @@ -204,7 +206,7 @@ bool read_GOCAD(std::istream& is, template bool read_GOCAD(std::istream& is, PointRange& points, PolygonRange& polygons, - typename boost::enable_if >::type* = nullptr) + typename boost::enable_if >::type* = nullptr) { std::pair dummy; return read_GOCAD(is, dummy, points, polygons, parameters::all_default()); @@ -249,7 +251,7 @@ bool read_GOCAD(const std::string& fname, PolygonRange& polygons, const CGAL_BGL_NP_CLASS& np #ifndef DOXYGEN_RUNNING - , typename boost::enable_if >::type* = nullptr + , typename boost::enable_if >::type* = nullptr #endif ) { @@ -263,7 +265,7 @@ bool read_GOCAD(const std::string& fname, template bool read_GOCAD(const std::string& fname, PointRange& points, PolygonRange& polygons, - typename boost::enable_if >::type* = nullptr) + typename boost::enable_if >::type* = nullptr) { return read_GOCAD(fname, points, polygons, parameters::all_default()); } @@ -370,7 +372,7 @@ bool write_GOCAD(std::ostream& os, const PolygonRange& polygons, const CGAL_BGL_NP_CLASS& np #ifndef DOXYGEN_RUNNING - , typename boost::enable_if >::type* = nullptr + , typename boost::enable_if >::type* = nullptr #endif ) { @@ -381,7 +383,7 @@ bool write_GOCAD(std::ostream& os, template bool write_GOCAD(std::ostream& os, const PointRange& points, const PolygonRange& polygons, - typename boost::enable_if >::type* = nullptr) + typename boost::enable_if >::type* = nullptr) { return IO::internal::write_GOCAD(os, "anonymous", points, polygons, parameters::all_default()); } @@ -423,7 +425,7 @@ bool write_GOCAD(const std::string& fname, const PolygonRange& polygons, const CGAL_BGL_NP_CLASS& np #ifndef DOXYGEN_RUNNING - , typename boost::enable_if >::type* = nullptr + , typename boost::enable_if >::type* = nullptr #endif ) { @@ -437,13 +439,15 @@ bool write_GOCAD(const std::string& fname, template bool write_GOCAD(const std::string& fname, const PointRange& points, const PolygonRange& polygons, - typename boost::enable_if >::type* = nullptr) + typename boost::enable_if >::type* = nullptr) { return write_GOCAD(fname, points, polygons, parameters::all_default()); } /// \endcond +} // namespace IO + } // namespace CGAL #endif // CGAL_IO_GOCAD_H diff --git a/Stream_support/include/CGAL/IO/OBJ.h b/Stream_support/include/CGAL/IO/OBJ.h index ea3abc8075f..f8467ade4e3 100644 --- a/Stream_support/include/CGAL/IO/OBJ.h +++ b/Stream_support/include/CGAL/IO/OBJ.h @@ -181,7 +181,6 @@ bool read_OBJ(std::istream& is, } } // namespace internal -} // namespace IO /// \ingroup PkgStreamSupportIoFuncsOBJ /// @@ -218,22 +217,22 @@ bool read_OBJ(std::istream& is, PolygonRange& polygons, const CGAL_BGL_NP_CLASS& np #ifndef DOXYGEN_RUNNING - , typename boost::enable_if >::type* = nullptr + , typename boost::enable_if >::type* = nullptr #endif ) { const bool verbose = parameters::choose_parameter(parameters::get_parameter(np, internal_np::verbose), false); - return IO::internal::read_OBJ(is, points, polygons, - CGAL::Emptyset_iterator(), CGAL::Emptyset_iterator(), - verbose); + return internal::read_OBJ(is, points, polygons, + CGAL::Emptyset_iterator(), CGAL::Emptyset_iterator(), + verbose); } /// \cond SKIP_IN_MANUAL template bool read_OBJ(std::istream& is, PointRange& points, PolygonRange& polygons, - typename boost::enable_if >::type* = nullptr) + typename boost::enable_if >::type* = nullptr) { return read_OBJ(is, points, polygons, parameters::all_default()); } @@ -274,7 +273,7 @@ bool read_OBJ(const std::string& fname, PolygonRange& polygons, const CGAL_BGL_NP_CLASS& np #ifndef DOXYGEN_RUNNING - , typename boost::enable_if >::type* = nullptr + , typename boost::enable_if >::type* = nullptr #endif ) { @@ -287,7 +286,7 @@ bool read_OBJ(const std::string& fname, template bool read_OBJ(const std::string& fname, PointRange& points, PolygonRange& polygons, - typename boost::enable_if >::type* = nullptr) + typename boost::enable_if >::type* = nullptr) { return read_OBJ(fname, points, polygons, parameters::all_default()); } @@ -333,7 +332,7 @@ bool write_OBJ(std::ostream& os, const PolygonRange& polygons, const CGAL_BGL_NP_CLASS& np #ifndef DOXYGEN_RUNNING - , typename boost::enable_if >::type* = nullptr + , typename boost::enable_if >::type* = nullptr #endif ) { @@ -346,7 +345,7 @@ bool write_OBJ(std::ostream& os, template bool write_OBJ(std::ostream& os, const PointRange& points, const PolygonRange& polygons, - typename boost::enable_if >::type* = nullptr) + typename boost::enable_if >::type* = nullptr) { return write_OBJ(os, points, polygons, parameters::all_default()); } @@ -388,7 +387,7 @@ bool write_OBJ(const std::string& fname, const PolygonRange& polygons, const CGAL_BGL_NP_CLASS& np #ifndef DOXYGEN_RUNNING - , typename boost::enable_if >::type* = nullptr + , typename boost::enable_if >::type* = nullptr #endif ) { @@ -402,13 +401,15 @@ bool write_OBJ(const std::string& fname, template bool write_OBJ(const std::string& fname, const PointRange& points, const PolygonRange& polygons, - typename boost::enable_if >::type* = nullptr) + typename boost::enable_if >::type* = nullptr) { return write_OBJ(fname, points, polygons, parameters::all_default()); } /// \endcond +} // namespace IO + } // namespace CGAL #endif // CGAL_IO_OBJ_H diff --git a/Stream_support/include/CGAL/IO/OFF.h b/Stream_support/include/CGAL/IO/OFF.h index 645ecf6e15f..ceb9d7db40b 100644 --- a/Stream_support/include/CGAL/IO/OFF.h +++ b/Stream_support/include/CGAL/IO/OFF.h @@ -72,7 +72,7 @@ bool read_OFF(std::istream& is, typedef typename Kernel::Point_2 Texture; typedef typename Kernel::Vector_3 Normal; typedef typename Kernel::FT FT; - typedef CGAL::Color Color; + typedef CGAL::IO::Color Color; if(!is.good()){ @@ -92,7 +92,7 @@ bool read_OFF(std::istream& is, double x(0), y(0), z(0), w(0); scanner.scan_vertex(x, y, z, w); CGAL_assertion(w != 0); - IO::internal::fill_point(x, y, z, w, points[i]); + internal::fill_point(x, y, z, w, points[i]); if(scanner.has_normals()) { @@ -153,7 +153,6 @@ bool read_OFF(std::istream& is, } } // namespace internal -} // namespace IO /*! * \ingroup PkgStreamSupportIoFuncsOFF @@ -190,30 +189,30 @@ bool read_OFF(std::istream& is, PolygonRange& polygons, const CGAL_BGL_NP_CLASS& np #ifndef DOXYGEN_RUNNING - , typename boost::enable_if >::type* = nullptr + , typename boost::enable_if >::type* = nullptr #endif ) { using parameters::choose_parameter; using parameters::get_parameter; - return IO::internal::read_OFF(is, points, polygons, - choose_parameter(get_parameter(np, internal_np::vertex_normal_output_iterator), - CGAL::Emptyset_iterator()), - choose_parameter(get_parameter(np, internal_np::vertex_color_output_iterator), - CGAL::Emptyset_iterator()), - choose_parameter(get_parameter(np, internal_np::vertex_texture_output_iterator), - CGAL::Emptyset_iterator()), - choose_parameter(get_parameter(np, internal_np::face_color_output_iterator), - CGAL::Emptyset_iterator()), - choose_parameter(get_parameter(np, internal_np::verbose), true)); + return internal::read_OFF(is, points, polygons, + choose_parameter(get_parameter(np, internal_np::vertex_normal_output_iterator), + CGAL::Emptyset_iterator()), + choose_parameter(get_parameter(np, internal_np::vertex_color_output_iterator), + CGAL::Emptyset_iterator()), + choose_parameter(get_parameter(np, internal_np::vertex_texture_output_iterator), + CGAL::Emptyset_iterator()), + choose_parameter(get_parameter(np, internal_np::face_color_output_iterator), + CGAL::Emptyset_iterator()), + choose_parameter(get_parameter(np, internal_np::verbose), true)); } /// \cond SKIP_IN_MANUAL template bool read_OFF(std::istream& is, PointRange& points, PolygonRange& polygons, - typename boost::enable_if >::type* = nullptr) + typename boost::enable_if >::type* = nullptr) { return read_OFF(is, points, polygons, parameters::all_default()); } @@ -254,7 +253,7 @@ bool read_OFF(const std::string& fname, PolygonRange& polygons, const CGAL_BGL_NP_CLASS& np #ifndef DOXYGEN_RUNNING - , typename boost::enable_if >::type* = nullptr + , typename boost::enable_if >::type* = nullptr #endif ) { @@ -266,7 +265,7 @@ bool read_OFF(const std::string& fname, template bool read_OFF(const std::string& fname, PointRange& points, PolygonRange& polygons, - typename boost::enable_if >::type* = nullptr) + typename boost::enable_if >::type* = nullptr) { return read_OFF(fname, points, polygons, parameters::all_default()); } @@ -310,7 +309,7 @@ bool write_OFF(std::ostream& os, const PolygonRange& polygons, const CGAL_BGL_NP_CLASS& np #ifndef DOXYGEN_RUNNING - , typename boost::enable_if >::type* = nullptr + , typename boost::enable_if >::type* = nullptr #endif ) { @@ -322,7 +321,7 @@ bool write_OFF(std::ostream& os, template bool write_OFF(std::ostream& os, const PointRange& points, const PolygonRange& polygons - , typename boost::enable_if >::type* = nullptr) + , typename boost::enable_if >::type* = nullptr) { return write_OFF(os, points, polygons, parameters::all_default()); } @@ -362,7 +361,7 @@ bool write_OFF(const std::string& fname, const PolygonRange& polygons, const CGAL_BGL_NP_CLASS& np #ifndef DOXYGEN_RUNNING - , typename boost::enable_if >::type* = nullptr + , typename boost::enable_if >::type* = nullptr #endif ) { @@ -375,13 +374,15 @@ bool write_OFF(const std::string& fname, template bool write_OFF(const std::string& fname, const PointRange& points, const PolygonRange& polygons, - typename boost::enable_if >::type* = nullptr) + typename boost::enable_if >::type* = nullptr) { return write_OFF(fname, points, polygons, parameters::all_default()); } /// \endcond +} // namespace IO + } // namespace CGAL #endif // CGAL_IO_OFF_H diff --git a/Stream_support/include/CGAL/IO/OFF/File_scanner_OFF.h b/Stream_support/include/CGAL/IO/OFF/File_scanner_OFF.h index 89bb14656ef..81a50722ba1 100644 --- a/Stream_support/include/CGAL/IO/OFF/File_scanner_OFF.h +++ b/Stream_support/include/CGAL/IO/OFF/File_scanner_OFF.h @@ -372,163 +372,163 @@ public: z = static_cast(dz); } - static const Color& get_indexed_color(int id) + static const IO::Color& get_indexed_color(int id) { - static const Color color[149] = { - Color(255, 255, 255, 191), - Color(255, 255, 255, 191), - Color(255, 255, 255, 191), - Color(255, 255, 255, 191), - Color(255, 255, 255, 191), - Color(255, 255, 255, 191), - Color(178, 38, 25, 191), - Color(51, 51, 204, 191), - Color(229, 153, 5, 191), - Color(25, 76, 204, 191), - Color(25, 178, 51, 191), - Color(204, 204, 102, 191), - Color(178, 178, 0, 191), - Color(178, 0, 178, 191), - Color(0, 178, 178, 191), - Color(229, 0, 51, 191), - Color(51, 229, 0, 191), - Color(0, 51, 229, 191), - Color(191, 191, 191, 191), - Color(204, 102, 0, 191), - Color(204, 102, 0, 191), - Color(0, 102, 204, 191), - Color(0, 102, 204, 191), - Color(0, 204, 102, 191), - Color(0, 204, 102, 191), - Color(102, 0, 204, 191), - Color(102, 0, 204, 191), - Color(204, 0, 102, 191), - Color(204, 0, 102, 191), - Color(178, 127, 51, 191), - Color(178, 127, 51, 191), - Color(178, 178, 0, 191), - Color(178, 0, 178, 191), - Color(0, 178, 178, 191), - Color(229, 0, 0, 191), - Color(0, 229, 0, 191), - Color(0, 0, 229, 191), - Color(191, 191, 191, 191), - Color(204, 102, 0, 191), - Color(102, 204, 0, 191), - Color(0, 102, 204, 191), - Color(0, 204, 102, 191), - Color(102, 0, 204, 191), - Color(204, 0, 102, 191), - Color(178, 178, 0, 191), - Color(178, 0, 178, 191), - Color(0, 178, 178, 191), - Color(229, 0, 0, 191), - Color(0, 229, 0, 191), - Color(0, 0, 229, 191), - Color(191, 191, 191, 191), - Color(204, 102, 0, 191), - Color(102, 204, 0, 191), - Color(0, 102, 204, 191), - Color(0, 204, 102, 191), - Color(102, 0, 204, 191), - Color(204, 0, 102, 191), - Color(178, 178, 0, 191), - Color(178, 0, 178, 191), - Color(0, 178, 178, 191), - Color(229, 0, 0, 191), - Color(0, 229, 0, 191), - Color(0, 0, 229, 191), - Color(191, 191, 191, 191), - Color(204, 102, 0, 191), - Color(102, 204, 0, 191), - Color(0, 102, 204, 191), - Color(0, 204, 102, 191), - Color(102, 0, 204, 191), - Color(204, 0, 102, 191), - Color(255, 255, 255, 191), - Color(255, 255, 255, 191), - Color(255, 255, 255, 191), - Color(255, 255, 255, 191), - Color(255, 255, 255, 191), - Color(255, 255, 255, 191), - Color(12, 76, 25, 191), - Color(178, 2, 25, 191), - Color(51, 12, 153, 191), - Color(229, 229, 5, 191), - Color(0, 51, 102, 191), - Color(25, 102, 102, 191), - Color(204, 204, 204, 191), - Color(178, 178, 0, 191), - Color(178, 178, 0, 191), - Color(178, 0, 178, 191), - Color(178, 0, 178, 191), - Color(0, 178, 178, 191), - Color(0, 178, 178, 191), - Color(229, 0, 0, 191), - Color(229, 0, 0, 191), - Color(0, 229, 0, 191), - Color(0, 229, 0, 191), - Color(0, 0, 229, 191), - Color(0, 0, 229, 191), - Color(191, 191, 191, 191), - Color(191, 191, 191, 191), - Color(204, 102, 0, 191), - Color(204, 102, 0, 191), - Color(0, 102, 204, 191), - Color(0, 102, 204, 191), - Color(0, 204, 102, 191), - Color(0, 204, 102, 191), - Color(102, 0, 204, 191), - Color(102, 0, 204, 191), - Color(204, 0, 102, 191), - Color(204, 0, 102, 191), - Color(178, 127, 51, 191), - Color(178, 127, 51, 191), - Color(178, 178, 0, 191), - Color(178, 0, 178, 191), - Color(0, 178, 178, 191), - Color(229, 0, 0, 191), - Color(0, 229, 0, 191), - Color(0, 0, 229, 191), - Color(191, 191, 191, 191), - Color(204, 102, 0, 191), - Color(102, 204, 0, 191), - Color(0, 102, 204, 191), - Color(0, 204, 102, 191), - Color(102, 0, 204, 191), - Color(204, 0, 102, 191), - Color(178, 178, 0, 191), - Color(178, 0, 178, 191), - Color(0, 178, 178, 191), - Color(229, 0, 0, 191), - Color(0, 229, 0, 191), - Color(0, 0, 229, 191), - Color(191, 191, 191, 191), - Color(204, 102, 0, 191), - Color(102, 204, 0, 191), - Color(0, 102, 204, 191), - Color(0, 204, 102, 191), - Color(102, 0, 204, 191), - Color(204, 0, 102, 191), - Color(178, 178, 0, 191), - Color(178, 0, 178, 191), - Color(0, 178, 178, 191), - Color(229, 0, 0, 191), - Color(0, 229, 0, 191), - Color(0, 0, 229, 191), - Color(191, 191, 191, 191), - Color(204, 102, 0, 191), - Color(102, 204, 0, 191), - Color(0, 102, 204, 191), - Color(0, 204, 102, 191), - Color(102, 0, 204, 191), - Color(204, 0, 102, 191), - Color(120, 120, 120, 120) }; + static const IO::Color color[149] = { + IO::Color(255, 255, 255, 191), + IO::Color(255, 255, 255, 191), + IO::Color(255, 255, 255, 191), + IO::Color(255, 255, 255, 191), + IO::Color(255, 255, 255, 191), + IO::Color(255, 255, 255, 191), + IO::Color(178, 38, 25, 191), + IO::Color(51, 51, 204, 191), + IO::Color(229, 153, 5, 191), + IO::Color(25, 76, 204, 191), + IO::Color(25, 178, 51, 191), + IO::Color(204, 204, 102, 191), + IO::Color(178, 178, 0, 191), + IO::Color(178, 0, 178, 191), + IO::Color(0, 178, 178, 191), + IO::Color(229, 0, 51, 191), + IO::Color(51, 229, 0, 191), + IO::Color(0, 51, 229, 191), + IO::Color(191, 191, 191, 191), + IO::Color(204, 102, 0, 191), + IO::Color(204, 102, 0, 191), + IO::Color(0, 102, 204, 191), + IO::Color(0, 102, 204, 191), + IO::Color(0, 204, 102, 191), + IO::Color(0, 204, 102, 191), + IO::Color(102, 0, 204, 191), + IO::Color(102, 0, 204, 191), + IO::Color(204, 0, 102, 191), + IO::Color(204, 0, 102, 191), + IO::Color(178, 127, 51, 191), + IO::Color(178, 127, 51, 191), + IO::Color(178, 178, 0, 191), + IO::Color(178, 0, 178, 191), + IO::Color(0, 178, 178, 191), + IO::Color(229, 0, 0, 191), + IO::Color(0, 229, 0, 191), + IO::Color(0, 0, 229, 191), + IO::Color(191, 191, 191, 191), + IO::Color(204, 102, 0, 191), + IO::Color(102, 204, 0, 191), + IO::Color(0, 102, 204, 191), + IO::Color(0, 204, 102, 191), + IO::Color(102, 0, 204, 191), + IO::Color(204, 0, 102, 191), + IO::Color(178, 178, 0, 191), + IO::Color(178, 0, 178, 191), + IO::Color(0, 178, 178, 191), + IO::Color(229, 0, 0, 191), + IO::Color(0, 229, 0, 191), + IO::Color(0, 0, 229, 191), + IO::Color(191, 191, 191, 191), + IO::Color(204, 102, 0, 191), + IO::Color(102, 204, 0, 191), + IO::Color(0, 102, 204, 191), + IO::Color(0, 204, 102, 191), + IO::Color(102, 0, 204, 191), + IO::Color(204, 0, 102, 191), + IO::Color(178, 178, 0, 191), + IO::Color(178, 0, 178, 191), + IO::Color(0, 178, 178, 191), + IO::Color(229, 0, 0, 191), + IO::Color(0, 229, 0, 191), + IO::Color(0, 0, 229, 191), + IO::Color(191, 191, 191, 191), + IO::Color(204, 102, 0, 191), + IO::Color(102, 204, 0, 191), + IO::Color(0, 102, 204, 191), + IO::Color(0, 204, 102, 191), + IO::Color(102, 0, 204, 191), + IO::Color(204, 0, 102, 191), + IO::Color(255, 255, 255, 191), + IO::Color(255, 255, 255, 191), + IO::Color(255, 255, 255, 191), + IO::Color(255, 255, 255, 191), + IO::Color(255, 255, 255, 191), + IO::Color(255, 255, 255, 191), + IO::Color(12, 76, 25, 191), + IO::Color(178, 2, 25, 191), + IO::Color(51, 12, 153, 191), + IO::Color(229, 229, 5, 191), + IO::Color(0, 51, 102, 191), + IO::Color(25, 102, 102, 191), + IO::Color(204, 204, 204, 191), + IO::Color(178, 178, 0, 191), + IO::Color(178, 178, 0, 191), + IO::Color(178, 0, 178, 191), + IO::Color(178, 0, 178, 191), + IO::Color(0, 178, 178, 191), + IO::Color(0, 178, 178, 191), + IO::Color(229, 0, 0, 191), + IO::Color(229, 0, 0, 191), + IO::Color(0, 229, 0, 191), + IO::Color(0, 229, 0, 191), + IO::Color(0, 0, 229, 191), + IO::Color(0, 0, 229, 191), + IO::Color(191, 191, 191, 191), + IO::Color(191, 191, 191, 191), + IO::Color(204, 102, 0, 191), + IO::Color(204, 102, 0, 191), + IO::Color(0, 102, 204, 191), + IO::Color(0, 102, 204, 191), + IO::Color(0, 204, 102, 191), + IO::Color(0, 204, 102, 191), + IO::Color(102, 0, 204, 191), + IO::Color(102, 0, 204, 191), + IO::Color(204, 0, 102, 191), + IO::Color(204, 0, 102, 191), + IO::Color(178, 127, 51, 191), + IO::Color(178, 127, 51, 191), + IO::Color(178, 178, 0, 191), + IO::Color(178, 0, 178, 191), + IO::Color(0, 178, 178, 191), + IO::Color(229, 0, 0, 191), + IO::Color(0, 229, 0, 191), + IO::Color(0, 0, 229, 191), + IO::Color(191, 191, 191, 191), + IO::Color(204, 102, 0, 191), + IO::Color(102, 204, 0, 191), + IO::Color(0, 102, 204, 191), + IO::Color(0, 204, 102, 191), + IO::Color(102, 0, 204, 191), + IO::Color(204, 0, 102, 191), + IO::Color(178, 178, 0, 191), + IO::Color(178, 0, 178, 191), + IO::Color(0, 178, 178, 191), + IO::Color(229, 0, 0, 191), + IO::Color(0, 229, 0, 191), + IO::Color(0, 0, 229, 191), + IO::Color(191, 191, 191, 191), + IO::Color(204, 102, 0, 191), + IO::Color(102, 204, 0, 191), + IO::Color(0, 102, 204, 191), + IO::Color(0, 204, 102, 191), + IO::Color(102, 0, 204, 191), + IO::Color(204, 0, 102, 191), + IO::Color(178, 178, 0, 191), + IO::Color(178, 0, 178, 191), + IO::Color(0, 178, 178, 191), + IO::Color(229, 0, 0, 191), + IO::Color(0, 229, 0, 191), + IO::Color(0, 0, 229, 191), + IO::Color(191, 191, 191, 191), + IO::Color(204, 102, 0, 191), + IO::Color(102, 204, 0, 191), + IO::Color(0, 102, 204, 191), + IO::Color(0, 204, 102, 191), + IO::Color(102, 0, 204, 191), + IO::Color(204, 0, 102, 191), + IO::Color(120, 120, 120, 120) }; if(id > 148) id =148; return color[id]; } - static CGAL::Color get_color_from_line(std::istream &is) + static CGAL::IO::Color get_color_from_line(std::istream &is) { std::string color_info; bool is_float = false; @@ -573,7 +573,7 @@ public: if(index == 3) break; } - CGAL::Color color; + CGAL::IO::Color color; //if there were only one number, fetch the color in the color map if(index < 2) { @@ -581,7 +581,7 @@ public: //else create the color with the 3 values; } else{ - color = CGAL::Color(rgb[0], rgb[1], rgb[2]); + color = CGAL::IO::Color(rgb[0], rgb[1], rgb[2]); } std::iostream::pos_type ss_pos = iss.tellg(); if(ss_pos != std::iostream::pos_type(-1)) @@ -607,7 +607,7 @@ public: } else { - CGAL::Color color; + CGAL::IO::Color color; if(color_entries == 1){ color = get_indexed_color(static_cast(entries[first_color_index])); // the index in the color map r = color.red(); diff --git a/Stream_support/include/CGAL/IO/PLY.h b/Stream_support/include/CGAL/IO/PLY.h index bfcebbf8d7c..692525675e5 100644 --- a/Stream_support/include/CGAL/IO/PLY.h +++ b/Stream_support/include/CGAL/IO/PLY.h @@ -60,7 +60,7 @@ bool read_PLY(std::istream& is, typename std::enable_if::value>::type* = nullptr) { typedef typename boost::range_value::type Point_3; - typedef CGAL::Color Color_rgb; + typedef CGAL::IO::Color Color_rgb; if(!is.good()) { @@ -69,7 +69,7 @@ bool read_PLY(std::istream& is, return false; } - IO::internal::PLY_reader reader(verbose); + internal::PLY_reader reader(verbose); if(!(reader.init(is))) { @@ -79,7 +79,7 @@ bool read_PLY(std::istream& is, for(std::size_t i=0; iget(is); if(is.fail()) @@ -114,21 +114,21 @@ bool read_PLY(std::istream& is, std::tuple new_vertex; if(has_colors) { - IO::internal::process_properties(element, new_vertex, - make_ply_point_reader(CGAL::make_nth_of_tuple_property_map<0>(new_vertex)), - std::make_pair(CGAL::make_nth_of_tuple_property_map<1>(new_vertex), - PLY_property(rtag.c_str())), - std::make_pair(CGAL::make_nth_of_tuple_property_map<2>(new_vertex), - PLY_property(gtag.c_str())), - std::make_pair(CGAL::make_nth_of_tuple_property_map<3>(new_vertex), - PLY_property(btag.c_str()))); + internal::process_properties(element, new_vertex, + make_ply_point_reader(CGAL::make_nth_of_tuple_property_map<0>(new_vertex)), + std::make_pair(CGAL::make_nth_of_tuple_property_map<1>(new_vertex), + PLY_property(rtag.c_str())), + std::make_pair(CGAL::make_nth_of_tuple_property_map<2>(new_vertex), + PLY_property(gtag.c_str())), + std::make_pair(CGAL::make_nth_of_tuple_property_map<3>(new_vertex), + PLY_property(btag.c_str()))); *vc_out++ = Color_rgb(get<1>(new_vertex), get<2>(new_vertex), get<3>(new_vertex)); } else { - IO::internal::process_properties(element, new_vertex, - make_ply_point_reader(CGAL::make_nth_of_tuple_property_map<0>(new_vertex))); + internal::process_properties(element, new_vertex, + make_ply_point_reader(CGAL::make_nth_of_tuple_property_map<0>(new_vertex))); } points.push_back(get<0>(new_vertex)); @@ -138,19 +138,19 @@ bool read_PLY(std::istream& is, { if(element.has_property >("vertex_indices")) { - IO::internal::read_PLY_faces(is, element, polygons, fc_out, "vertex_indices"); + internal::read_PLY_faces(is, element, polygons, fc_out, "vertex_indices"); } else if(element.has_property >("vertex_indices")) { - IO::internal::read_PLY_faces(is, element, polygons, fc_out, "vertex_indices"); + internal::read_PLY_faces(is, element, polygons, fc_out, "vertex_indices"); } else if(element.has_property >("vertex_index")) { - IO::internal::read_PLY_faces(is, element, polygons, fc_out, "vertex_index"); + internal::read_PLY_faces(is, element, polygons, fc_out, "vertex_index"); } else if(element.has_property >("vertex_index")) { - IO::internal::read_PLY_faces(is, element, polygons, fc_out, "vertex_index"); + internal::read_PLY_faces(is, element, polygons, fc_out, "vertex_index"); } else { @@ -176,7 +176,7 @@ bool read_PLY(std::istream& is, { for(std::size_t k=0; kget(is); if(is.fail()) @@ -185,26 +185,26 @@ bool read_PLY(std::istream& is, if(has_uv) { - IO::internal::process_properties(element, new_hedge, - std::make_pair(CGAL::make_nth_of_tuple_property_map<0>(new_hedge), - PLY_property(stag.c_str())), - std::make_pair(CGAL::make_nth_of_tuple_property_map<1>(new_hedge), - PLY_property(ttag.c_str())), - std::make_pair(CGAL::make_nth_of_tuple_property_map<2>(new_hedge), - PLY_property(utag.c_str())), - std::make_pair(CGAL::make_nth_of_tuple_property_map<3>(new_hedge), - PLY_property(vtag.c_str()))); + internal::process_properties(element, new_hedge, + std::make_pair(CGAL::make_nth_of_tuple_property_map<0>(new_hedge), + PLY_property(stag.c_str())), + std::make_pair(CGAL::make_nth_of_tuple_property_map<1>(new_hedge), + PLY_property(ttag.c_str())), + std::make_pair(CGAL::make_nth_of_tuple_property_map<2>(new_hedge), + PLY_property(utag.c_str())), + std::make_pair(CGAL::make_nth_of_tuple_property_map<3>(new_hedge), + PLY_property(vtag.c_str()))); *hedges_out++ = std::make_pair(get<0>(new_hedge), get<1>(new_hedge)); *huvs_out++ = std::make_pair(get<2>(new_hedge), get<3>(new_hedge)); } else { - IO::internal::process_properties(element, new_hedge, - std::make_pair(CGAL::make_nth_of_tuple_property_map<0>(new_hedge), - PLY_property(stag.c_str())), - std::make_pair(CGAL::make_nth_of_tuple_property_map<1>(new_hedge), - PLY_property(ttag.c_str()))); + internal::process_properties(element, new_hedge, + std::make_pair(CGAL::make_nth_of_tuple_property_map<0>(new_hedge), + PLY_property(stag.c_str())), + std::make_pair(CGAL::make_nth_of_tuple_property_map<1>(new_hedge), + PLY_property(ttag.c_str()))); } } } @@ -214,7 +214,7 @@ bool read_PLY(std::istream& is, { for(std::size_t k=0; kget(is); if(is.fail()) return false; @@ -226,7 +226,6 @@ bool read_PLY(std::istream& is, } } // namespace internal -} // namespace IO /// \cond SKIP_IN_MANUAL @@ -239,14 +238,14 @@ bool read_PLY(std::istream& is, ColorRange& vcolors, HUVRange& huvs, const bool verbose = false, - typename boost::enable_if >::type* = nullptr) + typename boost::enable_if >::type* = nullptr) { - return IO::internal::read_PLY(is, points, polygons, - std::back_inserter(hedges), - std::back_inserter(fcolors), - std::back_inserter(vcolors), - std::back_inserter(huvs), - verbose); + return internal::read_PLY(is, points, polygons, + std::back_inserter(hedges), + std::back_inserter(fcolors), + std::back_inserter(vcolors), + std::back_inserter(huvs), + verbose); } template @@ -260,12 +259,12 @@ bool read_PLY(std::istream& is, std::vector > dummy_pui; std::vector > dummy_pf; - return IO::internal::read_PLY(is, points, polygons, - std::back_inserter(dummy_pui), - std::back_inserter(fcolors), - std::back_inserter(vcolors), - std::back_inserter(dummy_pf), - verbose); + return internal::read_PLY(is, points, polygons, + std::back_inserter(dummy_pui), + std::back_inserter(fcolors), + std::back_inserter(vcolors), + std::back_inserter(dummy_pf), + verbose); } /// \endcond @@ -315,7 +314,7 @@ bool read_PLY(std::istream& is, PolygonRange& polygons, const CGAL_BGL_NP_CLASS& np #ifndef DOXYGEN_RUNNING - , typename boost::enable_if >::type* = nullptr + , typename boost::enable_if >::type* = nullptr #endif ) { @@ -325,20 +324,20 @@ bool read_PLY(std::istream& is, std::vector > dummy_pui; std::vector > dummy_pf; - return IO::internal::read_PLY(is, points, polygons, std::back_inserter(dummy_pui), - choose_parameter(get_parameter(np, internal_np::face_color_output_iterator), - CGAL::Emptyset_iterator()), - choose_parameter(get_parameter(np, internal_np::vertex_color_output_iterator), - CGAL::Emptyset_iterator()), - std::back_inserter(dummy_pf), - choose_parameter(get_parameter(np, internal_np::verbose), true)); + return internal::read_PLY(is, points, polygons, std::back_inserter(dummy_pui), + choose_parameter(get_parameter(np, internal_np::face_color_output_iterator), + CGAL::Emptyset_iterator()), + choose_parameter(get_parameter(np, internal_np::vertex_color_output_iterator), + CGAL::Emptyset_iterator()), + std::back_inserter(dummy_pf), + choose_parameter(get_parameter(np, internal_np::verbose), true)); } /// \cond SKIP_IN_MANUAL template bool read_PLY(std::istream& is, PointRange& points, PolygonRange& polygons, - typename boost::enable_if >::type* = nullptr) + typename boost::enable_if >::type* = nullptr) { return read_PLY(is, points, polygons, parameters::all_default()); } @@ -386,7 +385,7 @@ bool read_PLY(const std::string& fname, PolygonRange& polygons, const CGAL_BGL_NP_CLASS& np #ifndef DOXYGEN_RUNNING - , typename boost::enable_if >::type* = nullptr + , typename boost::enable_if >::type* = nullptr #endif ) { @@ -409,7 +408,7 @@ bool read_PLY(const std::string& fname, template bool read_PLY(const std::string& fname, PointRange& points, PolygonRange& polygons, - typename boost::enable_if >::type* = nullptr) + typename boost::enable_if >::type* = nullptr) { return read_PLY(fname, points, polygons, parameters::all_default()); } @@ -458,7 +457,7 @@ bool write_PLY(std::ostream& out, const PolygonRange& polygons, const CGAL_BGL_NP_CLASS& np #ifndef DOXYGEN_RUNNING - , typename boost::enable_if >::type* = nullptr + , typename boost::enable_if >::type* = nullptr #endif ) { @@ -472,27 +471,27 @@ bool write_PLY(std::ostream& out, // Write header out << "ply" << std::endl - << ((get_mode(out) == IO::BINARY) ? "format binary_little_endian 1.0" : "format ascii 1.0") << std::endl + << ((get_mode(out) == BINARY) ? "format binary_little_endian 1.0" : "format ascii 1.0") << std::endl << "comment Generated by the CGAL library" << std::endl << "element vertex " << points.size() << std::endl; - IO::internal::output_property_header(out, make_ply_point_writer(CGAL::Identity_property_map())); + internal::output_property_header(out, make_ply_point_writer(CGAL::Identity_property_map())); out << "element face " << polygons.size() << std::endl; - IO::internal::output_property_header(out, std::make_pair(CGAL::Identity_property_map(), - PLY_property >("vertex_indices"))); + internal::output_property_header(out, std::make_pair(CGAL::Identity_property_map(), + PLY_property >("vertex_indices"))); out << "end_header" << std::endl; for(std::size_t i=0; i())); + internal::output_properties(out, points.begin() + i, + make_ply_point_writer(CGAL::Identity_property_map())); for(std::size_t i=0; i(), - PLY_property >("vertex_indices"))); + internal::output_properties(out, polygons.begin() + i, + std::make_pair(CGAL::Identity_property_map(), + PLY_property >("vertex_indices"))); return out.good(); } @@ -501,7 +500,7 @@ bool write_PLY(std::ostream& out, template bool write_PLY(std::ostream& out, const PointRange& points, const PolygonRange& polygons, - typename boost::enable_if >::type* = nullptr) + typename boost::enable_if >::type* = nullptr) { return write_PLY(out, points, polygons, parameters::all_default()); } @@ -548,7 +547,7 @@ bool write_PLY(const std::string& fname, const PolygonRange& polygons, const CGAL_BGL_NP_CLASS& np #ifndef DOXYGEN_RUNNING - , typename boost::enable_if >::type* = nullptr + , typename boost::enable_if >::type* = nullptr #endif ) { @@ -571,13 +570,15 @@ bool write_PLY(const std::string& fname, template bool write_PLY(const std::string& fname, const PointRange& points, const PolygonRange& polygons, - typename boost::enable_if >::type* = nullptr) + typename boost::enable_if >::type* = nullptr) { return write_PLY(fname, points, polygons, parameters::all_default()); } /// \endcond +} // namespace IO + } // namespace CGAL #endif // CGAL_IO_PLY_H diff --git a/Stream_support/include/CGAL/IO/PLY/PLY_reader.h b/Stream_support/include/CGAL/IO/PLY/PLY_reader.h index 62330c24e60..6d144761842 100644 --- a/Stream_support/include/CGAL/IO/PLY/PLY_reader.h +++ b/Stream_support/include/CGAL/IO/PLY/PLY_reader.h @@ -46,6 +46,8 @@ namespace CGAL { +namespace IO { + /// \cond SKIP_IN_MANUAL // PLY types: @@ -135,7 +137,6 @@ make_ply_normal_writer(VectorMap normal_map) PLY_property::type>("nz")); } -namespace IO { namespace internal { class PLY_read_number @@ -707,7 +708,7 @@ bool read_PLY_faces(std::istream& in, CGAL::is_iterator::value >::type* = nullptr) { - typedef CGAL::Color Color_rgb; + typedef CGAL::IO::Color Color_rgb; bool has_colors = false; std::string rtag = "r", gtag = "g", btag = "b"; @@ -784,6 +785,14 @@ bool read_PLY_faces(std::istream& in, } // namespace PLY } // namespace internal +#ifndef CGAL_NO_DEPREACTED_CODE +using IO::PLY_property; +using IO::make_ply_normal_reader; +using IO::make_ply_normal_writer; +using IO::make_ply_point_reader; +using IO::make_ply_point_writer; +#endif + /// \endcond } // namespace CGAL diff --git a/Stream_support/include/CGAL/IO/STL.h b/Stream_support/include/CGAL/IO/STL.h index 009e90b1ad4..0d045451f61 100644 --- a/Stream_support/include/CGAL/IO/STL.h +++ b/Stream_support/include/CGAL/IO/STL.h @@ -36,6 +36,8 @@ namespace CGAL { +namespace IO { + //////////////////////////////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////////////////////////////// // Read @@ -77,7 +79,7 @@ bool read_STL(std::istream& is, TriangleRange& facets, const CGAL_BGL_NP_CLASS& np #ifndef DOXYGEN_RUNNING - , typename boost::enable_if >::type* = nullptr + , typename boost::enable_if >::type* = nullptr #endif ) { @@ -114,7 +116,7 @@ bool read_STL(std::istream& is, { if(binary) return false; - return IO::internal::parse_ASCII_STL(is, points, facets, verbose); + return internal::parse_ASCII_STL(is, points, facets, verbose); } // We are within the first 80 characters, both ASCII and binary are possible @@ -141,7 +143,7 @@ bool read_STL(std::istream& is, // If the first word is not 'solid', the file must be binary if(s != "solid" || (word[5] !='\n' && word[5] !='\r' && word[5] != ' ')) { - if(IO::internal::parse_binary_STL(is, points, facets, verbose)) + if(internal::parse_binary_STL(is, points, facets, verbose)) { return true; } @@ -151,14 +153,14 @@ bool read_STL(std::istream& is, // The file does not start with 'solid' anyway, so it's fine to reset it. is.clear(); is.seekg(0, std::ios::beg); - return IO::internal::parse_ASCII_STL(is, points, facets, verbose); + return internal::parse_ASCII_STL(is, points, facets, verbose); } } // Now, we have found the keyword "solid" which is supposed to indicate that the file is ASCII is.clear(); is.seekg(0, std::ios::beg); // the parser needs to read all "solid" to work correctly. - if(IO::internal::parse_ASCII_STL(is, points, facets, verbose)) + if(internal::parse_ASCII_STL(is, points, facets, verbose)) { // correctly read the input as an ASCII file return true; @@ -166,7 +168,7 @@ bool read_STL(std::istream& is, else// Failed to read the ASCII file { // It might have actually have been a binary file... ? - return IO::internal::parse_binary_STL(is, points, facets, verbose); + return internal::parse_binary_STL(is, points, facets, verbose); } } @@ -174,7 +176,7 @@ bool read_STL(std::istream& is, template bool read_STL(std::istream& is, PointRange& points, TriangleRange& facets, - typename boost::enable_if >::type* = nullptr) + typename boost::enable_if >::type* = nullptr) { return read_STL(is, points, facets, parameters::all_default()); } @@ -222,7 +224,7 @@ bool read_STL(const std::string& fname, TriangleRange& facets, const CGAL_BGL_NP_CLASS& np #ifndef DOXYGEN_RUNNING - , typename boost::enable_if >::type* = nullptr + , typename boost::enable_if >::type* = nullptr #endif ) { @@ -232,7 +234,7 @@ bool read_STL(const std::string& fname, if(binary) { std::ifstream is(fname, std::ios::binary); - CGAL::set_mode(is, CGAL::IO::BINARY); + CGAL::set_mode(is, BINARY); if(read_STL(is, points, facets, np)) { return true; @@ -251,7 +253,7 @@ bool read_STL(const std::string& fname, template bool read_STL(const std::string& fname, PointRange& points, TriangleRange& facets, - typename boost::enable_if >::type* = nullptr) + typename boost::enable_if >::type* = nullptr) { return read_STL(fname, points, facets, parameters::all_default()); } @@ -297,7 +299,7 @@ bool write_STL(std::ostream& os, const TriangleRange& facets, const CGAL_BGL_NP_CLASS& np #ifndef DOXYGEN_RUNNING - , typename boost::enable_if >::type* = nullptr + , typename boost::enable_if >::type* = nullptr #endif ) { @@ -319,7 +321,7 @@ bool write_STL(std::ostream& os, set_stream_precision_from_NP(os, np); - if(get_mode(os) == IO::BINARY) + if(get_mode(os) == BINARY) { os << "FileType: Binary "; const boost::uint32_t N32 = static_cast(facets.size()); @@ -369,7 +371,7 @@ bool write_STL(std::ostream& os, template bool write_STL(std::ostream& os, const PointRange& points, const TriangleRange& facets, - typename boost::enable_if >::type* = nullptr) + typename boost::enable_if >::type* = nullptr) { return write_STL(os, points, facets, parameters::all_default()); } @@ -417,7 +419,7 @@ bool write_STL(const std::string& fname, const TriangleRange& facets, const CGAL_BGL_NP_CLASS& np #ifndef DOXYGEN_RUNNING - , typename boost::enable_if >::type* = nullptr + , typename boost::enable_if >::type* = nullptr #endif ) { @@ -440,13 +442,15 @@ bool write_STL(const std::string& fname, template bool write_STL(const std::string& fname, const PointRange& points, const TriangleRange& facets, - typename boost::enable_if >::type* = nullptr) + typename boost::enable_if >::type* = nullptr) { return write_STL(fname, points, facets, parameters::all_default()); } /// \endcond +} // namespace IO + } // namespace CGAL #endif // CGAL_IO_STL_H diff --git a/Stream_support/include/CGAL/IO/STL/STL_reader.h b/Stream_support/include/CGAL/IO/STL/STL_reader.h index 09aaf71f4ab..919ceeddd56 100644 --- a/Stream_support/include/CGAL/IO/STL/STL_reader.h +++ b/Stream_support/include/CGAL/IO/STL/STL_reader.h @@ -84,7 +84,7 @@ bool read_ASCII_facet(std::istream& is, } else { - IO::internal::fill_point(x, y, z, 1 /*w*/, p); + fill_point(x, y, z, 1 /*w*/, p); typename std::map::iterator iti = index_map.insert(std::make_pair(p, -1)).first; if(iti->second == -1) @@ -252,7 +252,7 @@ bool parse_binary_STL(std::istream& is, } Point p; - IO::internal::fill_point(x, y, z, 1 /*w*/, p); + fill_point(x, y, z, 1 /*w*/, p); typename std::map::iterator iti = index_map.insert(std::make_pair(p, -1)).first; diff --git a/Stream_support/include/CGAL/IO/VTK.h b/Stream_support/include/CGAL/IO/VTK.h index d56dd2f0d11..fcd541de756 100644 --- a/Stream_support/include/CGAL/IO/VTK.h +++ b/Stream_support/include/CGAL/IO/VTK.h @@ -89,7 +89,6 @@ bool vtkPointSet_to_polygon_soup(vtkPointSet* poly_data, return true; } } // namespace internal -} // namespace IO //////////////////////////////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////////////////////////////// @@ -109,14 +108,14 @@ bool read_VTP(const std::string& fname, } vtkSmartPointer data; - vtkSmartPointer obs = - vtkSmartPointer::New(); + vtkSmartPointer obs = + vtkSmartPointer::New(); - data = vtkPolyData::SafeDownCast(IO::internal::read_vtk_file(fname, obs)->GetOutput()); + data = vtkPolyData::SafeDownCast(internal::read_vtk_file(fname, obs)->GetOutput()); if (obs->GetError()) return false; - return IO::internal::vtkPointSet_to_polygon_soup(data, points, polygons, np); + return internal::vtkPointSet_to_polygon_soup(data, points, polygons, np); } /*! @@ -150,7 +149,6 @@ bool read_VTP(const std::string& fname, PointRange& points, PolygonRange& polygo //////////////////////////////////////////////////////////////////////////////////////////////////// // Write -namespace IO { namespace internal { // writes the polys appended data at the end of the .vtp file @@ -345,7 +343,6 @@ void write_soup_polys_points(std::ostream& os, } } // namespace internal -} // namespace IO /*! * \ingroup PkgStreamSupportIoFuncsVTP @@ -421,16 +418,16 @@ bool write_VTP(std::ostream& os, const bool binary = choose_parameter(get_parameter(np, internal_np::use_binary_mode), true); std::vector size_map; std::vector cell_type; - IO::internal::write_soup_points_tag(os, points, binary, offset); - IO::internal::write_soup_polys_tag(os, polygons, binary, offset, size_map, cell_type); + internal::write_soup_points_tag(os, points, binary, offset); + internal::write_soup_polys_tag(os, polygons, binary, offset, size_map, cell_type); os << " \n" << " \n"; if(binary) { os << "\n_"; - IO::internal::write_soup_polys_points(os, points); - IO::internal::write_soup_polys(os, polygons,size_map, cell_type); + internal::write_soup_polys_points(os, points); + internal::write_soup_polys(os, polygons,size_map, cell_type); } os << "" << std::endl; } @@ -509,6 +506,8 @@ bool write_VTP(const std::string& fname, const PointRange& points, const Polygon /// \endcond +} // namespace IO + } // namespace CGAL #endif // defined(CGAL_USE_VTK) || defined(DOXYGEN_RUNNING) diff --git a/Stream_support/include/CGAL/IO/WKT.h b/Stream_support/include/CGAL/IO/WKT.h index 9f81d43f7a9..998321e9eb5 100644 --- a/Stream_support/include/CGAL/IO/WKT.h +++ b/Stream_support/include/CGAL/IO/WKT.h @@ -39,6 +39,7 @@ #include namespace CGAL { +namespace IO { namespace internal { template @@ -127,7 +128,7 @@ bool read_multi_point_WKT(std::istream& in, if(!in.good()) return false; - internal::Geometry_container gc(mp); + CGAL::internal::Geometry_container gc(mp); std::string line; while(std::getline(in, line)) { @@ -173,7 +174,7 @@ bool read_linestring_WKT(std::istream& in, if(!in.good()) return false; - internal::Geometry_container gc(polyline); + CGAL::internal::Geometry_container gc(polyline); std::string line; while(std::getline(in, line)) { @@ -218,10 +219,10 @@ bool read_multi_linestring_WKT(std::istream& in, return false; typedef typename MultiLineString::value_type PointRange; - typedef internal::Geometry_container LineString; + typedef CGAL::internal::Geometry_container LineString; std::vector pr_range; - internal::Geometry_container, boost::geometry::multi_linestring_tag> gc(pr_range); + CGAL::internal::Geometry_container, boost::geometry::multi_linestring_tag> gc(pr_range); std::string line; while(std::getline(in, line)) { @@ -316,7 +317,7 @@ bool read_multi_polygon_WKT(std::istream& in, if(!in.good()) return false; - internal::Geometry_container gc(polygons); + CGAL::internal::Geometry_container gc(polygons); std::string line; while(std::getline(in, line)) { @@ -336,7 +337,7 @@ bool read_multi_polygon_WKT(std::istream& in, return false; }; - for(typename internal::Geometry_container::iterator it = gc.begin(); it != gc.end(); ++it) + for(typename CGAL::internal::Geometry_container::iterator it = gc.begin(); it != gc.end(); ++it) internal::pop_back_if_equal_to_front(*it); break; @@ -402,7 +403,7 @@ std::ostream& write_linestring_WKT(std::ostream& out, if(!out.good()) return out; - internal::Geometry_container gc(ls); + CGAL::internal::Geometry_container gc(ls); out << boost::geometry::wkt(gc) << std::endl; return out; } @@ -423,7 +424,7 @@ std::ostream& write_multi_point_WKT(std::ostream& out, if(!out.good()) return out; - internal::Geometry_container gc(mp); + CGAL::internal::Geometry_container gc(mp); out << boost::geometry::wkt(gc) << std::endl; return out; } @@ -444,7 +445,7 @@ std::ostream& write_multi_polygon_WKT(std::ostream& out, if(!out.good()) return out; - internal::Geometry_container gc(polygons); + CGAL::internal::Geometry_container gc(polygons); out << boost::geometry::wkt(gc) << std::endl; return out; } @@ -457,7 +458,7 @@ std::ostream& write_multi_polygon_WKT(std::ostream& out, //! //! \attention Only Cartesian Kernels with double or float as `FT` are supported. //! -//! \see `CGAL::write_linestring_WKT()` +//! \see `CGAL::IO::write_linestring_WKT()` template std::ostream& write_multi_linestring_WKT(std::ostream& out, MultiLineString& mls) @@ -466,7 +467,7 @@ std::ostream& write_multi_linestring_WKT(std::ostream& out, return out; typedef typename MultiLineString::value_type PointRange; - typedef internal::Geometry_container LineString; + typedef CGAL::internal::Geometry_container LineString; std::vector pr_range; for(PointRange& pr : mls) @@ -475,7 +476,7 @@ std::ostream& write_multi_linestring_WKT(std::ostream& out, pr_range.push_back(ls); } - internal::Geometry_container, boost::geometry::multi_linestring_tag> gc(pr_range); + CGAL::internal::Geometry_container, boost::geometry::multi_linestring_tag> gc(pr_range); out << boost::geometry::wkt(gc) << std::endl; return out; @@ -492,7 +493,7 @@ std::ostream& write_multi_linestring_WKT(std::ostream& out, //! //! \attention Only Cartesian Kernels with double or float as `FT` are supported. //! -//! \see `CGAL::read_linestring_WKT()` +//! \see `CGAL::IO::read_linestring_WKT()` template @@ -531,40 +532,40 @@ bool read_WKT(std::istream& is, if(type == "POINT") { Point p; - CGAL::read_point_WKT(is, p); + CGAL::IO::read_point_WKT(is, p); points.push_back(p); } else if(type == "LINESTRING") { LineString l; - CGAL::read_linestring_WKT(is, l); + CGAL::IO::read_linestring_WKT(is, l); polylines.push_back(l); } else if(type == "POLYGON") { Polygon p; - CGAL::read_polygon_WKT(is, p); + CGAL::IO::read_polygon_WKT(is, p); if(!p.outer_boundary().is_empty()) polygons.push_back(p); } else if(type == "MULTIPOINT") { MultiPoint mp; - CGAL::read_multi_point_WKT(is, mp); + CGAL::IO::read_multi_point_WKT(is, mp); for(const Point& point : mp) points.push_back(point); } else if(type == "MULTILINESTRING") { MultiLineString mls; - CGAL::read_multi_linestring_WKT(is, mls); + CGAL::IO::read_multi_linestring_WKT(is, mls); for(const LineString& ls : mls) polylines.push_back(ls); } else if(type == "MULTIPOLYGON") { MultiPolygon mp; - CGAL::read_multi_polygon_WKT(is, mp); + CGAL::IO::read_multi_polygon_WKT(is, mp); for(const Polygon& poly : mp) polygons.push_back(poly); } @@ -574,6 +575,8 @@ bool read_WKT(std::istream& is, return !is.fail(); } +} // namespace IO + } // namespace CGAL #endif // BOOST VERSION CHECKS diff --git a/Stream_support/include/CGAL/IO/io.h b/Stream_support/include/CGAL/IO/io.h index 9de4c84e962..f3d25edbd5f 100644 --- a/Stream_support/include/CGAL/IO/io.h +++ b/Stream_support/include/CGAL/IO/io.h @@ -628,7 +628,7 @@ inline void read(std::istream& is, T& t) read(is, t, typename Io_traits::Io_tag()); } -inline std::ostream& operator<<( std::ostream& out, const Color& col) +inline std::ostream& operator<<( std::ostream& out, const IO::Color& col) { switch(get_mode(out)) { @@ -648,7 +648,7 @@ inline std::ostream& operator<<( std::ostream& out, const Color& col) } } -inline std::istream &operator>>(std::istream &is, Color& col) +inline std::istream &operator>>(std::istream &is, IO::Color& col) { unsigned char r = 0, g = 0, b = 0, a = 0; int ir = 0, ig = 0, ib = 0, ia = 0; @@ -674,7 +674,7 @@ inline std::istream &operator>>(std::istream &is, Color& col) break; } - col = Color(r,g,b,a); + col = IO::Color(r,g,b,a); return is; } diff --git a/Stream_support/include/CGAL/IO/polygon_soup_io.h b/Stream_support/include/CGAL/IO/polygon_soup_io.h index 718e95f317a..4934720e26a 100644 --- a/Stream_support/include/CGAL/IO/polygon_soup_io.h +++ b/Stream_support/include/CGAL/IO/polygon_soup_io.h @@ -30,6 +30,8 @@ namespace CGAL { +namespace IO { + //////////////////////////////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////////////////////////////// // Read @@ -79,7 +81,7 @@ bool read_polygon_soup(const std::string& fname, { const bool verbose = parameters::choose_parameter(parameters::get_parameter(np, internal_np::verbose), false); - const std::string ext = IO::internal::get_file_extension(fname); + const std::string ext = internal::get_file_extension(fname); if(ext == std::string()) { if(verbose) @@ -169,7 +171,7 @@ bool write_polygon_soup(const std::string& fname, { const bool verbose = parameters::choose_parameter(parameters::get_parameter(np, internal_np::verbose), false); - const std::string ext = IO::internal::get_file_extension(fname); + const std::string ext = internal::get_file_extension(fname); if(ext == std::string()) { if(verbose) @@ -215,6 +217,8 @@ bool write_polygon_soup(const std::string& fname, PointRange& points, PolygonRan /// \endcond +} // namespace IO + } // namespace CGAL #endif // CGAL_IO_READ_POLYGON_SOUP_H diff --git a/Stream_support/test/Stream_support/test_GOCAD.cpp b/Stream_support/test/Stream_support/test_GOCAD.cpp index 5d5838651fc..3ea0044bdb3 100644 --- a/Stream_support/test/Stream_support/test_GOCAD.cpp +++ b/Stream_support/test/Stream_support/test_GOCAD.cpp @@ -18,7 +18,7 @@ int main(int argc, char** argv) std::vector points; std::vector polygons; - bool ok = CGAL::read_GOCAD(gocad_file, points, polygons); + bool ok = CGAL::IO::read_GOCAD(gocad_file, points, polygons); assert(ok); std::cout << points.size() << " points and " << polygons.size() << " polygons" << std::endl; @@ -28,37 +28,37 @@ int main(int argc, char** argv) points.clear(); polygons.clear(); std::string gocad_string(gocad_file); - ok = CGAL::read_GOCAD(gocad_string, points, polygons); + ok = CGAL::IO::read_GOCAD(gocad_string, points, polygons); assert(ok); points.clear(); polygons.clear(); std::ifstream is(gocad_file); - ok = CGAL::read_GOCAD(is, points, polygons); + ok = CGAL::IO::read_GOCAD(is, points, polygons); assert(ok); is.close(); - ok = CGAL::write_GOCAD(gocad_file, points, polygons); + ok = CGAL::IO::write_GOCAD(gocad_file, points, polygons); assert(ok); std::ofstream os("tmp.ts"); - ok = CGAL::write_GOCAD(os, points, polygons); + ok = CGAL::IO::write_GOCAD(os, points, polygons); assert(ok); os.close(); - ok = CGAL::write_GOCAD("tmp.ts", points, polygons); + ok = CGAL::IO::write_GOCAD("tmp.ts", points, polygons); assert(ok); const std::size_t ptn = points.size(); const std::size_t pln = polygons.size(); - ok = CGAL::write_polygon_soup("tmp.ts", points, polygons); + ok = CGAL::IO::write_polygon_soup("tmp.ts", points, polygons); assert(ok); points.clear(); polygons.clear(); - ok = CGAL::read_polygon_soup("tmp.ts", points, polygons); + ok = CGAL::IO::read_polygon_soup("tmp.ts", points, polygons); assert(ok); assert(points.size() == ptn); diff --git a/Stream_support/test/Stream_support/test_OBJ.cpp b/Stream_support/test/Stream_support/test_OBJ.cpp index 1d37863dca5..e72960ecf43 100644 --- a/Stream_support/test/Stream_support/test_OBJ.cpp +++ b/Stream_support/test/Stream_support/test_OBJ.cpp @@ -18,7 +18,7 @@ int main(int argc, char** argv) std::vector points; std::vector polygons; - bool ok = CGAL::read_OBJ(obj_file, points, polygons, CGAL::parameters::verbose(true)); + bool ok = CGAL::IO::read_OBJ(obj_file, points, polygons, CGAL::parameters::verbose(true)); assert(ok); std::cout << points.size() << " points and " << polygons.size() << " polygons" << std::endl; @@ -28,40 +28,40 @@ int main(int argc, char** argv) points.clear(); polygons.clear(); std::string obj_string(obj_file); - ok = CGAL::read_OBJ(obj_string, points, polygons); + ok = CGAL::IO::read_OBJ(obj_string, points, polygons); assert(ok); points.clear(); polygons.clear(); std::ifstream is(obj_file); - ok = CGAL::read_OBJ(is, points, polygons); + ok = CGAL::IO::read_OBJ(is, points, polygons); assert(ok); is.close(); is.open(obj_file, std::ios::binary); - ok = CGAL::read_OBJ(is, points, polygons); + ok = CGAL::IO::read_OBJ(is, points, polygons); assert(ok); is.close(); std::ofstream os("tmp.obj"); - ok = CGAL::write_OBJ(os, points, polygons); + ok = CGAL::IO::write_OBJ(os, points, polygons); assert(ok); os.close(); - ok = CGAL::write_OBJ("tmp.obj", points, polygons); + ok = CGAL::IO::write_OBJ("tmp.obj", points, polygons); assert(ok); std::vector pts_backup = points; std::vector pls_backup = polygons; - ok = CGAL::write_polygon_soup("tmp.obj", points, polygons); + ok = CGAL::IO::write_polygon_soup("tmp.obj", points, polygons); assert(ok); points.clear(); polygons.clear(); - ok = CGAL::read_polygon_soup("tmp.obj", points, polygons); + ok = CGAL::IO::read_polygon_soup("tmp.obj", points, polygons); assert(ok); assert(points.size() == pts_backup.size()); diff --git a/Stream_support/test/Stream_support/test_OFF.cpp b/Stream_support/test/Stream_support/test_OFF.cpp index c0e21adc399..fe38b75e6dc 100644 --- a/Stream_support/test/Stream_support/test_OFF.cpp +++ b/Stream_support/test/Stream_support/test_OFF.cpp @@ -18,7 +18,7 @@ int main(int argc, char** argv) std::vector points; std::vector polygons; - bool ok = CGAL::read_OFF(off_file, points, polygons); + bool ok = CGAL::IO::read_OFF(off_file, points, polygons); assert(ok); std::cout << points.size() << " points and " << polygons.size() << " polygons" << std::endl; @@ -28,41 +28,41 @@ int main(int argc, char** argv) points.clear(); polygons.clear(); std::string off_string(off_file); - ok = CGAL::read_OFF(off_string, points, polygons); + ok = CGAL::IO::read_OFF(off_string, points, polygons); assert(ok); points.clear(); polygons.clear(); std::ifstream is(off_file); - ok = CGAL::read_OFF(is, points, polygons); + ok = CGAL::IO::read_OFF(is, points, polygons); assert(ok); is.close(); points.clear(); polygons.clear(); is.open(off_file, std::ios::binary); - ok = CGAL::read_OFF(is, points, polygons); + ok = CGAL::IO::read_OFF(is, points, polygons); assert(ok); is.close(); std::ofstream os("tmp.off", std::ios::binary); - ok = CGAL::write_OFF(os, points, polygons); + ok = CGAL::IO::write_OFF(os, points, polygons); assert(ok); os.close(); - ok = CGAL::write_OFF("tmp.off", points, polygons); + ok = CGAL::IO::write_OFF("tmp.off", points, polygons); assert(ok); std::vector pts_backup = points; std::vector pls_backup = polygons; - ok = CGAL::write_polygon_soup("tmp.off", points, polygons); + ok = CGAL::IO::write_polygon_soup("tmp.off", points, polygons); assert(ok); points.clear(); polygons.clear(); - ok = CGAL::read_polygon_soup("tmp.off", points, polygons); + ok = CGAL::IO::read_polygon_soup("tmp.off", points, polygons); assert(ok); assert(points.size() == pts_backup.size()); diff --git a/Stream_support/test/Stream_support/test_PLY.cpp b/Stream_support/test/Stream_support/test_PLY.cpp index f33d307ecb7..c5d32139a68 100644 --- a/Stream_support/test/Stream_support/test_PLY.cpp +++ b/Stream_support/test/Stream_support/test_PLY.cpp @@ -18,7 +18,7 @@ int main(int argc, char** argv) std::vector points; std::vector polygons; - bool ok = CGAL::read_PLY(ply_file, points, polygons); + bool ok = CGAL::IO::read_PLY(ply_file, points, polygons); assert(ok); std::cout << points.size() << " points and " << polygons.size() << " polygons" << std::endl; @@ -28,33 +28,33 @@ int main(int argc, char** argv) points.clear(); polygons.clear(); std::string ply_string(ply_file); - ok = CGAL::read_PLY(ply_string, points, polygons); + ok = CGAL::IO::read_PLY(ply_string, points, polygons); assert(ok); points.clear(); polygons.clear(); std::ifstream is(ply_file); - ok = CGAL::read_PLY(is, points, polygons); + ok = CGAL::IO::read_PLY(is, points, polygons); assert(ok); is.close(); points.clear(); polygons.clear(); is.open(ply_file, std::ios::binary); - ok = CGAL::read_PLY(is, points, polygons); + ok = CGAL::IO::read_PLY(is, points, polygons); assert(ok); is.close(); - ok = CGAL::write_PLY("tmp.ply", points, polygons); + ok = CGAL::IO::write_PLY("tmp.ply", points, polygons); assert(ok); - ok = CGAL::write_polygon_soup("tmp.ply", points, polygons); + ok = CGAL::IO::write_polygon_soup("tmp.ply", points, polygons); assert(ok); std::ofstream os("tmp.ply"); CGAL::set_binary_mode(os); - ok = CGAL::write_PLY(os, points, polygons); + ok = CGAL::IO::write_PLY(os, points, polygons); assert(ok); os.close(); @@ -63,7 +63,7 @@ int main(int argc, char** argv) points.clear(); polygons.clear(); - ok = CGAL::read_polygon_soup("tmp.ply", points, polygons); + ok = CGAL::IO::read_polygon_soup("tmp.ply", points, polygons); assert(ok); assert(points.size() == pts_backup.size()); diff --git a/Stream_support/test/Stream_support/test_STL.cpp b/Stream_support/test/Stream_support/test_STL.cpp index 4e201eb0882..c696b3af860 100644 --- a/Stream_support/test/Stream_support/test_STL.cpp +++ b/Stream_support/test/Stream_support/test_STL.cpp @@ -27,7 +27,7 @@ void read(const char* fname, std::size_t v, std::size_t f, std::vector points; std::vector faces; - bool ok = CGAL::read_STL(input, points, faces, CGAL::parameters::use_binary_mode(is_binary)); + bool ok = CGAL::IO::read_STL(input, points, faces, CGAL::parameters::use_binary_mode(is_binary)); assert(ok != should_fail); if(!should_fail) { @@ -75,7 +75,7 @@ int main(int argc, char** argv) std::vector points; std::vector polygons; - bool ok = CGAL::read_STL(stl_file, points, polygons, CGAL::parameters::verbose(true)); + bool ok = CGAL::IO::read_STL(stl_file, points, polygons, CGAL::parameters::verbose(true)); assert(ok); std::cout << points.size() << " points and " << polygons.size() << " polygons" << std::endl; @@ -85,31 +85,31 @@ int main(int argc, char** argv) points.clear(); polygons.clear(); std::string stl_string(stl_file); - ok = CGAL::read_STL(stl_string, points, polygons); + ok = CGAL::IO::read_STL(stl_string, points, polygons); assert(ok); points.clear(); polygons.clear(); std::ifstream is(stl_file); - ok = CGAL::read_STL(is, points, polygons); + ok = CGAL::IO::read_STL(is, points, polygons); assert(ok); points.clear(); polygons.clear(); is.clear(); is.seekg(0, is.beg); - ok = CGAL::read_STL(is, points, polygons, CGAL::parameters::use_binary_mode(false)); + ok = CGAL::IO::read_STL(is, points, polygons, CGAL::parameters::use_binary_mode(false)); assert(ok); is.close(); - ok = CGAL::write_STL("tmp.stl", points, polygons); + ok = CGAL::IO::write_STL("tmp.stl", points, polygons); assert(ok); - ok = CGAL::write_polygon_soup("tmp.stl", points, polygons); + ok = CGAL::IO::write_polygon_soup("tmp.stl", points, polygons); assert(ok); std::ofstream os("tmp.stl"); CGAL::set_binary_mode(os); - ok = CGAL::write_STL(os, points, polygons); + ok = CGAL::IO::write_STL(os, points, polygons); assert(ok); os.close(); @@ -119,7 +119,7 @@ int main(int argc, char** argv) points.clear(); polygons.clear(); - ok = CGAL::read_polygon_soup("tmp.stl", points, polygons); + ok = CGAL::IO::read_polygon_soup("tmp.stl", points, polygons); assert(ok); assert(points.size() == pts_backup.size()); diff --git a/Stream_support/test/Stream_support/test_WKT.cpp b/Stream_support/test/Stream_support/test_WKT.cpp index 426469bff3b..31171b7e822 100644 --- a/Stream_support/test/Stream_support/test_WKT.cpp +++ b/Stream_support/test/Stream_support/test_WKT.cpp @@ -29,42 +29,42 @@ bool test_read_WKT() Point p; { std::ifstream in("data/point.wkt"); - if(!CGAL::read_point_WKT(in, p)) + if(!CGAL::IO::read_point_WKT(in, p)) return false; CGAL_assertion(p == Point(2,3)); } { std::ifstream in("data/linestring.wkt"); Linestring ls; - if(!CGAL::read_linestring_WKT(in, ls)) + if(!CGAL::IO::read_linestring_WKT(in, ls)) return false; CGAL_assertion(ls.size() == 3); } { Poly poly; std::ifstream in("data/polygon.wkt"); - if(!CGAL::read_polygon_WKT(in, poly)) + if(!CGAL::IO::read_polygon_WKT(in, poly)) return false; CGAL_assertion(poly.outer_boundary().size() == 3); } { MultiPoint pees; std::ifstream in("data/multipoint.wkt"); - if(!CGAL::read_multi_point_WKT(in, pees)) + if(!CGAL::IO::read_multi_point_WKT(in, pees)) return false; CGAL_assertion(pees.size() == 4); } { std::ifstream in("data/multilinestring.wkt"); MultiLinestring mls; - if(!CGAL::read_multi_linestring_WKT(in, mls)) + if(!CGAL::IO::read_multi_linestring_WKT(in, mls)) return false; CGAL_assertion(mls.size() == 2); } { MultiPolygon polies; std::ifstream in("data/multipolygon.wkt"); - if(!CGAL::read_multi_polygon_WKT(in, polies)) + if(!CGAL::IO::read_multi_polygon_WKT(in, polies)) return false; CGAL_assertion(polies.size() == 2); } @@ -176,13 +176,13 @@ bool test_write_WKT() { std::ofstream os("test.wkt"); os.precision(17); - CGAL::write_point_WKT(os, p); + CGAL::IO::write_point_WKT(os, p); os.close(); } Point test_p; { std::ifstream is("test.wkt"); - CGAL::read_point_WKT(is, test_p); + CGAL::IO::read_point_WKT(is, test_p); is.close(); } CGAL_assertion(p == test_p); @@ -191,13 +191,13 @@ bool test_write_WKT() { std::ofstream os("test.wkt"); os.precision(17); - CGAL::write_linestring_WKT(os, ls); + CGAL::IO::write_linestring_WKT(os, ls); os.close(); } Linestring test_ls; { std::ifstream is("test.wkt"); - CGAL::read_linestring_WKT(is, test_ls); + CGAL::IO::read_linestring_WKT(is, test_ls); is.close(); } CGAL_assertion(ls == test_ls); @@ -206,13 +206,13 @@ bool test_write_WKT() { std::ofstream os("test.wkt"); os.precision(17); - CGAL::write_polygon_WKT(os, poly); + CGAL::IO::write_polygon_WKT(os, poly); os.close(); } Poly test_poly; { std::ifstream is("test.wkt"); - CGAL::read_polygon_WKT(is, test_poly); + CGAL::IO::read_polygon_WKT(is, test_poly); is.close(); } @@ -222,13 +222,13 @@ bool test_write_WKT() { std::ofstream os("test.wkt"); os.precision(17); - CGAL::write_multi_point_WKT(os, pees); + CGAL::IO::write_multi_point_WKT(os, pees); os.close(); } MultiPoint test_pees; { std::ifstream is("test.wkt"); - CGAL::read_multi_point_WKT(is, test_pees); + CGAL::IO::read_multi_point_WKT(is, test_pees); is.close(); } CGAL_assertion(pees== test_pees); @@ -237,13 +237,13 @@ bool test_write_WKT() { std::ofstream os("test.wkt"); os.precision(17); - CGAL::write_multi_linestring_WKT(os, mls); + CGAL::IO::write_multi_linestring_WKT(os, mls); os.close(); } MultiLinestring test_mls; { std::ifstream is("test.wkt"); - CGAL::read_multi_linestring_WKT(is, test_mls); + CGAL::IO::read_multi_linestring_WKT(is, test_mls); is.close(); } bool ok = true; @@ -255,13 +255,13 @@ bool test_write_WKT() { std::ofstream os("test.wkt"); os.precision(17); - CGAL::write_multi_polygon_WKT(os, polies); + CGAL::IO::write_multi_polygon_WKT(os, polies); os.close(); } MultiPolygon test_polies; { std::ifstream is("test.wkt"); - CGAL::read_multi_polygon_WKT(is, test_polies); + CGAL::IO::read_multi_polygon_WKT(is, test_polies); is.close(); } CGAL_assertion(polies == test_polies); diff --git a/Surface_mesh/benchmark/lcc_performance_2.h b/Surface_mesh/benchmark/lcc_performance_2.h index 849467b27d5..a230cac75db 100644 --- a/Surface_mesh/benchmark/lcc_performance_2.h +++ b/Surface_mesh/benchmark/lcc_performance_2.h @@ -95,7 +95,7 @@ private: virtual bool write_mesh(const char* _filename) { std::ofstream ofs(_filename); - CGAL::write_off(lcc, ofs); + CGAL::IO::write_OFF(lcc, ofs); return true; } diff --git a/Surface_mesh/benchmark/surface_mesh_performance.h b/Surface_mesh/benchmark/surface_mesh_performance.h index e114d73c45e..9ab57e28c9a 100644 --- a/Surface_mesh/benchmark/surface_mesh_performance.h +++ b/Surface_mesh/benchmark/surface_mesh_performance.h @@ -53,7 +53,7 @@ private: virtual bool read_mesh(const char* _filename) { CGAL::Memory_sizer ms; - bool b = CGAL::read_OFF(mesh, _filename); + bool b = CGAL::IO::read_OFF(mesh, _filename); std::cout << "memory consumption: " << ms.virtual_size() << " " << ms.resident_size() << std::endl; return b; } @@ -61,7 +61,7 @@ private: virtual bool write_mesh(const char* _filename) { - return CGAL::write_OFF(mesh, _filename); + return CGAL::IO::write_OFF(mesh, _filename); } @@ -283,7 +283,7 @@ private: namespace SMS = CGAL::Surface_mesh_simplification ; mesh.clear(); - bool b = CGAL::read_OFF(_filename, mesh); + bool b = CGAL::IO::read_OFF(_filename, mesh); SMS::Count_ratio_stop_predicate stop(0.1); int r = SMS::edge_collapse(mesh, stop); } diff --git a/Surface_mesh/examples/Surface_mesh/draw_surface_mesh.cpp b/Surface_mesh/examples/Surface_mesh/draw_surface_mesh.cpp index 60e390b95c8..143501a70f6 100644 --- a/Surface_mesh/examples/Surface_mesh/draw_surface_mesh.cpp +++ b/Surface_mesh/examples/Surface_mesh/draw_surface_mesh.cpp @@ -14,7 +14,7 @@ int main(int argc, char* argv[]) const char* filename = (argc>1) ? argv[1] : "data/elephant.off"; Mesh sm; - if(!CGAL::read_polygon_mesh(filename, sm)) + if(!CGAL::IO::read_polygon_mesh(filename, sm)) { std::cerr << "Invalid input file." << std::endl; return EXIT_FAILURE; diff --git a/Surface_mesh/examples/Surface_mesh/draw_surface_mesh_small_faces.h b/Surface_mesh/examples/Surface_mesh/draw_surface_mesh_small_faces.h index a574c2d738d..39a89eac77c 100644 --- a/Surface_mesh/examples/Surface_mesh/draw_surface_mesh_small_faces.h +++ b/Surface_mesh/examples/Surface_mesh/draw_surface_mesh_small_faces.h @@ -78,7 +78,7 @@ protected: bool issmall=false; // Default color of faces - CGAL::Color c(75,160,255); + CGAL::IO::Color c(75,160,255); // Compare the size of the face with the % m_threshold bool exist; @@ -89,7 +89,7 @@ protected: // It it is smaller, color the face in red. if (get(faces_size, fh)::vertex_descriptor vertex_descriptor; int main(int /* argc */, char* argv[]) { Mesh sm; - if(!CGAL::read_polygon_mesh(argv[1], sm)) + if(!CGAL::IO::read_polygon_mesh(argv[1], sm)) { std::cerr << "Invalid input file." << std::endl; return EXIT_FAILURE; diff --git a/Surface_mesh/examples/Surface_mesh/sm_do_intersect.cpp b/Surface_mesh/examples/Surface_mesh/sm_do_intersect.cpp index c6583404588..974394a27dc 100644 --- a/Surface_mesh/examples/Surface_mesh/sm_do_intersect.cpp +++ b/Surface_mesh/examples/Surface_mesh/sm_do_intersect.cpp @@ -113,7 +113,7 @@ int main(int argc, char* argv[]) std::cout.precision(17); Mesh P, Q; - if(!CGAL::read_polygon_mesh(argv[1], P) || !CGAL::read_polygon_mesh(argv[2], Q)) + if(!CGAL::IO::read_polygon_mesh(argv[1], P) || !CGAL::IO::read_polygon_mesh(argv[2], Q)) { std::cerr << "Invalid input files." << std::endl; return EXIT_FAILURE; diff --git a/Surface_mesh/examples/Surface_mesh/sm_draw_small_faces.cpp b/Surface_mesh/examples/Surface_mesh/sm_draw_small_faces.cpp index a243b14e4f3..694e0cd995d 100644 --- a/Surface_mesh/examples/Surface_mesh/sm_draw_small_faces.cpp +++ b/Surface_mesh/examples/Surface_mesh/sm_draw_small_faces.cpp @@ -17,7 +17,7 @@ int main(int argc, char* argv[]) const char* filename = (argc>1) ? argv[1] : "data/elephant.off"; Mesh sm; - if(!CGAL::read_polygon_mesh(filename, sm)) + if(!CGAL::IO::read_polygon_mesh(filename, sm)) { std::cerr << "Invalid input file." << std::endl; return EXIT_FAILURE; diff --git a/Surface_mesh/examples/Surface_mesh/sm_join.cpp b/Surface_mesh/examples/Surface_mesh/sm_join.cpp index 187c816e142..12770121943 100644 --- a/Surface_mesh/examples/Surface_mesh/sm_join.cpp +++ b/Surface_mesh/examples/Surface_mesh/sm_join.cpp @@ -16,7 +16,7 @@ int main(int argc, char* argv[]) const char* filename2 = (argc>2) ? argv[2] : "data/quad.off"; Mesh sm1, sm2; - if(!CGAL::read_polygon_mesh(filename1, sm1) || !CGAL::read_polygon_mesh(filename2, sm2)) + if(!CGAL::IO::read_polygon_mesh(filename1, sm1) || !CGAL::IO::read_polygon_mesh(filename2, sm2)) { std::cerr << "Invalid input files." << std::endl; return EXIT_FAILURE; @@ -33,5 +33,5 @@ int main(int argc, char* argv[]) for(vertex_descriptor vd : vertices(sm1)) std::cerr << vd << " " << name1[vd] < CGAL_DEPRECATED bool read_mesh(Surface_mesh& sm, const std::string& filename) { - return read_polygon_mesh(filename, sm); + return IO::read_polygon_mesh(filename, sm); } /*! \ingroup PkgSurfaceMeshIOFuncDeprecated - \deprecated This function is deprecated since \cgal 5.2, `CGAL::write_polygon_mesh()` should be used instead. + \deprecated This function is deprecated since \cgal 5.2, `CGAL::IO::write_polygon_mesh()` should be used instead. */ template CGAL_DEPRECATED bool write_mesh(const Surface_mesh& mesh, const std::string& filename) { - return write_polygon_mesh(filename, mesh); + return IO::write_polygon_mesh(filename, mesh); } #endif // CGAL_NO_DEPRECATED_CODE diff --git a/Surface_mesh/include/CGAL/Surface_mesh/IO/3MF.h b/Surface_mesh/include/CGAL/Surface_mesh/IO/3MF.h index 2f0b1d83f0c..9a57902092c 100644 --- a/Surface_mesh/include/CGAL/Surface_mesh/IO/3MF.h +++ b/Surface_mesh/include/CGAL/Surface_mesh/IO/3MF.h @@ -30,6 +30,8 @@ namespace CGAL { +namespace IO { + // @todo generalize it to any model of `FaceGraph` and put it in BGL/IO (see read_OFF for the face color map) /*! @@ -60,9 +62,9 @@ bool read_3MF(const std::string& filename, std::vector all_points; std::vector all_triangles; std::vector names; - std::vector > all_colors; + std::vector > all_colors; - const bool success = CGAL::read_3MF(filename, all_points, all_triangles, all_colors, names); + const bool success = CGAL::IO::read_3MF(filename, all_points, all_triangles, all_colors, names); if(!success) { std::cerr << "Error in reading meshes." << std::endl; @@ -79,7 +81,7 @@ bool read_3MF(const std::string& filename, SMesh sm; TriangleRange triangles = all_triangles[i]; PointRange points = all_points[i]; - std::vector colors = all_colors[i]; + std::vector colors = all_colors[i]; // Create the surface mesh from scratch std::size_t n(points.size()); @@ -119,8 +121,8 @@ bool read_3MF(const std::string& filename, if(need_pmap) { - typename SMesh::template Property_map fcolor = - sm.template add_property_map("f:color", first).first; + typename SMesh::template Property_map fcolor = + sm.template add_property_map("f:color", first).first; for(std::size_t pid=0, cs=colors.size(); pid CGAL_DEPRECATED int read_3mf(const std::string& filename, std::vector >& output) { - return read_3MF(filename, output); + return IO::read_3MF(filename, output); } #endif // CGAL_NO_DEPRECATED_CODE diff --git a/Surface_mesh/include/CGAL/Surface_mesh/IO/OFF.h b/Surface_mesh/include/CGAL/Surface_mesh/IO/OFF.h index d8200a7592e..9629fcf53e0 100644 --- a/Surface_mesh/include/CGAL/Surface_mesh/IO/OFF.h +++ b/Surface_mesh/include/CGAL/Surface_mesh/IO/OFF.h @@ -36,9 +36,8 @@ namespace CGAL { //////////////////////////////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////////////////////////////// // Read - -namespace internal { namespace IO { +namespace internal { template > @@ -60,7 +59,7 @@ template DefaultMap; + CGAL::IO::Color> DefaultMap; typedef DefaultMap DefaultMap_const; public: typedef typename internal_np::Lookup_named_param_def DefaultMap; + CGAL::IO::Color> DefaultMap; typedef DefaultMap DefaultMap_const; public: @@ -107,9 +106,9 @@ bool read_OFF_with_or_without_fcolors(std::istream& is, { typedef Surface_mesh Mesh; typedef typename Mesh::Face_index Face_index; - typedef CGAL::Color Color; + typedef CGAL::IO::Color Color; - typedef typename CGAL::internal::IO::GetFaceColorMap::type FCM; + typedef typename GetFaceColorMap::type FCM; using parameters::choose_parameter; using parameters::is_default_parameter; @@ -148,7 +147,7 @@ bool read_OFF_with_or_without_vtextures(std::istream& is, typedef typename GetK, CGAL_BGL_NP_CLASS>::Kernel K; typedef typename K::Point_2 Texture; - typedef typename CGAL::internal::IO::GetVertexTextureMap::type VTM; + typedef typename GetVertexTextureMap::type VTM; using parameters::choose_parameter; using parameters::is_default_parameter; @@ -185,8 +184,8 @@ bool read_OFF_with_or_without_vcolors(std::istream& is, typedef Surface_mesh Mesh; typedef typename Mesh::Vertex_index Vertex_index; - typedef CGAL::Color Color; - typedef typename CGAL::internal::IO::GetVertexColorMap::type VCM; + typedef CGAL::IO::Color Color; + typedef typename GetVertexColorMap::type VCM; using parameters::choose_parameter; using parameters::is_default_parameter; @@ -225,7 +224,7 @@ bool read_OFF_with_or_without_vnormals(std::istream& is, typedef typename GetK, CGAL_BGL_NP_CLASS>::Kernel K; typedef typename K::Vector_3 Normal; - typedef typename CGAL::internal::IO::GetVertexNormalMap::type VNM; + typedef typename GetVertexNormalMap::type VNM; using parameters::choose_parameter; using parameters::is_default_parameter; @@ -253,7 +252,6 @@ bool read_OFF_with_or_without_vnormals(std::istream& is, } } -} // namespace IO } // namespace internal /// \ingroup PkgSurfaceMeshIOFuncOFF @@ -301,7 +299,7 @@ bool read_OFF_with_or_without_vnormals(std::istream& is, /// \cgalParamNBegin{vertex_color_map} /// \cgalParamDescription{a property map associating colors to the vertices of `sm`} /// \cgalParamType{a class model of `WritablePropertyMap` with `Surface_mesh::Vertex_index` -/// as key type and `CGAL::Color` as value type} +/// as key type and `CGAL::IO::Color` as value type} /// \cgalParamDefault{If this parameter is unsused, vertex colors (if they exist) /// will be written in an internal property map called `v:color`.} /// \cgalParamNEnd @@ -317,7 +315,7 @@ bool read_OFF_with_or_without_vnormals(std::istream& is, /// \cgalParamNBegin{face_color_map} /// \cgalParamDescription{a property map associating colors to the faces of `sm`} /// \cgalParamType{a class model of `WritablePropertyMap` with `Surface_mesh::Face_index` -/// as key type and `CGAL::Color` as value type} +/// as key type and `CGAL::IO::Color` as value type} /// \cgalParamDefault{If this parameter is unsused, face colors (if they exist) /// will be written in an internal property map called `f:color`.} /// \cgalParamNEnd @@ -340,43 +338,45 @@ bool read_OFF(std::istream& is, CGAL::File_scanner_OFF scanner(is, false); is.seekg(pos); - bool res = internal::IO::read_OFF_with_or_without_vnormals(is, sm, scanner, np); + bool res = internal::read_OFF_with_or_without_vnormals(is, sm, scanner, np); if(!res) sm.clear(); return res; } +} // namespace IO + #ifndef CGAL_NO_DEPRECATED_CODE /*! \ingroup PkgSurfaceMeshIOFuncDeprecated - \deprecated This function is deprecated since \cgal 5.2, `CGAL::read_OFF(std::istream&, const Surface_mesh&)` should be used instead. + \deprecated This function is deprecated since \cgal 5.2, `CGAL::IO::read_OFF(std::istream&, const Surface_mesh&)` should be used instead. */ template CGAL_DEPRECATED bool read_off(std::istream& is, Surface_mesh& sm, const CGAL_BGL_NP_CLASS& np) { - return read_OFF(is, sm, np); + return IO::read_OFF(is, sm, np); } /*! \ingroup PkgSurfaceMeshIOFuncDeprecated - \deprecated This function is deprecated since \cgal 5.2, `CGAL::read_OFF(std::istream&, const Surface_mesh&)` should be used instead. + \deprecated This function is deprecated since \cgal 5.2, `CGAL::IO::read_OFF(std::istream&, const Surface_mesh&)` should be used instead. */ template CGAL_DEPRECATED bool read_off(std::istream& is, Surface_mesh& sm) { - return read_OFF(is, sm, parameters::all_default()); + return IO::read_OFF(is, sm, parameters::all_default()); } /*! \ingroup PkgSurfaceMeshIOFuncDeprecated - \deprecated This function is deprecated since \cgal 5.2, `CGAL::read_OFF(std::istream&, const Surface_mesh&)` should be used instead. + \deprecated This function is deprecated since \cgal 5.2, `CGAL::IO::read_OFF(std::istream&, const Surface_mesh&)` should be used instead. */ template CGAL_DEPRECATED bool read_off(Surface_mesh& sm, const std::string& filename) { - return read_OFF(filename, sm, parameters::all_default()); + return IO::read_OFF(filename, sm, parameters::all_default()); } #endif // CGAL_NO_DEPRECATED_CODE @@ -395,7 +395,7 @@ bool write_OFF_with_or_without_fcolors(std::ostream& os, { typedef Surface_mesh Mesh; typedef typename Mesh::Face_index Face_index; - typedef CGAL::Color Color; + typedef CGAL::IO::Color Color; using parameters::choose_parameter; using parameters::is_default_parameter; @@ -405,7 +405,7 @@ bool write_OFF_with_or_without_fcolors(std::ostream& os, typename Mesh::template Property_map fcolors; bool has_internal_fcolors; - std::tie(fcolors, has_internal_fcolors) = sm.template property_map("f:color"); + std::tie(fcolors, has_internal_fcolors) = sm.template property_map("f:color"); if(!has_fcolors && has_internal_fcolors && std::distance(fcolors.begin(), fcolors.end()) > 0) return write_OFF_BGL(os, sm, np.face_color_map(fcolors)); @@ -447,7 +447,7 @@ bool write_OFF_with_or_without_vcolors(std::ostream& os, { typedef Surface_mesh Mesh; typedef typename Mesh::Vertex_index Vertex_index; - typedef CGAL::Color Color; + typedef CGAL::IO::Color Color; using parameters::choose_parameter; using parameters::is_default_parameter; @@ -457,7 +457,7 @@ bool write_OFF_with_or_without_vcolors(std::ostream& os, typename Mesh::template Property_map vcolors; bool has_internal_vcolors; - std::tie(vcolors, has_internal_vcolors) = sm.template property_map("v:color"); + std::tie(vcolors, has_internal_vcolors) = sm.template property_map("v:color"); if(!has_vcolors && has_internal_vcolors && std::distance(vcolors.begin(), vcolors.end()) > 0) return write_OFF_with_or_without_vtextures(os, sm, np.vertex_color_map(vcolors)); @@ -493,7 +493,6 @@ bool write_OFF_with_or_without_vnormals(std::ostream& os, } } // namespace internal -} // namespace IO /// \ingroup PkgSurfaceMeshIOFuncOFF /// @@ -535,7 +534,7 @@ bool write_OFF_with_or_without_vnormals(std::ostream& os, /// \cgalParamNBegin{vertex_color_map} /// \cgalParamDescription{a property map associating colors to the vertices of `sm`} /// \cgalParamType{a class model of `ReadablePropertyMap` with `Surface_mesh::Vertex_index` -/// as key type and `CGAL::Color` as value type} +/// as key type and `CGAL::IO::Color` as value type} /// \cgalParamDefault{vertex colors will be output using the internal property map, if it exists.} /// \cgalParamNEnd /// @@ -549,7 +548,7 @@ bool write_OFF_with_or_without_vnormals(std::ostream& os, /// \cgalParamNBegin{face_color_map} /// \cgalParamDescription{a property map associating colors to the faces of `sm`} /// \cgalParamType{a class model of `ReadablePropertyMap` with `Surface_mesh::Face_index` -/// as key type and `CGAL::Color` as value type} +/// as key type and `CGAL::IO::Color` as value type} /// \cgalParamDefault{face colors will be output using the internal property map, if it exists.} /// \cgalParamNEnd /// @@ -573,41 +572,43 @@ bool write_OFF(std::ostream& os, const bool has_vpoints = !(is_default_parameter(get_parameter(np, internal_np::vertex_point))); if(has_vpoints) - return IO::internal::write_OFF_with_or_without_vnormals(os, sm, np); + return internal::write_OFF_with_or_without_vnormals(os, sm, np); - return IO::internal::write_OFF_with_or_without_vnormals(os, sm, np.vertex_point_map(get_const_property_map(CGAL::vertex_point, sm))); + return internal::write_OFF_with_or_without_vnormals(os, sm, np.vertex_point_map(get_const_property_map(CGAL::vertex_point, sm))); } +} // namespace IO + #ifndef CGAL_NO_DEPRECATED_CODE /*! \ingroup PkgSurfaceMeshIOFuncDeprecated - \deprecated This function is deprecated since \cgal 5.2, `CGAL::write_OFF(std::ostream&, const Surface_mesh&)` should be used instead. + \deprecated This function is deprecated since \cgal 5.2, `CGAL::IO::write_OFF(std::ostream&, const Surface_mesh&)` should be used instead. */ template CGAL_DEPRECATED bool write_off(std::ostream& os, const Surface_mesh& sm, const CGAL_BGL_NP_CLASS& np) { - return write_OFF(os, sm, np); + return IO::write_OFF(os, sm, np); } /*! \ingroup PkgSurfaceMeshIOFuncDeprecated - \deprecated This function is deprecated since \cgal 5.2, `CGAL::write_OFF(std::ostream&, const Surface_mesh&)` should be used instead. + \deprecated This function is deprecated since \cgal 5.2, `CGAL::IO::write_OFF(std::ostream&, const Surface_mesh&)` should be used instead. */ template CGAL_DEPRECATED bool write_off(std::ostream& os, const Surface_mesh& sm) { - return write_OFF(os, sm, parameters::all_default()); + return IO::write_OFF(os, sm, parameters::all_default()); } /*! \ingroup PkgSurfaceMeshIOFuncDeprecated - \deprecated This function is deprecated since \cgal 5.2, `CGAL::write_OFF(std::ostream&, const Surface_mesh&)` should be used instead. + \deprecated This function is deprecated since \cgal 5.2, `CGAL::IO::write_OFF(std::ostream&, const Surface_mesh&)` should be used instead. */ template CGAL_DEPRECATED bool write_off(const Surface_mesh& sm, const std::string& filename) { - return write_OFF(filename, sm, parameters::all_default()); + return IO::write_OFF(filename, sm, parameters::all_default()); } #endif // CGAL_NO_DEPRECATED_CODE diff --git a/Surface_mesh/include/CGAL/Surface_mesh/IO/PLY.h b/Surface_mesh/include/CGAL/Surface_mesh/IO/PLY.h index f19a3b9d9b2..9d4a9dda8bf 100644 --- a/Surface_mesh/include/CGAL/Surface_mesh/IO/PLY.h +++ b/Surface_mesh/include/CGAL/Surface_mesh/IO/PLY.h @@ -89,9 +89,9 @@ private: int m_normals; typename Surface_mesh::template Property_map m_normal_map; int m_vcolors; - typename Surface_mesh::template Property_map m_vcolor_map; + typename Surface_mesh::template Property_map m_vcolor_map; int m_fcolors; - typename Surface_mesh::template Property_map m_fcolor_map; + typename Surface_mesh::template Property_map m_fcolor_map; bool m_use_int32_t; std::string m_index_tag; std::vector m_vertex_properties; @@ -116,7 +116,7 @@ public: delete m_halfedge_properties[i]; } - bool has_simplex_specific_property(IO::internal::PLY_read_number* property, Vertex_index) + bool has_simplex_specific_property(internal::PLY_read_number* property, Vertex_index) { const std::string& name = property->name(); if(name == "x" || @@ -142,13 +142,13 @@ public: { ++ m_vcolors; if(m_vcolors == 3) - m_vcolor_map = m_mesh.template add_property_map("v:color").first; + m_vcolor_map = m_mesh.template add_property_map("v:color").first; return true; } return false; } - bool has_simplex_specific_property(IO::internal::PLY_read_number* property, Face_index) + bool has_simplex_specific_property(internal::PLY_read_number* property, Face_index) { const std::string& name = property->name(); if(name == "vertex_indices" || name == "vertex_index") @@ -165,14 +165,14 @@ public: { ++ m_fcolors; if(m_fcolors == 3) - m_fcolor_map = m_mesh.template add_property_map("f:color").first; + m_fcolor_map = m_mesh.template add_property_map("f:color").first; return true; } return false; } - bool has_simplex_specific_property(IO::internal::PLY_read_number* property, Edge_index) + bool has_simplex_specific_property(internal::PLY_read_number* property, Edge_index) { const std::string& name = property->name(); if(name == "v0" || name == "v1") @@ -180,7 +180,7 @@ public: return false; } - bool has_simplex_specific_property(IO::internal::PLY_read_number* property, Halfedge_index) + bool has_simplex_specific_property(internal::PLY_read_number* property, Halfedge_index) { const std::string& name = property->name(); if(name == "source" || name == "target") @@ -215,7 +215,7 @@ public: { for(std::size_t j = 0; j < element.number_of_properties(); ++ j) { - IO::internal::PLY_read_number* property = element.property(j); + internal::PLY_read_number* property = element.property(j); if(has_simplex_specific_property(property, Simplex())) continue; @@ -297,7 +297,7 @@ public: element.assign(r, "red"); element.assign(g, "green"); element.assign(b, "blue"); - m_vcolor_map[vi] = CGAL::Color(r, g, b); + m_vcolor_map[vi] = CGAL::IO::Color(r, g, b); } } @@ -339,7 +339,7 @@ public: element.assign(r, "red"); element.assign(g, "green"); element.assign(b, "blue"); - m_fcolor_map[fi] = CGAL::Color(r, g, b); + m_fcolor_map[fi] = CGAL::IO::Color(r, g, b); } } @@ -612,7 +612,7 @@ void fill_header(std::ostream& os, const Surface_mesh& sm, if(okay) { os << "property char " << name << std::endl; - printers.push_back(new IO::internal::Char_property_printer(pmap)); + printers.push_back(new internal::Char_property_printer(pmap)); continue; } } @@ -622,7 +622,7 @@ void fill_header(std::ostream& os, const Surface_mesh& sm, if(okay) { os << "property uchar " << name << std::endl; - printers.push_back(new IO::internal::Char_property_printer(pmap)); + printers.push_back(new internal::Char_property_printer(pmap)); continue; } } @@ -632,7 +632,7 @@ void fill_header(std::ostream& os, const Surface_mesh& sm, if(okay) { os << "property short " << name << std::endl; - printers.push_back(new IO::internal::Simple_property_printer(pmap)); + printers.push_back(new internal::Simple_property_printer(pmap)); continue; } } @@ -642,7 +642,7 @@ void fill_header(std::ostream& os, const Surface_mesh& sm, if(okay) { os << "property ushort " << name << std::endl; - printers.push_back(new IO::internal::Simple_property_printer(pmap)); + printers.push_back(new internal::Simple_property_printer(pmap)); continue; } } @@ -652,7 +652,7 @@ void fill_header(std::ostream& os, const Surface_mesh& sm, if(okay) { os << "property int " << name << std::endl; - printers.push_back(new IO::internal::Simple_property_printer(pmap)); + printers.push_back(new internal::Simple_property_printer(pmap)); continue; } } @@ -662,7 +662,7 @@ void fill_header(std::ostream& os, const Surface_mesh& sm, if(okay) { os << "property uint " << name << std::endl; - printers.push_back(new IO::internal::Simple_property_printer(pmap)); + printers.push_back(new internal::Simple_property_printer(pmap)); continue; } } @@ -672,7 +672,7 @@ void fill_header(std::ostream& os, const Surface_mesh& sm, if(okay) { os << "property int " << name << std::endl; - printers.push_back(new IO::internal::Simple_property_printer(pmap)); + printers.push_back(new internal::Simple_property_printer(pmap)); continue; } } @@ -682,7 +682,7 @@ void fill_header(std::ostream& os, const Surface_mesh& sm, if(okay) { os << "property uint " << name << std::endl; - printers.push_back(new IO::internal::Simple_property_printer(pmap)); + printers.push_back(new internal::Simple_property_printer(pmap)); continue; } } @@ -692,7 +692,7 @@ void fill_header(std::ostream& os, const Surface_mesh& sm, if(okay) { os << "property float " << name << std::endl; - printers.push_back(new IO::internal::Simple_property_printer(pmap)); + printers.push_back(new internal::Simple_property_printer(pmap)); continue; } } @@ -702,7 +702,7 @@ void fill_header(std::ostream& os, const Surface_mesh& sm, if(okay) { os << "property double " << name << std::endl; - printers.push_back(new IO::internal::Simple_property_printer(pmap)); + printers.push_back(new internal::Simple_property_printer(pmap)); continue; } } @@ -710,7 +710,6 @@ void fill_header(std::ostream& os, const Surface_mesh& sm, } } // namespace internal -} // namespace IO /// \ingroup PkgSurfaceMeshIOFuncPLY /// @@ -765,8 +764,8 @@ bool read_PLY(std::istream& is, return false; } - IO::internal::PLY_reader reader(verbose); - IO::internal::Surface_mesh_filler

filler(sm); + internal::PLY_reader reader(verbose); + internal::Surface_mesh_filler

filler(sm); if(!(reader.init(is))) { @@ -778,7 +777,7 @@ bool read_PLY(std::istream& is, for(std::size_t i = 0; i < reader.number_of_elements(); ++ i) { - IO::internal::PLY_element& element = reader.element(i); + internal::PLY_element& element = reader.element(i); bool is_vertex =(element.name() == "vertex" || element.name() == "vertices"); bool is_face = false; @@ -816,7 +815,7 @@ bool read_PLY(std::istream& is, { for(std::size_t k = 0; k < element.number_of_properties(); ++ k) { - IO::internal::PLY_read_number* property = element.property(k); + internal::PLY_read_number* property = element.property(k); property->get(is); if(is.fail()) return false; @@ -853,16 +852,18 @@ bool read_PLY(std::istream& is, Surface_mesh

& sm) /// \endcond +} // namespace IO + #ifndef CGAL_NO_DEPRECATED_CODE /*! \ingroup PkgSurfaceMeshIOFuncDeprecated - \deprecated This function is deprecated since \cgal 5.2, `CGAL::read_PLY(std::ostream&, const Surface_mesh&)` should be used instead. + \deprecated This function is deprecated since \cgal 5.2, `CGAL::IO::read_PLY(std::ostream&, const Surface_mesh&)` should be used instead. */ template CGAL_DEPRECATED bool read_ply(std::istream& is, Surface_mesh

& sm, std::string& comments) { - return read_PLY(is, sm, comments); + return IO::read_PLY(is, sm, comments); } #endif // CGAL_NO_DEPRECATED_CODE @@ -871,6 +872,8 @@ CGAL_DEPRECATED bool read_ply(std::istream& is, Surface_mesh

& sm, std::string //////////////////////////////////////////////////////////////////////////////////////////////////// // Write +namespace IO { + /// \ingroup PkgSurfaceMeshIOFuncPLY /// /// \brief inserts the surface mesh in an output stream in the \ref IOStreamPLY. @@ -924,7 +927,7 @@ bool write_PLY(std::ostream& os, set_stream_precision_from_NP(os, np); os << "ply" << std::endl - << ((get_mode(os) == IO::BINARY) ? "format binary_little_endian 1.0" : "format ascii 1.0") << std::endl + << ((get_mode(os) == BINARY) ? "format binary_little_endian 1.0" : "format ascii 1.0") << std::endl << "comment Generated by the CGAL library" << std::endl; if(comments != std::string()) @@ -940,20 +943,20 @@ bool write_PLY(std::ostream& os, os << "element vertex " << sm.number_of_vertices() << std::endl; - std::vector*> vprinters; - IO::internal::fill_header(os, sm, vprinters); + std::vector*> vprinters; + internal::fill_header(os, sm, vprinters); os << "element face " << sm.number_of_faces() << std::endl; os << "property list uchar int vertex_indices" << std::endl; - std::vector*> fprinters; - IO::internal::fill_header(os, sm, fprinters); + std::vector*> fprinters; + internal::fill_header(os, sm, fprinters); - std::vector*> eprinters; + std::vector*> eprinters; if(sm.template properties().size() > 1) { std::ostringstream oss; - IO::internal::fill_header(oss, sm, eprinters); + internal::fill_header(oss, sm, eprinters); if(!eprinters.empty()) { @@ -964,11 +967,11 @@ bool write_PLY(std::ostream& os, } } - std::vector*> hprinters; + std::vector*> hprinters; if(sm.template properties().size() > 1) { std::ostringstream oss; - IO::internal::fill_header(oss, sm, hprinters); + internal::fill_header(oss, sm, hprinters); if(!hprinters.empty()) { @@ -989,10 +992,10 @@ bool write_PLY(std::ostream& os, for(std::size_t i = 0; i < vprinters.size(); ++ i) { vprinters[i]->print(os, vi); - if(get_mode(os) == IO::ASCII) + if(get_mode(os) == ASCII) os << " "; } - if(get_mode(os) == IO::ASCII) + if(get_mode(os) == ASCII) os << std::endl; reindex[std::size_t(vi)] = n++; @@ -1007,7 +1010,7 @@ bool write_PLY(std::ostream& os, for(VIndex vi : CGAL::vertices_around_face(sm.halfedge(fi), sm)) polygon.push_back(reindex[std::size_t(vi)]); - if(get_mode(os) == IO::ASCII) + if(get_mode(os) == ASCII) { os << polygon.size() << " "; for(std::size_t i = 0; i < polygon.size(); ++ i) @@ -1027,11 +1030,11 @@ bool write_PLY(std::ostream& os, for(std::size_t i = 0; i < fprinters.size(); ++ i) { fprinters[i]->print(os, fi); - if(get_mode(os) == IO::ASCII) + if(get_mode(os) == ASCII) os << " "; } - if(get_mode(os) == IO::ASCII) + if(get_mode(os) == ASCII) os << std::endl; } @@ -1041,7 +1044,7 @@ bool write_PLY(std::ostream& os, { int v0 = reindex[std::size_t(sm.vertex(ei, 0))]; int v1 = reindex[std::size_t(sm.vertex(ei, 1))]; - if(get_mode(os) == IO::ASCII) + if(get_mode(os) == ASCII) { os << v0 << " " << v1 << " "; } @@ -1054,11 +1057,11 @@ bool write_PLY(std::ostream& os, for(std::size_t i = 0; i < eprinters.size(); ++ i) { eprinters[i]->print(os, ei); - if(get_mode(os) == IO::ASCII) + if(get_mode(os) == ASCII) os << " "; } - if(get_mode(os) == IO::ASCII) + if(get_mode(os) == ASCII) os << std::endl; } } @@ -1069,7 +1072,7 @@ bool write_PLY(std::ostream& os, { int source = reindex[std::size_t(sm.source(hi))]; int target = reindex[std::size_t(sm.target(hi))]; - if(get_mode(os) == IO::ASCII) + if(get_mode(os) == ASCII) { os << source << " " << target << " "; } @@ -1082,11 +1085,11 @@ bool write_PLY(std::ostream& os, for(std::size_t i = 0; i < hprinters.size(); ++ i) { hprinters[i]->print(os, hi); - if(get_mode(os) == IO::ASCII) + if(get_mode(os) == ASCII) os << " "; } - if(get_mode(os) == IO::ASCII) + if(get_mode(os) == ASCII) os << std::endl; } } @@ -1127,17 +1130,19 @@ bool write_PLY(std::ostream& os, const Surface_mesh

& sm) /// \endcond +} // namespace IO + #ifndef CGAL_NO_DEPRECATED_CODE /*! \ingroup PkgSurfaceMeshIOFuncDeprecated - \deprecated This function is deprecated since \cgal 5.2, `CGAL::write_PLY(std::ostream&, const Surface_mesh&)` should be used instead. + \deprecated This function is deprecated since \cgal 5.2, `CGAL::IO::write_PLY(std::ostream&, const Surface_mesh&)` should be used instead. */ template CGAL_DEPRECATED bool write_ply(std::ostream& os, const Surface_mesh

& sm, const std::string& comments) { - return write_PLY(os, sm, comments); + return IO::write_PLY(os, sm, comments); } #endif // CGAL_NO_DEPRECATED_CODE diff --git a/Surface_mesh/include/CGAL/Surface_mesh/Surface_mesh.h b/Surface_mesh/include/CGAL/Surface_mesh/Surface_mesh.h index da54a33d7a4..75a01cc8be5 100644 --- a/Surface_mesh/include/CGAL/Surface_mesh/Surface_mesh.h +++ b/Surface_mesh/include/CGAL/Surface_mesh/Surface_mesh.h @@ -2171,7 +2171,7 @@ private: //------------------------------------------------------- private data template std::ostream& operator<<(std::ostream& os, const Surface_mesh

& sm) { - write_OFF(os, sm); + IO::write_OFF(os, sm); return os; } @@ -2183,7 +2183,7 @@ private: //------------------------------------------------------- private data template std::istream& operator>>(std::istream& is, Surface_mesh

& sm) { - read_OFF(is, sm); + IO::read_OFF(is, sm); return is; } diff --git a/Surface_mesh/test/Surface_mesh/SM_common.h b/Surface_mesh/test/Surface_mesh/SM_common.h index 1dc68f0094d..f0f9d1e0988 100644 --- a/Surface_mesh/test/Surface_mesh/SM_common.h +++ b/Surface_mesh/test/Surface_mesh/SM_common.h @@ -117,7 +117,7 @@ struct Surface_fixture_3 { struct Cube_fixture { - Cube_fixture() { CGAL::read_polygon_mesh("cube.off", m); } + Cube_fixture() { CGAL::IO::read_polygon_mesh("cube.off", m); } Sm m; diff --git a/Surface_mesh/test/Surface_mesh/sm_open_colored_off.cpp b/Surface_mesh/test/Surface_mesh/sm_open_colored_off.cpp index b76191918d7..35ff58cafb9 100644 --- a/Surface_mesh/test/Surface_mesh/sm_open_colored_off.cpp +++ b/Surface_mesh/test/Surface_mesh/sm_open_colored_off.cpp @@ -31,20 +31,20 @@ void OpenOFF(int i) CGAL_assertion(in && !surface_mesh.is_empty()); - SMesh::Property_map fcolors = - surface_mesh.property_map("f:color").first; + SMesh::Property_map fcolors = + surface_mesh.property_map("f:color").first; - SMesh::Property_map vcolors = - surface_mesh.property_map("v:color").first; - CGAL::Color c = fcolors[*(surface_mesh.faces().begin())]; - CGAL_assertion(c== CGAL::Color(229,0,0)); + SMesh::Property_map vcolors = + surface_mesh.property_map("v:color").first; + CGAL::IO::Color c = fcolors[*(surface_mesh.faces().begin())]; + CGAL_assertion(c== CGAL::IO::Color(229,0,0)); c = fcolors[*(--surface_mesh.faces().end())]; - CGAL_assertion(c== CGAL::Color(0,0,229)); + CGAL_assertion(c== CGAL::IO::Color(0,0,229)); c = vcolors[*(surface_mesh.vertices().begin())]; - CGAL_assertion((c== CGAL::Color(229,0,0))); + CGAL_assertion((c== CGAL::IO::Color(229,0,0))); c = vcolors[*(--surface_mesh.vertices().end())]; - CGAL_assertion((c== CGAL::Color(0,0,229))); + CGAL_assertion((c== CGAL::IO::Color(0,0,229))); } diff --git a/Surface_mesh/test/Surface_mesh/sm_ply_io.cpp b/Surface_mesh/test/Surface_mesh/sm_ply_io.cpp index 942fe50b965..5c2d21fc595 100644 --- a/Surface_mesh/test/Surface_mesh/sm_ply_io.cpp +++ b/Surface_mesh/test/Surface_mesh/sm_ply_io.cpp @@ -16,7 +16,7 @@ int main() { std::ifstream in("colored_tetra.ply"); SMesh mesh; - CGAL::read_PLY(in, mesh); + CGAL::IO::read_PLY(in, mesh); std::cerr << "Read mesh with " << mesh.number_of_vertices() << " vertices and " << mesh.number_of_faces() << " faces" << std::endl; @@ -37,11 +37,11 @@ int main() // Append second mesh std::ifstream in2("tetra.ply"); - CGAL::read_PLY(in2, mesh); + CGAL::IO::read_PLY(in2, mesh); std::ofstream out("out.ply"); // CGAL::set_binary_mode(out); - CGAL::write_PLY(out, mesh); + CGAL::IO::write_PLY(out, mesh); return 0; } diff --git a/Surface_mesh_approximation/examples/Surface_mesh_approximation/vsa_approximation_2_example.cpp b/Surface_mesh_approximation/examples/Surface_mesh_approximation/vsa_approximation_2_example.cpp index 30781891e59..8f2687ffe69 100644 --- a/Surface_mesh_approximation/examples/Surface_mesh_approximation/vsa_approximation_2_example.cpp +++ b/Surface_mesh_approximation/examples/Surface_mesh_approximation/vsa_approximation_2_example.cpp @@ -20,7 +20,7 @@ int main(int argc, char** argv) // read input surface triangle mesh Mesh mesh; - if(!CGAL::Polygon_mesh_processing::read_polygon_mesh(filename, mesh) || + if(!CGAL::Polygon_mesh_processing::IO::read_polygon_mesh(filename, mesh) || !CGAL::is_triangle_mesh(mesh)) { std::cerr << "Invalid input file." << std::endl; diff --git a/Surface_mesh_approximation/examples/Surface_mesh_approximation/vsa_approximation_example.cpp b/Surface_mesh_approximation/examples/Surface_mesh_approximation/vsa_approximation_example.cpp index bf12a72cc6f..ebaa4be8582 100644 --- a/Surface_mesh_approximation/examples/Surface_mesh_approximation/vsa_approximation_example.cpp +++ b/Surface_mesh_approximation/examples/Surface_mesh_approximation/vsa_approximation_example.cpp @@ -23,7 +23,7 @@ int main(int argc, char** argv) // read input surface triangle mesh Mesh mesh; - if(!CGAL::Polygon_mesh_processing::read_polygon_mesh(filename, mesh) || + if(!CGAL::Polygon_mesh_processing::IO::read_polygon_mesh(filename, mesh) || !CGAL::is_triangle_mesh(mesh)) { std::cerr << "Invalid input file." << std::endl; diff --git a/Surface_mesh_approximation/examples/Surface_mesh_approximation/vsa_class_interface_example.cpp b/Surface_mesh_approximation/examples/Surface_mesh_approximation/vsa_class_interface_example.cpp index 2a61fab2f81..885bfcd3de9 100644 --- a/Surface_mesh_approximation/examples/Surface_mesh_approximation/vsa_class_interface_example.cpp +++ b/Surface_mesh_approximation/examples/Surface_mesh_approximation/vsa_class_interface_example.cpp @@ -24,7 +24,7 @@ int main(int argc, char** argv) // reads input surface triangle mesh Mesh mesh; - if(!CGAL::Polygon_mesh_processing::read_polygon_mesh(filename, mesh) || + if(!CGAL::Polygon_mesh_processing::IO::read_polygon_mesh(filename, mesh) || !CGAL::is_triangle_mesh(mesh)) { std::cerr << "Invalid input file." << std::endl; diff --git a/Surface_mesh_approximation/examples/Surface_mesh_approximation/vsa_isotropic_metric_example.cpp b/Surface_mesh_approximation/examples/Surface_mesh_approximation/vsa_isotropic_metric_example.cpp index 116f53dfbd9..f2a62bf1fac 100644 --- a/Surface_mesh_approximation/examples/Surface_mesh_approximation/vsa_isotropic_metric_example.cpp +++ b/Surface_mesh_approximation/examples/Surface_mesh_approximation/vsa_isotropic_metric_example.cpp @@ -79,7 +79,7 @@ int main(int argc, char** argv) // reads input surface triangle mesh Mesh mesh; - if(!CGAL::Polygon_mesh_processing::read_polygon_mesh(filename, mesh) || + if(!CGAL::Polygon_mesh_processing::IO::read_polygon_mesh(filename, mesh) || !CGAL::is_triangle_mesh(mesh)) { std::cerr << "Invalid input file." << std::endl; diff --git a/Surface_mesh_approximation/examples/Surface_mesh_approximation/vsa_segmentation_example.cpp b/Surface_mesh_approximation/examples/Surface_mesh_approximation/vsa_segmentation_example.cpp index dc3c5a57b8a..ef6af2112c2 100644 --- a/Surface_mesh_approximation/examples/Surface_mesh_approximation/vsa_segmentation_example.cpp +++ b/Surface_mesh_approximation/examples/Surface_mesh_approximation/vsa_segmentation_example.cpp @@ -20,7 +20,7 @@ int main(int argc, char** argv) // reads input surface triangle mesh Mesh mesh; - if(!CGAL::Polygon_mesh_processing::read_polygon_mesh(filename, mesh) || + if(!CGAL::Polygon_mesh_processing::IO::read_polygon_mesh(filename, mesh) || !CGAL::is_triangle_mesh(mesh)) { std::cerr << "Invalid input file." << std::endl; diff --git a/Surface_mesh_approximation/examples/Surface_mesh_approximation/vsa_simple_approximation_example.cpp b/Surface_mesh_approximation/examples/Surface_mesh_approximation/vsa_simple_approximation_example.cpp index 81f326e4573..8baa4f1b6a3 100644 --- a/Surface_mesh_approximation/examples/Surface_mesh_approximation/vsa_simple_approximation_example.cpp +++ b/Surface_mesh_approximation/examples/Surface_mesh_approximation/vsa_simple_approximation_example.cpp @@ -18,7 +18,7 @@ int main(int argc, char** argv) // reads input surface triangle mesh Mesh mesh; - if(!CGAL::Polygon_mesh_processing::read_polygon_mesh(filename, mesh) || + if(!CGAL::Polygon_mesh_processing::IO::read_polygon_mesh(filename, mesh) || !CGAL::is_triangle_mesh(mesh)) { std::cerr << "Invalid input file." << std::endl; diff --git a/Surface_mesh_deformation/examples/Surface_mesh_deformation/all_roi_assign_example_Surface_mesh.cpp b/Surface_mesh_deformation/examples/Surface_mesh_deformation/all_roi_assign_example_Surface_mesh.cpp index a66e4152b3c..e7e97aaa051 100644 --- a/Surface_mesh_deformation/examples/Surface_mesh_deformation/all_roi_assign_example_Surface_mesh.cpp +++ b/Surface_mesh_deformation/examples/Surface_mesh_deformation/all_roi_assign_example_Surface_mesh.cpp @@ -18,7 +18,7 @@ int main(int argc, char** argv) const char* filename = (argc > 1) ? argv[1] : "data/plane.off"; Mesh mesh; - if(!CGAL::read_polygon_mesh(filename, mesh)) + if(!CGAL::IO::read_polygon_mesh(filename, mesh)) { std::cerr << "Invalid input file." << std::endl; return EXIT_FAILURE; diff --git a/Surface_mesh_deformation/examples/Surface_mesh_deformation/k_ring_roi_translate_rotate_Surface_mesh.cpp b/Surface_mesh_deformation/examples/Surface_mesh_deformation/k_ring_roi_translate_rotate_Surface_mesh.cpp index a881936c32b..6d807a09ce2 100644 --- a/Surface_mesh_deformation/examples/Surface_mesh_deformation/k_ring_roi_translate_rotate_Surface_mesh.cpp +++ b/Surface_mesh_deformation/examples/Surface_mesh_deformation/k_ring_roi_translate_rotate_Surface_mesh.cpp @@ -49,7 +49,7 @@ int main(int argc, char** argv) const char* filename = (argc>1) ? argv[1] : "data/plane.off"; Mesh mesh; - if(!CGAL::read_polygon_mesh(filename, mesh)) + if(!CGAL::IO::read_polygon_mesh(filename, mesh)) { std::cerr<< "Cannot open data/plane.off"; return 1; diff --git a/Surface_mesh_parameterization/examples/Surface_mesh_parameterization/discrete_authalic.cpp b/Surface_mesh_parameterization/examples/Surface_mesh_parameterization/discrete_authalic.cpp index 1f71c6e1d69..6ed0453a3f4 100644 --- a/Surface_mesh_parameterization/examples/Surface_mesh_parameterization/discrete_authalic.cpp +++ b/Surface_mesh_parameterization/examples/Surface_mesh_parameterization/discrete_authalic.cpp @@ -31,7 +31,7 @@ int main(int argc, char** argv) const char* filename = (argc>1) ? argv[1] : "data/three_peaks.off"; SurfaceMesh sm; - if(!CGAL::read_polygon_mesh(filename, sm)) + if(!CGAL::IO::read_polygon_mesh(filename, sm)) { std::cerr << "Invalid input file." << std::endl; return EXIT_FAILURE; diff --git a/Surface_mesh_parameterization/examples/Surface_mesh_parameterization/lscm.cpp b/Surface_mesh_parameterization/examples/Surface_mesh_parameterization/lscm.cpp index 43fb06a8785..e44f6545017 100644 --- a/Surface_mesh_parameterization/examples/Surface_mesh_parameterization/lscm.cpp +++ b/Surface_mesh_parameterization/examples/Surface_mesh_parameterization/lscm.cpp @@ -41,7 +41,7 @@ int main(int argc, char** argv) const char* filename = (argc>1) ? argv[1] : "data/lion.off"; SurfaceMesh sm; - if(!CGAL::read_polygon_mesh(filename, sm)) + if(!CGAL::IO::read_polygon_mesh(filename, sm)) { std::cerr << "Invalid input file." << std::endl; return EXIT_FAILURE; diff --git a/Surface_mesh_parameterization/examples/Surface_mesh_parameterization/orbifold.cpp b/Surface_mesh_parameterization/examples/Surface_mesh_parameterization/orbifold.cpp index 44eaf8f6ec5..ce1610568d4 100644 --- a/Surface_mesh_parameterization/examples/Surface_mesh_parameterization/orbifold.cpp +++ b/Surface_mesh_parameterization/examples/Surface_mesh_parameterization/orbifold.cpp @@ -48,7 +48,7 @@ int main(int argc, char** argv) const char* filename = (argc>1) ? argv[1] : "data/bear.off"; SurfaceMesh sm; - if(!CGAL::read_polygon_mesh(filename, sm)) + if(!CGAL::IO::read_polygon_mesh(filename, sm)) { std::cerr << "Invalid input file." << std::endl; return EXIT_FAILURE; diff --git a/Surface_mesh_parameterization/examples/Surface_mesh_parameterization/simple_parameterization.cpp b/Surface_mesh_parameterization/examples/Surface_mesh_parameterization/simple_parameterization.cpp index b40a8bf48cc..c9eabe71a45 100644 --- a/Surface_mesh_parameterization/examples/Surface_mesh_parameterization/simple_parameterization.cpp +++ b/Surface_mesh_parameterization/examples/Surface_mesh_parameterization/simple_parameterization.cpp @@ -26,7 +26,7 @@ int main(int argc, char** argv) const char* filename = (argc>1) ? argv[1] : "data/nefertiti.off"; SurfaceMesh sm; - if(!CGAL::read_polygon_mesh(filename, sm)) + if(!CGAL::IO::read_polygon_mesh(filename, sm)) { std::cerr << "Invalid input file." << std::endl; return EXIT_FAILURE; diff --git a/Surface_mesh_segmentation/examples/Surface_mesh_segmentation/extract_segmentation_into_mesh_example.cpp b/Surface_mesh_segmentation/examples/Surface_mesh_segmentation/extract_segmentation_into_mesh_example.cpp index 189f068b136..74d48718f72 100644 --- a/Surface_mesh_segmentation/examples/Surface_mesh_segmentation/extract_segmentation_into_mesh_example.cpp +++ b/Surface_mesh_segmentation/examples/Surface_mesh_segmentation/extract_segmentation_into_mesh_example.cpp @@ -20,7 +20,7 @@ int main(int argc, char** argv ) const char* filename = (argc > 1) ? argv[1] : "data/cactus.off"; SM mesh; - if(!CGAL::Polygon_mesh_processing::read_polygon_mesh(filename, mesh) || + if(!CGAL::Polygon_mesh_processing::IO::read_polygon_mesh(filename, mesh) || !CGAL::is_triangle_mesh(mesh)) { std::cerr << "Invalid input file." << std::endl; diff --git a/Surface_mesh_segmentation/examples/Surface_mesh_segmentation/segmentation_from_sdf_values_LCC_example.cpp b/Surface_mesh_segmentation/examples/Surface_mesh_segmentation/segmentation_from_sdf_values_LCC_example.cpp index 543e8563155..b21941ac293 100644 --- a/Surface_mesh_segmentation/examples/Surface_mesh_segmentation/segmentation_from_sdf_values_LCC_example.cpp +++ b/Surface_mesh_segmentation/examples/Surface_mesh_segmentation/segmentation_from_sdf_values_LCC_example.cpp @@ -21,7 +21,7 @@ int main(int argc, char** argv) // create and read LCC LCC mesh; - if(!CGAL::Polygon_mesh_processing::read_polygon_mesh(filename, mesh) || + if(!CGAL::Polygon_mesh_processing::IO::read_polygon_mesh(filename, mesh) || !CGAL::is_triangle_mesh(mesh)) { std::cerr << "Invalid input file." << std::endl; diff --git a/Surface_mesh_segmentation/examples/Surface_mesh_segmentation/segmentation_from_sdf_values_SM_example.cpp b/Surface_mesh_segmentation/examples/Surface_mesh_segmentation/segmentation_from_sdf_values_SM_example.cpp index 9aebc8cb0fa..2d8391fa781 100644 --- a/Surface_mesh_segmentation/examples/Surface_mesh_segmentation/segmentation_from_sdf_values_SM_example.cpp +++ b/Surface_mesh_segmentation/examples/Surface_mesh_segmentation/segmentation_from_sdf_values_SM_example.cpp @@ -21,7 +21,7 @@ int main(int argc, char** argv ) const char* filename = (argc > 1) ? argv[1] : "data/cactus.off"; Mesh mesh; - if(!CGAL::Polygon_mesh_processing::read_polygon_mesh(filename, mesh) || + if(!CGAL::Polygon_mesh_processing::IO::read_polygon_mesh(filename, mesh) || !CGAL::is_triangle_mesh(mesh)) { std::cerr << "Invalid input file." << std::endl; diff --git a/Surface_mesh_shortest_path/examples/Surface_mesh_shortest_path/shortest_path_sequence.cpp b/Surface_mesh_shortest_path/examples/Surface_mesh_shortest_path/shortest_path_sequence.cpp index 512b2882ae0..e4d6b38763b 100644 --- a/Surface_mesh_shortest_path/examples/Surface_mesh_shortest_path/shortest_path_sequence.cpp +++ b/Surface_mesh_shortest_path/examples/Surface_mesh_shortest_path/shortest_path_sequence.cpp @@ -82,7 +82,7 @@ int main(int argc, char** argv) const char* filename = (argc>1) ? argv[1] : "data/elephant.off"; Triangle_mesh tmesh; - if(!CGAL::read_polygon_mesh(filename, tmesh) || + if(!CGAL::IO::read_polygon_mesh(filename, tmesh) || !CGAL::is_triangle_mesh(tmesh)) { std::cerr << "Invalid input file." << std::endl; diff --git a/Surface_mesh_shortest_path/examples/Surface_mesh_shortest_path/shortest_path_with_locate.cpp b/Surface_mesh_shortest_path/examples/Surface_mesh_shortest_path/shortest_path_with_locate.cpp index 5ce5baa5733..12bc9c64b95 100644 --- a/Surface_mesh_shortest_path/examples/Surface_mesh_shortest_path/shortest_path_with_locate.cpp +++ b/Surface_mesh_shortest_path/examples/Surface_mesh_shortest_path/shortest_path_with_locate.cpp @@ -37,7 +37,7 @@ int main(int argc, char** argv) const char* filename = (argc>1) ? argv[1] : "data/elephant.off"; Triangle_mesh tmesh; - if(!CGAL::read_polygon_mesh(filename, tmesh) || + if(!CGAL::IO::read_polygon_mesh(filename, tmesh) || !CGAL::is_triangle_mesh(tmesh)) { std::cerr << "Invalid input file." << std::endl; diff --git a/Surface_mesh_shortest_path/examples/Surface_mesh_shortest_path/shortest_paths.cpp b/Surface_mesh_shortest_path/examples/Surface_mesh_shortest_path/shortest_paths.cpp index 14109508355..09fa0cd6ac9 100644 --- a/Surface_mesh_shortest_path/examples/Surface_mesh_shortest_path/shortest_paths.cpp +++ b/Surface_mesh_shortest_path/examples/Surface_mesh_shortest_path/shortest_paths.cpp @@ -23,7 +23,7 @@ int main(int argc, char** argv) const char* filename = (argc>1) ? argv[1] : "data/elephant.off"; Triangle_mesh tmesh; - if(!CGAL::read_polygon_mesh(filename, tmesh) || + if(!CGAL::IO::read_polygon_mesh(filename, tmesh) || !CGAL::is_triangle_mesh(tmesh)) { std::cerr << "Invalid input file." << std::endl; diff --git a/Surface_mesh_shortest_path/examples/Surface_mesh_shortest_path/shortest_paths_multiple_sources.cpp b/Surface_mesh_shortest_path/examples/Surface_mesh_shortest_path/shortest_paths_multiple_sources.cpp index d543da6abde..38143178e3c 100644 --- a/Surface_mesh_shortest_path/examples/Surface_mesh_shortest_path/shortest_paths_multiple_sources.cpp +++ b/Surface_mesh_shortest_path/examples/Surface_mesh_shortest_path/shortest_paths_multiple_sources.cpp @@ -24,7 +24,7 @@ int main(int argc, char** argv) const char* filename = (argc>1) ? argv[1] : "data/elephant.off"; Triangle_mesh tmesh; - if(!CGAL::read_polygon_mesh(filename, tmesh) || + if(!CGAL::IO::read_polygon_mesh(filename, tmesh) || !CGAL::is_triangle_mesh(tmesh)) { std::cerr << "Invalid input file." << std::endl; 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 70f9e16be24..cf15718d3df 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 @@ -71,7 +71,7 @@ int main(int argc, char** argv) .get_placement(Placement())); std::cout << t.time() << " sec" << std::endl; - CGAL::write_polygon_mesh((argc > 3) ? argv[3] : "out.off", surface_mesh, CGAL::parameters::stream_precision(17)); + CGAL::IO::write_polygon_mesh((argc > 3) ? argv[3] : "out.off", surface_mesh, CGAL::parameters::stream_precision(17)); 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 eaba77051d5..04c59231c85 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 @@ -90,7 +90,7 @@ int main(int argc, char** argv) std::cout << "\nFinished!\n" << r << " edges removed.\n" << surface_mesh.number_of_edges() << " final edges.\n"; - CGAL::write_polygon_mesh((argc > 2) ? argv[2] : "out.off", surface_mesh, CGAL::parameters::stream_precision(17)); + CGAL::IO::write_polygon_mesh((argc > 2) ? argv[2] : "out.off", surface_mesh, CGAL::parameters::stream_precision(17)); // now check! for(halfedge_descriptor hd : halfedges(surface_mesh)) diff --git a/Surface_mesh_simplification/examples/Surface_mesh_simplification/edge_collapse_garland_heckbert.cpp b/Surface_mesh_simplification/examples/Surface_mesh_simplification/edge_collapse_garland_heckbert.cpp index 338a17aed37..b7fe2fe732e 100644 --- a/Surface_mesh_simplification/examples/Surface_mesh_simplification/edge_collapse_garland_heckbert.cpp +++ b/Surface_mesh_simplification/examples/Surface_mesh_simplification/edge_collapse_garland_heckbert.cpp @@ -68,7 +68,7 @@ int main(int argc, char** argv) std::cout << "\nFinished!\n" << r << " edges removed.\n" << surface_mesh.number_of_edges() << " final edges.\n"; - CGAL::write_polygon_mesh((argc > 3) ? argv[3] : "out.off", surface_mesh, CGAL::parameters::stream_precision(17)); + CGAL::IO::write_polygon_mesh((argc > 3) ? argv[3] : "out.off", surface_mesh, CGAL::parameters::stream_precision(17)); return EXIT_SUCCESS; } diff --git a/Surface_mesh_simplification/examples/Surface_mesh_simplification/edge_collapse_linear_cell_complex.cpp b/Surface_mesh_simplification/examples/Surface_mesh_simplification/edge_collapse_linear_cell_complex.cpp index 8fbc1763b86..c9551fc0419 100644 --- a/Surface_mesh_simplification/examples/Surface_mesh_simplification/edge_collapse_linear_cell_complex.cpp +++ b/Surface_mesh_simplification/examples/Surface_mesh_simplification/edge_collapse_linear_cell_complex.cpp @@ -24,7 +24,7 @@ int main(int argc, char** argv) LCC lcc; const char* filename = (argc > 1) ? argv[1] : "data/cube-meshed.off"; - if(!CGAL::read_polygon_mesh(filename, lcc)) + if(!CGAL::IO::read_polygon_mesh(filename, lcc)) { std::cerr << "Failed to read input mesh: " << filename << std::endl; return EXIT_FAILURE; @@ -60,7 +60,7 @@ int main(int argc, char** argv) lcc.display_characteristics(std::cout) << ", is_valid=" << CGAL::is_valid(lcc) << std::endl; - CGAL::write_polygon_mesh((argc > 3 ? argv[3] : "out.off"), lcc); + CGAL::IO::write_polygon_mesh((argc > 3 ? argv[3] : "out.off"), lcc); 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 063e6fd63c1..b40ae60efcc 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 @@ -45,7 +45,7 @@ int main(int argc, char** argv) std::cout << "\nFinished!\n" << r << " edges removed.\n" << surface_mesh.number_of_edges() << " final edges.\n"; std::cout << "Time elapsed: " << std::chrono::duration_cast(end_time - start_time).count() << "ms" << std::endl; - CGAL::write_polygon_mesh((argc > 3) ? argv[3] : "out.off", surface_mesh, CGAL::parameters::stream_precision(17)); + CGAL::IO::write_polygon_mesh((argc > 3) ? argv[3] : "out.off", surface_mesh, CGAL::parameters::stream_precision(17)); return EXIT_SUCCESS; } 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 index ffbe9574fe2..a85bab7aa0a 100644 --- 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 @@ -136,7 +136,7 @@ int main(int argc, char** argv) std::cout << "\nFinished!\n" << r << " edges removed.\n" << surface_mesh.number_of_edges() << " final edges.\n"; - CGAL::write_polygon_mesh((argc > 3) ? argv[3] : "out.off", surface_mesh, CGAL::parameters::stream_precision(17)); + CGAL::IO::write_polygon_mesh((argc > 3) ? argv[3] : "out.off", surface_mesh, CGAL::parameters::stream_precision(17)); return EXIT_SUCCESS; } diff --git a/Surface_mesh_skeletonization/examples/Surface_mesh_skeletonization/MCF_Skeleton_LCC_example.cpp b/Surface_mesh_skeletonization/examples/Surface_mesh_skeletonization/MCF_Skeleton_LCC_example.cpp index 881faad7fe7..491ebf21d91 100644 --- a/Surface_mesh_skeletonization/examples/Surface_mesh_skeletonization/MCF_Skeleton_LCC_example.cpp +++ b/Surface_mesh_skeletonization/examples/Surface_mesh_skeletonization/MCF_Skeleton_LCC_example.cpp @@ -24,7 +24,7 @@ typedef Skeleton::edge_descriptor Skeleton_edge; int main() { LCC lcc; - CGAL::read_polygon_mesh("data/elephant.off", lcc); + CGAL::IO::read_polygon_mesh("data/elephant.off", lcc); Skeleton skeleton; Skeletonization mcs(lcc); diff --git a/Surface_mesh_skeletonization/examples/Surface_mesh_skeletonization/simple_mcfskel_LCC_example.cpp b/Surface_mesh_skeletonization/examples/Surface_mesh_skeletonization/simple_mcfskel_LCC_example.cpp index dca0967772e..81169ddea8d 100644 --- a/Surface_mesh_skeletonization/examples/Surface_mesh_skeletonization/simple_mcfskel_LCC_example.cpp +++ b/Surface_mesh_skeletonization/examples/Surface_mesh_skeletonization/simple_mcfskel_LCC_example.cpp @@ -53,7 +53,7 @@ struct Display_polylines{ int main() { LCC lcc; - CGAL::read_polygon_mesh("data/elephant.off", lcc); + CGAL::IO::read_polygon_mesh("data/elephant.off", lcc); Skeleton skeleton; diff --git a/Surface_mesh_topology/examples/Surface_mesh_topology/draw_facewidth.h b/Surface_mesh_topology/examples/Surface_mesh_topology/draw_facewidth.h index 520fffe69cf..c23906f10b3 100644 --- a/Surface_mesh_topology/examples/Surface_mesh_topology/draw_facewidth.h +++ b/Surface_mesh_topology/examples/Surface_mesh_topology/draw_facewidth.h @@ -19,18 +19,18 @@ struct Facewidth_draw_functor : public CGAL::DefaultDrawingFunctorLCC { return alcc.is_marked(dh, m_vertex_mark); } template - CGAL::Color vertex_color(const LCC& /* alcc */, + CGAL::IO::Color vertex_color(const LCC& /* alcc */, typename LCC::Dart_const_handle /* dh */) const - { return CGAL::Color(0, 255, 0); } + { return CGAL::IO::Color(0, 255, 0); } template bool colored_edge(const LCC& /*alcc*/, typename LCC::Dart_const_handle /*dh*/) const { return false; } template - CGAL::Color edge_color(const LCC& /* alcc*/, + CGAL::IO::Color edge_color(const LCC& /* alcc*/, typename LCC::Dart_const_handle /* dh */) const - { return CGAL::Color(0, 0, 255); } + { return CGAL::IO::Color(0, 0, 255); } template bool colored_face(const LCC& /* alcc */, @@ -38,9 +38,9 @@ struct Facewidth_draw_functor : public CGAL::DefaultDrawingFunctorLCC {return true;} template - CGAL::Color face_color(const LCC& alcc, typename LCC::Dart_const_handle dh) const - { return alcc.is_marked(dh, m_face_mark)?CGAL::Color(255, 0, 0) - :CGAL::Color(211, 211, 211); } + CGAL::IO::Color face_color(const LCC& alcc, typename LCC::Dart_const_handle dh) const + { return alcc.is_marked(dh, m_face_mark)?CGAL::IO::Color(255, 0, 0) + :CGAL::IO::Color(211, 211, 211); } template bool colored_volume(const LCC& /* alcc */, diff --git a/Surface_mesh_topology/examples/Surface_mesh_topology/edgewidth_surface_mesh.cpp b/Surface_mesh_topology/examples/Surface_mesh_topology/edgewidth_surface_mesh.cpp index a78ffce8e4f..ce80de070e5 100644 --- a/Surface_mesh_topology/examples/Surface_mesh_topology/edgewidth_surface_mesh.cpp +++ b/Surface_mesh_topology/examples/Surface_mesh_topology/edgewidth_surface_mesh.cpp @@ -35,7 +35,7 @@ int main(int argc, char* argv[]) bool draw=(argc<3?false:(std::string(argv[2])=="-draw")); Mesh sm; - if(!CGAL::read_polygon_mesh(filename, sm)) + if(!CGAL::IO::read_polygon_mesh(filename, sm)) { std::cout<<"Cannot read file '"< - CGAL::Color vertex_color(const LCC& /* alcc */, + CGAL::IO::Color vertex_color(const LCC& /* alcc */, typename LCC::Dart_const_handle /* dh */) const - { return CGAL::Color(0,255,0); } + { return CGAL::IO::Color(0,255,0); } template bool colored_edge(const LCC& alcc, typename LCC::Dart_const_handle dh) const { return alcc.is_marked(dh, belong_to_cycle); } template - CGAL::Color edge_color(const LCC& /* alcc*/, + CGAL::IO::Color edge_color(const LCC& /* alcc*/, typename LCC::Dart_const_handle /* dh */) const - { return CGAL::Color(0, 0, 255); } + { return CGAL::IO::Color(0, 0, 255); } template bool colored_face(const LCC& /* alcc */, typename LCC::Dart_const_handle /* dh */) const {return true;} template - CGAL::Color face_color(const LCC& /* alcc */, + CGAL::IO::Color face_color(const LCC& /* alcc */, typename LCC::Dart_const_handle /* dh */) const - {return CGAL::Color(211, 211, 211);} + {return CGAL::IO::Color(211, 211, 211);} template bool colored_volume(const LCC& /* alcc */, diff --git a/Surface_mesh_topology/include/CGAL/draw_face_graph_with_paths.h b/Surface_mesh_topology/include/CGAL/draw_face_graph_with_paths.h index 726cf03efd1..981cc54ca22 100644 --- a/Surface_mesh_topology/include/CGAL/draw_face_graph_with_paths.h +++ b/Surface_mesh_topology/include/CGAL/draw_face_graph_with_paths.h @@ -148,7 +148,7 @@ protected: if (m_current_dart!=lcc.darts().end()) { // We want to draw only one dart Dart_const_handle selected_dart=m_current_dart; //lcc.dart_handle(m_current_dart); - compute_edge(selected_dart, CGAL::Color(255,0,0)); + compute_edge(selected_dart, CGAL::IO::Color(255,0,0)); lcc.template mark_cell<1>(selected_dart, markedges); compute_vertex(selected_dart); @@ -217,7 +217,7 @@ protected: } while(cur!=dh); - // CGAL::Color c=m_fcolor.run(*lcc, dh); + // CGAL::IO::Color c=m_fcolor.run(*lcc, dh); face_begin(); //c); cur=dh; @@ -241,13 +241,13 @@ protected: { if (m_draw_marked_darts && m_amark!=LCC::INVALID_MARK && (lcc.is_marked(dh, m_amark) || lcc.is_marked(lcc.opposite2(dh), m_amark))) - { add_segment(p1, get_point(d2), CGAL::Color(0, 0, 255)); } + { add_segment(p1, get_point(d2), CGAL::IO::Color(0, 0, 255)); } else { add_segment(p1, get_point(d2)); } } } - void compute_edge(Dart_const_handle dh, const CGAL::Color& color) + void compute_edge(Dart_const_handle dh, const CGAL::IO::Color& color) { Point p1 = get_point(dh); Dart_const_handle d2 = lcc.other_extremity(dh); @@ -367,7 +367,7 @@ protected: { return; } CGAL::Random random(static_cast(i)); - CGAL::Color color=get_random_color(random); + CGAL::IO::Color color=get_random_color(random); add_point(get_point((*m_paths)[i].get_ith_dart(0)), color); for (std::size_t j=0; j<(*m_paths)[i].length(); ++j) diff --git a/Tetrahedral_remeshing/examples/Tetrahedral_remeshing/tetrahedral_remeshing_from_mesh.cpp b/Tetrahedral_remeshing/examples/Tetrahedral_remeshing/tetrahedral_remeshing_from_mesh.cpp index 83565e56341..4ea0c1ddc54 100644 --- a/Tetrahedral_remeshing/examples/Tetrahedral_remeshing/tetrahedral_remeshing_from_mesh.cpp +++ b/Tetrahedral_remeshing/examples/Tetrahedral_remeshing/tetrahedral_remeshing_from_mesh.cpp @@ -19,12 +19,12 @@ int main(int argc, char* argv[]) Remeshing_triangulation tr; std::ifstream is(filename, std::ios_base::in); - CGAL::read_MEDIT(is, tr); + CGAL::IO::read_MEDIT(is, tr); CGAL::tetrahedral_isotropic_remeshing(tr, target_edge_length); std::ofstream os("after_remeshing.mesh"); - CGAL::write_MEDIT(os, tr); + CGAL::IO::write_MEDIT(os, tr); return EXIT_SUCCESS; } diff --git a/Triangulation_2/examples/Triangulation_2/colored_face.cpp b/Triangulation_2/examples/Triangulation_2/colored_face.cpp index 820daa4cfe5..0f290a796be 100644 --- a/Triangulation_2/examples/Triangulation_2/colored_face.cpp +++ b/Triangulation_2/examples/Triangulation_2/colored_face.cpp @@ -6,7 +6,7 @@ typedef CGAL::Exact_predicates_inexact_constructions_kernel K; typedef CGAL::Triangulation_vertex_base_2 Vb; -typedef CGAL::Triangulation_face_base_with_info_2 Fb; +typedef CGAL::Triangulation_face_base_with_info_2 Fb; typedef CGAL::Triangulation_data_structure_2 Tds; typedef CGAL::Triangulation_2 Triangulation; @@ -21,11 +21,11 @@ int main() { t.insert(Point(2,2)); for(Face_handle f : t.finite_face_handles()) - f->info() = CGAL::blue(); + f->info() = CGAL::IO::blue(); Point p(0.5,0.5); Face_handle fh = t.locate(p); - fh->info() = CGAL::red(); + fh->info() = CGAL::IO::red(); return 0; } diff --git a/Triangulation_2/include/CGAL/draw_triangulation_2.h b/Triangulation_2/include/CGAL/draw_triangulation_2.h index fef579d2ff0..3561dbbc04a 100644 --- a/Triangulation_2/include/CGAL/draw_triangulation_2.h +++ b/Triangulation_2/include/CGAL/draw_triangulation_2.h @@ -28,7 +28,7 @@ namespace CGAL struct DefaultColorFunctorT2 { template - static CGAL::Color run(const T2&, + static CGAL::IO::Color run(const T2&, const typename T2::Finite_faces_iterator fh) { CGAL::Random random((unsigned int)(std::size_t)(&*fh)); @@ -68,7 +68,7 @@ public: protected: void compute_face(Facet_const_handle fh) { - CGAL::Color c=m_fcolor.run(t2, fh); + CGAL::IO::Color c=m_fcolor.run(t2, fh); face_begin(c); add_point_in_face(fh->vertex(0)->point()); diff --git a/Triangulation_3/demo/Triangulation_3/Scene.cpp b/Triangulation_3/demo/Triangulation_3/Scene.cpp index dfab5a6d210..c56c3cd269b 100644 --- a/Triangulation_3/demo/Triangulation_3/Scene.cpp +++ b/Triangulation_3/demo/Triangulation_3/Scene.cpp @@ -123,12 +123,12 @@ void Scene::loadPointsOFF(const char* filename) void Scene::loadPointsXYZ(const char* filename) { - /* Use CGAL::read_XYZ to read in data -- tested */ + /* Use CGAL::IO::read_XYZ to read in data -- tested */ /* Note: this function reads in points only (normals are ignored) */ /* Note: this function can NOT omit comments (starting with '#') */ list pts; - if( !CGAL::read_XYZ( filename, // input ifstream - back_inserter(pts) ) ) { // output iterator over points + if( !CGAL::IO::read_XYZ( filename, // input ifstream + back_inserter(pts) ) ) { // output iterator over points showError( QObject::tr("Error: cannot read file %1.").arg(filename) ); } @@ -199,11 +199,11 @@ void Scene::savePointsXYZ(const char* filename) return; } - /* Use CGAL::write_xyz_points to write out data */ + /* Use CGAL::IO::write_xyz_points to write out data */ /* Note: this function writes out points only (normals are ignored) */ - if( !CGAL::write_XYZ( fout, // output ofstream - CGAL::make_range( m_dt.points_begin(), // first output point - m_dt.points_end()) ) ) { // past-the-end output point + if( !CGAL::IO::write_XYZ( fout, // output ofstream + CGAL::make_range( m_dt.points_begin(), // first output point + m_dt.points_end()) ) ) { // past-the-end output point showError( QObject::tr("Error: cannot read file %1.").arg(filename) ); } } diff --git a/Triangulation_3/demo/Triangulation_3_Geomview_demos/Triangulation_3_color_demo.cpp b/Triangulation_3/demo/Triangulation_3_Geomview_demos/Triangulation_3_color_demo.cpp index f5f8f09b9ba..010bf0465d8 100644 --- a/Triangulation_3/demo/Triangulation_3_Geomview_demos/Triangulation_3_color_demo.cpp +++ b/Triangulation_3/demo/Triangulation_3_Geomview_demos/Triangulation_3_color_demo.cpp @@ -31,7 +31,7 @@ int main() typedef CGAL::Exact_predicates_inexact_constructions_kernel K; -typedef CGAL::Triangulation_vertex_base_with_info_3 Vb; +typedef CGAL::Triangulation_vertex_base_with_info_3 Vb; typedef CGAL::Delaunay_triangulation_cell_base_3 Cb; typedef CGAL::Triangulation_data_structure_3 Tds; typedef CGAL::Delaunay_triangulation_3 Delaunay; @@ -41,7 +41,7 @@ typedef Delaunay::Point Point; int main() { CGAL::Geomview_stream gv(CGAL::Bbox_3(0,0,0, 2, 2, 2)); - gv.set_bg_color(CGAL::Color(0, 200, 200)); + gv.set_bg_color(CGAL::IO::Color(0, 200, 200)); gv.clear(); Delaunay T; @@ -57,7 +57,7 @@ int main() Delaunay::Finite_vertices_iterator vit; for (vit = T.finite_vertices_begin(); vit != T.finite_vertices_end(); ++vit) if (T.degree(vit) == 6) - vit->info() = CGAL::red(); + vit->info() = CGAL::IO::red(); std::cout << " Visualization of T" << std::endl; gv.set_wired(true); diff --git a/Triangulation_3/demo/Triangulation_3_Geomview_demos/Triangulation_3_demo.cpp b/Triangulation_3/demo/Triangulation_3_Geomview_demos/Triangulation_3_demo.cpp index f552d48c5cf..b34b666422d 100644 --- a/Triangulation_3/demo/Triangulation_3_Geomview_demos/Triangulation_3_demo.cpp +++ b/Triangulation_3/demo/Triangulation_3_Geomview_demos/Triangulation_3_demo.cpp @@ -95,7 +95,7 @@ void visu_vertex(CGAL::Geomview_stream & os, const TRIANGULATION & T, int main() { CGAL::Geomview_stream gv(CGAL::Bbox_3(0,0,0, 2, 2, 2)); - gv.set_bg_color(CGAL::Color(0, 200, 200)); + gv.set_bg_color(CGAL::IO::Color(0, 200, 200)); gv.clear(); Triangulation T; diff --git a/Triangulation_3/demo/Triangulation_3_Geomview_demos/Triangulation_3_remove_demo.cpp b/Triangulation_3/demo/Triangulation_3_Geomview_demos/Triangulation_3_remove_demo.cpp index 538a33b8bf3..4b1ab9e2f08 100644 --- a/Triangulation_3/demo/Triangulation_3_Geomview_demos/Triangulation_3_remove_demo.cpp +++ b/Triangulation_3/demo/Triangulation_3_Geomview_demos/Triangulation_3_remove_demo.cpp @@ -94,7 +94,7 @@ void visu_vertex(CGAL::Geomview_stream & os, const TRIANGULATION & T, int main() { CGAL::Geomview_stream gv(CGAL::Bbox_3(0,0,0, 5, 5, 5)); - gv.set_bg_color(CGAL::Color(0, 200, 200)); + gv.set_bg_color(CGAL::IO::Color(0, 200, 200)); gv.set_wired(true); gv.clear(); diff --git a/Triangulation_3/demo/Triangulation_3_Geomview_demos/Triangulation_3_voronoi_demo.cpp b/Triangulation_3/demo/Triangulation_3_Geomview_demos/Triangulation_3_voronoi_demo.cpp index e2d52232cf6..3fccb43099e 100644 --- a/Triangulation_3/demo/Triangulation_3_Geomview_demos/Triangulation_3_voronoi_demo.cpp +++ b/Triangulation_3/demo/Triangulation_3_Geomview_demos/Triangulation_3_voronoi_demo.cpp @@ -47,7 +47,7 @@ typedef Triangulation::Point Point; int main() { CGAL::Geomview_stream gv(CGAL::Bbox_3(0,0,0, 3, 3, 3)); - gv.set_bg_color(CGAL::Color(0, 200, 200)); + gv.set_bg_color(CGAL::IO::Color(0, 200, 200)); gv.clear(); Triangulation T; @@ -65,7 +65,7 @@ int main() gv << T; std::cout <<" Visualizing the Voronoi edges" << std::endl; - gv << CGAL::red(); + gv << CGAL::IO::red(); T.draw_dual(gv); char ch; diff --git a/Triangulation_3/examples/Triangulation_3/color.cpp b/Triangulation_3/examples/Triangulation_3/color.cpp index c61bf335689..88be5a11a23 100644 --- a/Triangulation_3/examples/Triangulation_3/color.cpp +++ b/Triangulation_3/examples/Triangulation_3/color.cpp @@ -8,7 +8,7 @@ typedef CGAL::Exact_predicates_inexact_constructions_kernel K; -typedef CGAL::Triangulation_vertex_base_with_info_3 Vb; +typedef CGAL::Triangulation_vertex_base_with_info_3 Vb; typedef CGAL::Delaunay_triangulation_cell_base_3 Cb; typedef CGAL::Triangulation_data_structure_3 Tds; typedef CGAL::Delaunay_triangulation_3 Delaunay; @@ -30,7 +30,7 @@ int main() Delaunay::Finite_vertices_iterator vit; for (Delaunay::Vertex_handle v : T.finite_vertex_handles()) if (T.degree(v) == 6) - v->info() = CGAL::red(); + v->info() = CGAL::IO::red(); return 0; } diff --git a/Triangulation_3/examples/Triangulation_3/segment_cell_traverser_3.cpp b/Triangulation_3/examples/Triangulation_3/segment_cell_traverser_3.cpp index e9a675ff7e0..cb0eb2c855d 100644 --- a/Triangulation_3/examples/Triangulation_3/segment_cell_traverser_3.cpp +++ b/Triangulation_3/examples/Triangulation_3/segment_cell_traverser_3.cpp @@ -25,7 +25,7 @@ int main(int argc, char* argv[]) const char* fname = (argc>1) ? argv[1] : "data/blobby.xyz"; std::vector points; - if (!CGAL::read_points(fname, std::back_inserter(points))) + if (!CGAL::IO::read_points(fname, std::back_inserter(points))) { std::cerr << "Error: cannot read file " << fname << std::endl; return EXIT_FAILURE; diff --git a/Triangulation_3/examples/Triangulation_3/segment_simplex_traverser_3.cpp b/Triangulation_3/examples/Triangulation_3/segment_simplex_traverser_3.cpp index 14c2fb7a7b2..f32ad6859bd 100644 --- a/Triangulation_3/examples/Triangulation_3/segment_simplex_traverser_3.cpp +++ b/Triangulation_3/examples/Triangulation_3/segment_simplex_traverser_3.cpp @@ -27,7 +27,7 @@ int main(int argc, char* argv[]) std::vector points; std::ifstream stream(fname); if (!stream || - !CGAL::read_XYZ(stream, std::back_inserter(points))) + !CGAL::IO::read_XYZ(stream, std::back_inserter(points))) { std::cerr << "Error: cannot read file " << fname << std::endl; return EXIT_FAILURE; diff --git a/Triangulation_3/include/CGAL/draw_triangulation_3.h b/Triangulation_3/include/CGAL/draw_triangulation_3.h index 0c778ca08a7..3e5bbaec9f5 100644 --- a/Triangulation_3/include/CGAL/draw_triangulation_3.h +++ b/Triangulation_3/include/CGAL/draw_triangulation_3.h @@ -28,11 +28,11 @@ namespace CGAL struct DefaultColorFunctorT3 { template - static CGAL::Color run(const T3&, + static CGAL::IO::Color run(const T3&, const typename T3::Finite_facets_iterator* fh) { if (fh==nullptr) // use to get the mono color - return CGAL::Color(100, 125, 200); // R G B between 0-255 + return CGAL::IO::Color(100, 125, 200); // R G B between 0-255 CGAL::Random random((unsigned int)((std::size_t)(&*((*fh)->first))+ (std::size_t)((*fh)->second))); @@ -74,7 +74,7 @@ public: protected: void compute_face(Facet_const_handle fh) { - CGAL::Color c=m_fcolor.run(t3, &fh); + CGAL::IO::Color c=m_fcolor.run(t3, &fh); face_begin(c); add_point_in_face(fh->first->vertex((fh->second+1)%4)->point()); diff --git a/Triangulation_3/test/Triangulation_3/test_simplex_iterator_3.cpp b/Triangulation_3/test/Triangulation_3/test_simplex_iterator_3.cpp index 9ef1b068212..a2340ade3dd 100644 --- a/Triangulation_3/test/Triangulation_3/test_simplex_iterator_3.cpp +++ b/Triangulation_3/test/Triangulation_3/test_simplex_iterator_3.cpp @@ -333,7 +333,7 @@ int main(int argc, char* argv[]) std::vector points; std::ifstream stream(fname); if (!stream || - !CGAL::read_XYZ(stream, std::back_inserter(points))) + !CGAL::IO::read_XYZ(stream, std::back_inserter(points))) { std::cerr << "Error: cannot read file " << fname << std::endl; return EXIT_FAILURE; diff --git a/Triangulation_on_sphere_2/examples/Triangulation_on_sphere_2/triang_on_sphere.cpp b/Triangulation_on_sphere_2/examples/Triangulation_on_sphere_2/triang_on_sphere.cpp index ca161c357f1..05a9135b26c 100644 --- a/Triangulation_on_sphere_2/examples/Triangulation_on_sphere_2/triang_on_sphere.cpp +++ b/Triangulation_on_sphere_2/examples/Triangulation_on_sphere_2/triang_on_sphere.cpp @@ -40,7 +40,7 @@ int main(int, char**) std::cout << dtos.number_of_ghost_faces() << " ghost faces\n" << std::endl; } - CGAL::write_OFF("result.off", dtos, CGAL::parameters::stream_precision(17)); + CGAL::IO::write_OFF("result.off", dtos, CGAL::parameters::stream_precision(17)); return EXIT_SUCCESS; } diff --git a/Triangulation_on_sphere_2/examples/Triangulation_on_sphere_2/triang_on_sphere_geo.cpp b/Triangulation_on_sphere_2/examples/Triangulation_on_sphere_2/triang_on_sphere_geo.cpp index 5f3d9c21040..a4989188773 100644 --- a/Triangulation_on_sphere_2/examples/Triangulation_on_sphere_2/triang_on_sphere_geo.cpp +++ b/Triangulation_on_sphere_2/examples/Triangulation_on_sphere_2/triang_on_sphere_geo.cpp @@ -57,7 +57,7 @@ int main(int argc, char** argv) std::cout << dtos.number_of_faces() << " solid faces" << std::endl; std::cout << dtos.number_of_ghost_faces() << " ghost faces" << std::endl; - CGAL::write_OFF("result.off", dtos, CGAL::parameters::stream_precision(17)); + CGAL::IO::write_OFF("result.off", dtos, CGAL::parameters::stream_precision(17)); return EXIT_SUCCESS; } diff --git a/Triangulation_on_sphere_2/examples/Triangulation_on_sphere_2/triang_on_sphere_proj.cpp b/Triangulation_on_sphere_2/examples/Triangulation_on_sphere_2/triang_on_sphere_proj.cpp index a50f6fde1e5..814c36b7089 100644 --- a/Triangulation_on_sphere_2/examples/Triangulation_on_sphere_2/triang_on_sphere_proj.cpp +++ b/Triangulation_on_sphere_2/examples/Triangulation_on_sphere_2/triang_on_sphere_proj.cpp @@ -40,7 +40,7 @@ int main(int, char**) std::cout << dtos.number_of_ghost_faces() << " ghost faces" << std::endl; } - CGAL::write_OFF("result.off", dtos, CGAL::parameters::stream_precision(17)); + CGAL::IO::write_OFF("result.off", dtos, CGAL::parameters::stream_precision(17)); return EXIT_SUCCESS; } diff --git a/Triangulation_on_sphere_2/examples/Triangulation_on_sphere_2/triang_on_sphere_range.cpp b/Triangulation_on_sphere_2/examples/Triangulation_on_sphere_2/triang_on_sphere_range.cpp index 7ae1621c3c1..d3a9137fee3 100644 --- a/Triangulation_on_sphere_2/examples/Triangulation_on_sphere_2/triang_on_sphere_range.cpp +++ b/Triangulation_on_sphere_2/examples/Triangulation_on_sphere_2/triang_on_sphere_range.cpp @@ -40,7 +40,7 @@ int main(int argc, char** argv) std::cout << dtos.number_of_vertices() << " vertices" << std::endl; std::cout << dtos.number_of_faces() << " solid faces" << std::endl; - CGAL::write_OFF("result.off", dtos, CGAL::parameters::stream_precision(17)); + CGAL::IO::write_OFF("result.off", dtos, CGAL::parameters::stream_precision(17)); return EXIT_SUCCESS; } diff --git a/Triangulation_on_sphere_2/include/CGAL/Triangulation_on_sphere_2/IO/OFF.h b/Triangulation_on_sphere_2/include/CGAL/Triangulation_on_sphere_2/IO/OFF.h index 13fc0a329ab..b939db6e843 100644 --- a/Triangulation_on_sphere_2/include/CGAL/Triangulation_on_sphere_2/IO/OFF.h +++ b/Triangulation_on_sphere_2/include/CGAL/Triangulation_on_sphere_2/IO/OFF.h @@ -43,6 +43,8 @@ class Triangulation_on_sphere_2; //////////////////////////////////////////////////////////////////////////////////////////////////// // Write +namespace IO { + /*! \ingroup PkgPointSet3IOOFF @@ -187,6 +189,6 @@ bool write_OFF(const std::string& fname, const CGAL::Triangulation_on_sphere_2 - static CGAL::Color run(const V2 &, const typename V2::Face_iterator /*fh*/) { + static CGAL::IO::Color run(const V2 &, const typename V2::Face_iterator /*fh*/) { //CGAL::Random random((unsigned int)(std::size_t)(&*fh)); //return get_random_color(random); - return CGAL::Color(73, 250, 117); + return CGAL::IO::Color(73, 250, 117); } }; @@ -88,7 +88,7 @@ protected: void compute_dual_vertex(Dual_vertices_iterator vi) { - add_point(vi->point(), CGAL::Color(50, 100, 180)); + add_point(vi->point(), CGAL::IO::Color(50, 100, 180)); } void add_segments_and_update_bounding_box(Halfedge_handle he) @@ -187,7 +187,7 @@ protected: if (he->is_ray()) { if (he->has_source()) { // add_ray_segment(he->source()->point(), get_second_point(he)); - add_ray(he->source()->point(), direction, CGAL::Color(100, 0, 0)); + add_ray(he->source()->point(), direction, CGAL::IO::Color(100, 0, 0)); } } else if (he->is_bisector()) { Kernel::Point_2 pointOnLine((v1->point().x() + v2->point().x()) / 2, @@ -198,7 +198,7 @@ protected: void compute_face(Face_const_handle fh) { - CGAL::Color c = m_fcolor.run(v2, fh); + CGAL::IO::Color c = m_fcolor.run(v2, fh); Ccb_halfedge_circulator ec_start = fh->ccb(); Ccb_halfedge_circulator ec = ec_start; From 56025fb5f9b80504deb61c21fc23e3114cbd19a2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?S=C3=A9bastien=20Loriot?= Date: Tue, 4 May 2021 14:38:47 +0200 Subject: [PATCH 115/171] fix release number of depreciation --- BGL/include/CGAL/boost/graph/IO/OFF.h | 8 ++++---- BGL/include/CGAL/boost/graph/IO/VTK.h | 2 +- BGL/include/CGAL/boost/graph/IO/WRL.h | 2 +- Point_set_3/include/CGAL/Point_set_3/IO/LAS.h | 4 ++-- Point_set_3/include/CGAL/Point_set_3/IO/OFF.h | 4 ++-- Point_set_3/include/CGAL/Point_set_3/IO/PLY.h | 4 ++-- Point_set_3/include/CGAL/Point_set_3/IO/XYZ.h | 4 ++-- .../include/CGAL/IO/read_las_points.h | 4 ++-- .../include/CGAL/IO/read_off_points.h | 2 +- .../include/CGAL/IO/read_ply_points.h | 4 ++-- .../include/CGAL/IO/read_xyz_points.h | 2 +- .../include/CGAL/IO/write_las_points.h | 4 ++-- .../include/CGAL/IO/write_off_points.h | 2 +- .../include/CGAL/IO/write_ply_points.h | 4 ++-- .../include/CGAL/IO/write_xyz_points.h | 2 +- .../doc/Polyhedron/CGAL/IO/Polyhedron_iostream.h | 4 ++-- Surface_mesh/include/CGAL/Surface_mesh/IO.h | 4 ++-- Surface_mesh/include/CGAL/Surface_mesh/IO/3MF.h | 2 +- Surface_mesh/include/CGAL/Surface_mesh/IO/OFF.h | 12 ++++++------ Surface_mesh/include/CGAL/Surface_mesh/IO/PLY.h | 4 ++-- 20 files changed, 39 insertions(+), 39 deletions(-) diff --git a/BGL/include/CGAL/boost/graph/IO/OFF.h b/BGL/include/CGAL/boost/graph/IO/OFF.h index 997d9f96ef0..fb5b5a25f4d 100644 --- a/BGL/include/CGAL/boost/graph/IO/OFF.h +++ b/BGL/include/CGAL/boost/graph/IO/OFF.h @@ -282,7 +282,7 @@ bool read_OFF(const std::string& fname, Graph& g, /*! \ingroup PkgBGLIOFctDeprecated - \deprecated This function is deprecated since \cgal 5.2, `CGAL::IO::read_OFF()` should be used instead. + \deprecated This function is deprecated since \cgal 5.3, `CGAL::IO::read_OFF()` should be used instead. */ template CGAL_DEPRECATED bool read_off(std::istream& is, Graph& g, const CGAL_BGL_NP_CLASS& np) @@ -293,7 +293,7 @@ CGAL_DEPRECATED bool read_off(std::istream& is, Graph& g, const CGAL_BGL_NP_CLAS /*! \ingroup PkgBGLIOFctDeprecated -\deprecated This function is deprecated since \cgal 5.2, `CGAL::IO::read_OFF()` should be used instead. +\deprecated This function is deprecated since \cgal 5.3, `CGAL::IO::read_OFF()` should be used instead. */ template CGAL_DEPRECATED bool read_off(const char* fname, Graph& g, const CGAL_BGL_NP_CLASS& np) @@ -517,7 +517,7 @@ bool write_OFF(const std::string& fname, const Graph& g, /*! \ingroup PkgBGLIOFctDeprecated - \deprecated This function is deprecated since \cgal 5.2, `CGAL::IO::write_OFF()` should be used instead. + \deprecated This function is deprecated since \cgal 5.3, `CGAL::IO::write_OFF()` should be used instead. */ template CGAL_DEPRECATED bool write_off(std::ostream& os, const Graph& g, const CGAL_BGL_NP_CLASS& np) @@ -533,7 +533,7 @@ CGAL_DEPRECATED bool write_off(std::ostream& os, const Graph& g) /*! \ingroup PkgBGLIOFctDeprecated -\deprecated This function is deprecated since \cgal 5.2, `CGAL::IO::write_OFF()` should be used instead. +\deprecated This function is deprecated since \cgal 5.3, `CGAL::IO::write_OFF()` should be used instead. */ template CGAL_DEPRECATED bool write_off(const char* fname, const Graph& g, const CGAL_BGL_NP_CLASS& np) diff --git a/BGL/include/CGAL/boost/graph/IO/VTK.h b/BGL/include/CGAL/boost/graph/IO/VTK.h index 5aa8d565965..069a4245b57 100644 --- a/BGL/include/CGAL/boost/graph/IO/VTK.h +++ b/BGL/include/CGAL/boost/graph/IO/VTK.h @@ -555,7 +555,7 @@ bool write_VTP(const std::string& fname, const Graph& g) { return write_VTP(fnam /*! \ingroup PkgBGLIOFctDeprecated - \deprecated This function is deprecated since \cgal 5.2, `CGAL::IO::write_VTP()` should be used instead. + \deprecated This function is deprecated since \cgal 5.3, `CGAL::IO::write_VTP()` should be used instead. */ template CGAL_DEPRECATED bool write_vtp(std::ostream& os, const Graph& g, const CGAL_BGL_NP_CLASS& np) diff --git a/BGL/include/CGAL/boost/graph/IO/WRL.h b/BGL/include/CGAL/boost/graph/IO/WRL.h index 3c19ef09642..db2c263b1ad 100644 --- a/BGL/include/CGAL/boost/graph/IO/WRL.h +++ b/BGL/include/CGAL/boost/graph/IO/WRL.h @@ -127,7 +127,7 @@ bool write_WRL(const std::string& fname, const Graph& g) { return write_WRL(fnam /*! \ingroup PkgBGLIOFctDeprecated - \deprecated This function is deprecated since \cgal 5.2, `CGAL::IO::write_WRL()` should be used instead. + \deprecated This function is deprecated since \cgal 5.3, `CGAL::IO::write_WRL()` should be used instead. */ template CGAL_DEPRECATED bool write_wrl(std::ostream& os, const Graph& g, const CGAL_BGL_NP_CLASS& np) diff --git a/Point_set_3/include/CGAL/Point_set_3/IO/LAS.h b/Point_set_3/include/CGAL/Point_set_3/IO/LAS.h index be66ddb97dd..4f32c2e6376 100644 --- a/Point_set_3/include/CGAL/Point_set_3/IO/LAS.h +++ b/Point_set_3/include/CGAL/Point_set_3/IO/LAS.h @@ -171,7 +171,7 @@ bool read_LAS(const std::string& fname, CGAL::Point_set_3& point_ /*! \ingroup PkgPointSet3IODeprecated - \deprecated This function is deprecated since \cgal 5.2, + \deprecated This function is deprecated since \cgal 5.3, \link PkgPointSet3IO `CGAL::IO::read_LAS()` \endlink should be used instead. */ template @@ -407,7 +407,7 @@ bool write_LAS(const std::string& fname, /*! \ingroup PkgPointSet3IODeprecated - \deprecated This function is deprecated since \cgal 5.2, + \deprecated This function is deprecated since \cgal 5.3, \link PkgPointSet3IO `CGAL::IO::write_LAS()` \endlink should be used instead. */ template diff --git a/Point_set_3/include/CGAL/Point_set_3/IO/OFF.h b/Point_set_3/include/CGAL/Point_set_3/IO/OFF.h index 3f37d0cf911..44f0c2fb584 100644 --- a/Point_set_3/include/CGAL/Point_set_3/IO/OFF.h +++ b/Point_set_3/include/CGAL/Point_set_3/IO/OFF.h @@ -103,7 +103,7 @@ bool read_OFF(const std::string& fname, CGAL::Point_set_3& point_ /*! \ingroup PkgPointSet3IODeprecated - \deprecated This function is deprecated since \cgal 5.2, + \deprecated This function is deprecated since \cgal 5.3, \link PkgPointSet3IO `CGAL::IO::read_OFF()` \endlink should be used instead. */ template @@ -220,7 +220,7 @@ bool write_OFF(const std::string& fname, const CGAL::Point_set_3& /*! \ingroup PkgPointSet3IODeprecated - \deprecated This function is deprecated since \cgal 5.2, + \deprecated This function is deprecated since \cgal 5.3, \link PkgPointSet3IO `CGAL::IO::write_OFF()` \endlink should be used instead. */ template diff --git a/Point_set_3/include/CGAL/Point_set_3/IO/PLY.h b/Point_set_3/include/CGAL/Point_set_3/IO/PLY.h index c6966fd553b..b773b87e0e7 100644 --- a/Point_set_3/include/CGAL/Point_set_3/IO/PLY.h +++ b/Point_set_3/include/CGAL/Point_set_3/IO/PLY.h @@ -391,7 +391,7 @@ bool read_PLY(const std::string& fname, CGAL::Point_set_3& point_ /*! \ingroup PkgPointSet3IODeprecated - \deprecated This function is deprecated since \cgal 5.2, + \deprecated This function is deprecated since \cgal 5.3, \link PkgPointSet3IO `CGAL::IO::read_PLY()` \endlink should be used instead. \brief reads a point set with properties from an input stream in ASCII or Binary PLY format. @@ -791,7 +791,7 @@ bool write_PLY(const std::string& fname, const CGAL::Point_set_3& /*! \ingroup PkgPointSet3IODeprecated - \deprecated This function is deprecated since \cgal 5.2, + \deprecated This function is deprecated since \cgal 5.3, \link PkgPointSet3IO `CGAL::IO::write_PLY()` \endlink should be used instead. */ template diff --git a/Point_set_3/include/CGAL/Point_set_3/IO/XYZ.h b/Point_set_3/include/CGAL/Point_set_3/IO/XYZ.h index c74a184011c..33499ce8620 100644 --- a/Point_set_3/include/CGAL/Point_set_3/IO/XYZ.h +++ b/Point_set_3/include/CGAL/Point_set_3/IO/XYZ.h @@ -102,7 +102,7 @@ bool read_XYZ(const std::string& fname, CGAL::Point_set_3& point_ /*! \ingroup PkgPointSet3IODeprecated - \deprecated This function is deprecated since \cgal 5.2, + \deprecated This function is deprecated since \cgal 5.3, \link PkgPointSet3IO `CGAL::IO::read_XYZ()` \endlink should be used instead. */ template @@ -217,7 +217,7 @@ bool write_XYZ(const std::string& fname, const CGAL::Point_set_3& /*! \ingroup PkgPointSet3IODeprecated - \deprecated This function is deprecated since \cgal 5.2, + \deprecated This function is deprecated since \cgal 5.3, \link PkgPointSet3IO `CGAL::IO::write_XYZ()` \endlink should be used instead. */ template diff --git a/Point_set_processing_3/include/CGAL/IO/read_las_points.h b/Point_set_processing_3/include/CGAL/IO/read_las_points.h index a4416b9e51b..f0830b47e3d 100644 --- a/Point_set_processing_3/include/CGAL/IO/read_las_points.h +++ b/Point_set_processing_3/include/CGAL/IO/read_las_points.h @@ -609,7 +609,7 @@ bool read_las_points(std::istream& is, ///< input stream. /** \ingroup PkgPointSetProcessing3IODeprecated - \deprecated This function is deprecated since \cgal 5.2, `CGAL::IO::read_LAS_with_properties()` should be used instead. + \deprecated This function is deprecated since \cgal 5.3, `CGAL::IO::read_LAS_with_properties()` should be used instead. */ template @@ -491,7 +491,7 @@ CGAL_DEPRECATED bool read_ply_points_with_properties(std::istream& is, OutputIte /** \ingroup PkgPointSetProcessing3IODeprecated - \deprecated This function is deprecated since \cgal 5.2, + \deprecated This function is deprecated since \cgal 5.3, \link PkgPointSetProcessing3IOPly `CGAL::IO::read_PLY()` \endlink should be used instead. */ template diff --git a/Point_set_processing_3/include/CGAL/IO/read_xyz_points.h b/Point_set_processing_3/include/CGAL/IO/read_xyz_points.h index dd9c5fc5a6a..a414ddb839a 100644 --- a/Point_set_processing_3/include/CGAL/IO/read_xyz_points.h +++ b/Point_set_processing_3/include/CGAL/IO/read_xyz_points.h @@ -427,7 +427,7 @@ bool read_xyz_points(std::istream& is, ///< input stream. /** \ingroup PkgPointSetProcessing3IODeprecated - \deprecated This function is deprecated since \cgal 5.2, + \deprecated This function is deprecated since \cgal 5.3, \link PkgPointSetProcessing3IOXyz `CGAL::IO::read_XYZ()` \endlink should be used instead. \returns `true` if reading was successful, `false` otherwise. diff --git a/Point_set_processing_3/include/CGAL/IO/write_las_points.h b/Point_set_processing_3/include/CGAL/IO/write_las_points.h index eb4b33fb763..224e45b453c 100644 --- a/Point_set_processing_3/include/CGAL/IO/write_las_points.h +++ b/Point_set_processing_3/include/CGAL/IO/write_las_points.h @@ -408,7 +408,7 @@ bool write_las_points(std::ostream& os, ///< output stream. /** \ingroup PkgPointSetProcessing3IODeprecated - \deprecated This function is deprecated since \cgal 5.2, `CGAL::IO::write_LAS_with_properties()` should be used instead. + \deprecated This function is deprecated since \cgal 5.3, `CGAL::IO::write_LAS_with_properties()` should be used instead. */ template bool write_las_points(std::ostream& os, const PointRange& points, const CGAL_BGL_NP_CLASS& np) diff --git a/Point_set_processing_3/include/CGAL/IO/write_off_points.h b/Point_set_processing_3/include/CGAL/IO/write_off_points.h index 83bf88aa5b3..8985e286e39 100644 --- a/Point_set_processing_3/include/CGAL/IO/write_off_points.h +++ b/Point_set_processing_3/include/CGAL/IO/write_off_points.h @@ -323,7 +323,7 @@ bool write_off_points(std::ostream& os, ///< output stream. /** \ingroup PkgPointSetProcessing3IODeprecated - \deprecated This function is deprecated since \cgal 5.2, + \deprecated This function is deprecated since \cgal 5.3, \link PkgPointSetProcessing3IOOff `CGAL::IO::write_OFF()` \endlink should be used instead. */ template diff --git a/Point_set_processing_3/include/CGAL/IO/write_ply_points.h b/Point_set_processing_3/include/CGAL/IO/write_ply_points.h index bbb379f84cb..8dd0e0640f6 100644 --- a/Point_set_processing_3/include/CGAL/IO/write_ply_points.h +++ b/Point_set_processing_3/include/CGAL/IO/write_ply_points.h @@ -380,7 +380,7 @@ bool write_ply_points(std::ostream& os, ///< output stream. /** \ingroup PkgPointSetProcessing3IODeprecated -\deprecated This function is deprecated since \cgal 5.2, +\deprecated This function is deprecated since \cgal 5.3, \link PkgPointSetProcessing3IOPly `CGAL::IO::write_PLY_with_properties()` \endlink should be used instead. */ template diff --git a/Point_set_processing_3/include/CGAL/IO/write_xyz_points.h b/Point_set_processing_3/include/CGAL/IO/write_xyz_points.h index a3d3babb2a1..4e2b88068f6 100644 --- a/Point_set_processing_3/include/CGAL/IO/write_xyz_points.h +++ b/Point_set_processing_3/include/CGAL/IO/write_xyz_points.h @@ -314,7 +314,7 @@ bool write_xyz_points(std::ostream& os, ///< output stream. /** \ingroup PkgPointSetProcessing3IODeprecated - \deprecated This function is deprecated since \cgal 5.2, + \deprecated This function is deprecated since \cgal 5.3, \link PkgPointSetProcessing3IOXyz `CGAL::write_XYZ()` \endlink should be used instead. */ template diff --git a/Polyhedron/doc/Polyhedron/CGAL/IO/Polyhedron_iostream.h b/Polyhedron/doc/Polyhedron/CGAL/IO/Polyhedron_iostream.h index 16a41bd1542..4af85fdec22 100644 --- a/Polyhedron/doc/Polyhedron/CGAL/IO/Polyhedron_iostream.h +++ b/Polyhedron/doc/Polyhedron/CGAL/IO/Polyhedron_iostream.h @@ -36,7 +36,7 @@ bool read_OFF( std::istream& in, Polyhedron_3& P); /*! \relates Polyhedron_3 -\deprecated This function is deprecated since \cgal 5.2, +\deprecated This function is deprecated since \cgal 5.3, \link PkgPolyhedronIOFunc `CGAL::IO::read_OFF(std::ostream&, Polyhedron_3&)` \endlink should be used instead. */ template @@ -79,7 +79,7 @@ bool write_OFF( std::ostream& out, Polyhedron_3& P); /*! \relates Polyhedron_3 -\deprecated This function is deprecated since \cgal 5.2, +\deprecated This function is deprecated since \cgal 5.3, \link PkgPolyhedronIOFunc `CGAL::IO::write_OFF(std::ostream&, Polyhedron_3&)` \endlink should be used instead. */ template diff --git a/Surface_mesh/include/CGAL/Surface_mesh/IO.h b/Surface_mesh/include/CGAL/Surface_mesh/IO.h index 1d4769c8581..55d6bbd8be8 100644 --- a/Surface_mesh/include/CGAL/Surface_mesh/IO.h +++ b/Surface_mesh/include/CGAL/Surface_mesh/IO.h @@ -30,7 +30,7 @@ namespace CGAL { /*! \ingroup PkgSurfaceMeshIOFuncDeprecated - \deprecated This function is deprecated since \cgal 5.2, `CGAL::IO::read_polygon_mesh()` should be used instead. + \deprecated This function is deprecated since \cgal 5.3, `CGAL::IO::read_polygon_mesh()` should be used instead. */ template CGAL_DEPRECATED bool read_mesh(Surface_mesh& sm, const std::string& filename) @@ -40,7 +40,7 @@ CGAL_DEPRECATED bool read_mesh(Surface_mesh& sm, const std::string& filename) /*! \ingroup PkgSurfaceMeshIOFuncDeprecated - \deprecated This function is deprecated since \cgal 5.2, `CGAL::IO::write_polygon_mesh()` should be used instead. + \deprecated This function is deprecated since \cgal 5.3, `CGAL::IO::write_polygon_mesh()` should be used instead. */ template CGAL_DEPRECATED bool write_mesh(const Surface_mesh& mesh, const std::string& filename) diff --git a/Surface_mesh/include/CGAL/Surface_mesh/IO/3MF.h b/Surface_mesh/include/CGAL/Surface_mesh/IO/3MF.h index 9a57902092c..227d0c9ec06 100644 --- a/Surface_mesh/include/CGAL/Surface_mesh/IO/3MF.h +++ b/Surface_mesh/include/CGAL/Surface_mesh/IO/3MF.h @@ -141,7 +141,7 @@ bool read_3MF(const std::string& filename, /*! \ingroup PkgSurfaceMeshIOFuncDeprecated - \deprecated This function is deprecated since \cgal 5.2, `CGAL::IO::read_3MF()` should be used instead. + \deprecated This function is deprecated since \cgal 5.3, `CGAL::IO::read_3MF()` should be used instead. */ template CGAL_DEPRECATED int read_3mf(const std::string& filename, std::vector >& output) diff --git a/Surface_mesh/include/CGAL/Surface_mesh/IO/OFF.h b/Surface_mesh/include/CGAL/Surface_mesh/IO/OFF.h index 9629fcf53e0..ea105a65cbc 100644 --- a/Surface_mesh/include/CGAL/Surface_mesh/IO/OFF.h +++ b/Surface_mesh/include/CGAL/Surface_mesh/IO/OFF.h @@ -351,7 +351,7 @@ bool read_OFF(std::istream& is, /*! \ingroup PkgSurfaceMeshIOFuncDeprecated - \deprecated This function is deprecated since \cgal 5.2, `CGAL::IO::read_OFF(std::istream&, const Surface_mesh&)` should be used instead. + \deprecated This function is deprecated since \cgal 5.3, `CGAL::IO::read_OFF(std::istream&, const Surface_mesh&)` should be used instead. */ template CGAL_DEPRECATED bool read_off(std::istream& is, Surface_mesh& sm, const CGAL_BGL_NP_CLASS& np) @@ -361,7 +361,7 @@ CGAL_DEPRECATED bool read_off(std::istream& is, Surface_mesh& sm, const C /*! \ingroup PkgSurfaceMeshIOFuncDeprecated - \deprecated This function is deprecated since \cgal 5.2, `CGAL::IO::read_OFF(std::istream&, const Surface_mesh&)` should be used instead. + \deprecated This function is deprecated since \cgal 5.3, `CGAL::IO::read_OFF(std::istream&, const Surface_mesh&)` should be used instead. */ template CGAL_DEPRECATED bool read_off(std::istream& is, Surface_mesh& sm) @@ -371,7 +371,7 @@ CGAL_DEPRECATED bool read_off(std::istream& is, Surface_mesh& sm) /*! \ingroup PkgSurfaceMeshIOFuncDeprecated - \deprecated This function is deprecated since \cgal 5.2, `CGAL::IO::read_OFF(std::istream&, const Surface_mesh&)` should be used instead. + \deprecated This function is deprecated since \cgal 5.3, `CGAL::IO::read_OFF(std::istream&, const Surface_mesh&)` should be used instead. */ template CGAL_DEPRECATED bool read_off(Surface_mesh& sm, const std::string& filename) @@ -583,7 +583,7 @@ bool write_OFF(std::ostream& os, /*! \ingroup PkgSurfaceMeshIOFuncDeprecated - \deprecated This function is deprecated since \cgal 5.2, `CGAL::IO::write_OFF(std::ostream&, const Surface_mesh&)` should be used instead. + \deprecated This function is deprecated since \cgal 5.3, `CGAL::IO::write_OFF(std::ostream&, const Surface_mesh&)` should be used instead. */ template CGAL_DEPRECATED bool write_off(std::ostream& os, const Surface_mesh& sm, const CGAL_BGL_NP_CLASS& np) @@ -593,7 +593,7 @@ CGAL_DEPRECATED bool write_off(std::ostream& os, const Surface_mesh& sm, /*! \ingroup PkgSurfaceMeshIOFuncDeprecated - \deprecated This function is deprecated since \cgal 5.2, `CGAL::IO::write_OFF(std::ostream&, const Surface_mesh&)` should be used instead. + \deprecated This function is deprecated since \cgal 5.3, `CGAL::IO::write_OFF(std::ostream&, const Surface_mesh&)` should be used instead. */ template CGAL_DEPRECATED bool write_off(std::ostream& os, const Surface_mesh& sm) @@ -603,7 +603,7 @@ CGAL_DEPRECATED bool write_off(std::ostream& os, const Surface_mesh& sm) /*! \ingroup PkgSurfaceMeshIOFuncDeprecated - \deprecated This function is deprecated since \cgal 5.2, `CGAL::IO::write_OFF(std::ostream&, const Surface_mesh&)` should be used instead. + \deprecated This function is deprecated since \cgal 5.3, `CGAL::IO::write_OFF(std::ostream&, const Surface_mesh&)` should be used instead. */ template CGAL_DEPRECATED bool write_off(const Surface_mesh& sm, const std::string& filename) diff --git a/Surface_mesh/include/CGAL/Surface_mesh/IO/PLY.h b/Surface_mesh/include/CGAL/Surface_mesh/IO/PLY.h index 9d4a9dda8bf..38db58f55dc 100644 --- a/Surface_mesh/include/CGAL/Surface_mesh/IO/PLY.h +++ b/Surface_mesh/include/CGAL/Surface_mesh/IO/PLY.h @@ -858,7 +858,7 @@ bool read_PLY(std::istream& is, Surface_mesh

& sm) /*! \ingroup PkgSurfaceMeshIOFuncDeprecated - \deprecated This function is deprecated since \cgal 5.2, `CGAL::IO::read_PLY(std::ostream&, const Surface_mesh&)` should be used instead. + \deprecated This function is deprecated since \cgal 5.3, `CGAL::IO::read_PLY(std::ostream&, const Surface_mesh&)` should be used instead. */ template CGAL_DEPRECATED bool read_ply(std::istream& is, Surface_mesh

& sm, std::string& comments) @@ -1136,7 +1136,7 @@ bool write_PLY(std::ostream& os, const Surface_mesh

& sm) /*! \ingroup PkgSurfaceMeshIOFuncDeprecated - \deprecated This function is deprecated since \cgal 5.2, `CGAL::IO::write_PLY(std::ostream&, const Surface_mesh&)` should be used instead. + \deprecated This function is deprecated since \cgal 5.3, `CGAL::IO::write_PLY(std::ostream&, const Surface_mesh&)` should be used instead. */ template From f5e5ebe39be6b7fcd979af004da8b87458a6381e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?S=C3=A9bastien=20Loriot?= Date: Tue, 4 May 2021 14:45:43 +0200 Subject: [PATCH 116/171] backward compatibility --- Stream_support/include/CGAL/IO/WKT.h | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/Stream_support/include/CGAL/IO/WKT.h b/Stream_support/include/CGAL/IO/WKT.h index 998321e9eb5..3c1cadc849d 100644 --- a/Stream_support/include/CGAL/IO/WKT.h +++ b/Stream_support/include/CGAL/IO/WKT.h @@ -577,6 +577,22 @@ bool read_WKT(std::istream& is, } // namespace IO +#ifndef CGAL_NO_DEPRECATED_CODE +using IO::read_linestring_WKT; +using IO::read_multi_linestring_WKT; +using IO::read_multi_point_WKT; +using IO::read_multi_polygon_WKT; +using IO::read_point_WKT; +using IO::read_polygon_WKT; +using IO::read_WKT; +using IO::write_linestring_WKT; +using IO::write_multi_linestring_WKT; +using IO::write_multi_point_WKT; +using IO::write_multi_polygon_WKT; +using IO::write_point_WKT; +using IO::write_polygon_WKT; +#endif + } // namespace CGAL #endif // BOOST VERSION CHECKS From cfc0fee1c49b8e3d472ca39b709374d64aeb64dc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?S=C3=A9bastien=20Loriot?= Date: Tue, 4 May 2021 14:58:55 +0200 Subject: [PATCH 117/171] add missing IO namespace --- Straight_skeleton_2/include/CGAL/IO/Dxf_stream.h | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Straight_skeleton_2/include/CGAL/IO/Dxf_stream.h b/Straight_skeleton_2/include/CGAL/IO/Dxf_stream.h index 0744fcda56b..ed0dceb3efe 100644 --- a/Straight_skeleton_2/include/CGAL/IO/Dxf_stream.h +++ b/Straight_skeleton_2/include/CGAL/IO/Dxf_stream.h @@ -73,7 +73,7 @@ protected: return Color_value(a) < Color_value(b); } - static int Color_value ( Color const& c ) + static int Color_value ( IO::Color const& c ) { return ( int(c.r()) << 16 ) + ( int(c.g()) << 8 ) + ( int(c.b()) ) ; } @@ -103,7 +103,7 @@ public: mWriter (out) ,mDefaultDxfColor (255) ,mDxfColor (255) - ,mCgalColor (white()) + ,mCgalColor (IO::white()) ,mLayer ("0") { setup_initial_color_table(); From 22be8671f7acd8d70910c36d09671782d030f0c9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?S=C3=A9bastien=20Loriot?= Date: Tue, 4 May 2021 14:59:28 +0200 Subject: [PATCH 118/171] move read_vtk_image_data to IO --- .../include/CGAL/IO/read_vtk_image_data.h | 108 ++++++++++++++++++ .../include/CGAL/read_vtk_image_data.h | 87 +------------- .../Mesh_3/mesh_3D_gray_vtk_image.cpp | 4 +- .../Plugins/Mesh_3/Io_image_plugin.cpp | 4 +- 4 files changed, 118 insertions(+), 85 deletions(-) create mode 100644 CGAL_ImageIO/include/CGAL/IO/read_vtk_image_data.h diff --git a/CGAL_ImageIO/include/CGAL/IO/read_vtk_image_data.h b/CGAL_ImageIO/include/CGAL/IO/read_vtk_image_data.h new file mode 100644 index 00000000000..ccce66f3ca6 --- /dev/null +++ b/CGAL_ImageIO/include/CGAL/IO/read_vtk_image_data.h @@ -0,0 +1,108 @@ +// Copyright (c) 2005-2008 INRIA Sophia-Antipolis (France). +// 2008 GeometryFactory +// All rights reserved. +// +// This file is part of CGAL (www.cgal.org) +// +// $URL$ +// $Id$ +// SPDX-License-Identifier: LGPL-3.0-or-later OR LicenseRef-Commercial +// +// +// Author(s) : Laurent Rineau, Pierre Alliez + +#ifndef CGAL_IO_READ_VTK_IMAGE_DATA_H +#define CGAL_IO_READ_VTK_IMAGE_DATA_H + +#include +#include + +namespace CGAL { + +namespace { + +struct VTK_to_ImageIO_type_mapper { + WORD_KIND wordKind; + SIGN sign; + unsigned int wdim; +}; + +static const VTK_to_ImageIO_type_mapper VTK_to_ImageIO_type[VTK_ID_TYPE] = + { { WK_UNKNOWN, SGN_UNKNOWN, 0}, // 0=VTK_VOID + { WK_UNKNOWN, SGN_UNKNOWN, 0}, // 1=VTK_BIT + { WK_FIXED, SGN_SIGNED, 1}, // 2=VTK_CHAR + { WK_FIXED, SGN_UNSIGNED, 1}, // 3=VTK_UNSIGNED_CHAR + { WK_FIXED, SGN_SIGNED, 2}, // 4=VTK_SHORT + { WK_FIXED, SGN_UNSIGNED, 2}, // 5=VTK_UNSIGNED_SHORT + { WK_FIXED, SGN_SIGNED, 4}, // 6=VTK_INT + { WK_FIXED, SGN_UNSIGNED, 4}, // 7=VTK_UNSIGNED_INT + { WK_FIXED, SGN_SIGNED, 8}, // 8=VTK_LONG + { WK_FIXED, SGN_UNSIGNED, 8}, // 9=VTK_UNSIGNED_LONG + { WK_FLOAT, SGN_SIGNED, 4}, // 10=VTK_FLOAT + { WK_FIXED, SGN_SIGNED, 8} // 11=VTK_DOUBLE + }; + +} //end anonymous namespace + +namespace IO { + +inline +Image_3 +read_vtk_image_data(vtkImageData* vtk_image, Image_3::Own owning = Image_3::OWN_THE_DATA) +{ + if(!vtk_image) + return Image_3(); + + _image* image = ::_initImage(); + const int* dims = vtk_image->GetDimensions(); + const double* spacing = vtk_image->GetSpacing(); + const double* offset = vtk_image->GetOrigin(); + image->vectMode = VM_SCALAR; + image->xdim = dims[0]; + image->ydim = dims[1]; + image->zdim = dims[2]; + image->vdim = 1; + image->vx = (spacing[0] == 0) ? 1 : spacing[0]; + image->vy = (spacing[1] == 0) ? 1 : spacing[1]; + image->vz = (spacing[2] == 0) ? 1 : spacing[2]; + image->tx = static_cast(offset[0]); + image->ty = static_cast(offset[1]); + image->tz = static_cast(offset[2]); + image->endianness = ::_getEndianness(); + int vtk_type = vtk_image->GetScalarType(); + if(vtk_type == VTK_SIGNED_CHAR) vtk_type = VTK_CHAR; + if(vtk_type < 0 || vtk_type > VTK_DOUBLE) + vtk_type = VTK_DOUBLE; + const VTK_to_ImageIO_type_mapper& imageio_type = + VTK_to_ImageIO_type[vtk_type]; + image->wdim = imageio_type.wdim; + image->wordKind = imageio_type.wordKind; + image->sign = imageio_type.sign; + if (!vtk_image->GetPointData() || !vtk_image->GetPointData()->GetScalars()) { + ::_freeImage(image); + return Image_3(); + } + CGAL_assertion(vtk_image->GetPointData()->GetScalars()->GetNumberOfTuples() == dims[0]*dims[1]*dims[2]); + if(owning == Image_3::OWN_THE_DATA) { + image->data = ::ImageIO_alloc(dims[0]*dims[1]*dims[2]*image->wdim); + // std::cerr << "GetNumberOfTuples()=" << vtk_image->GetPointData()->GetScalars()->GetNumberOfTuples() + // << "\nimage->size()=" << dims[0]*dims[1]*dims[2] + // << "\nwdim=" << image->wdim << '\n'; + vtk_image->GetPointData()->GetScalars()->ExportToVoidPointer(image->data); + } else { + image->data = vtk_image->GetPointData()->GetScalars()->GetVoidPointer(0); + } + + return Image_3(image, owning); +} + +} // namespace IO + +#ifndef CGAL_NO_DEPRECATED_CODE +using IO::read_vtk_image_data; +#endif + +} // namespace CGAL + + +#endif // CGAL_IO_READ_VTK_IMAGE_DATA_H diff --git a/CGAL_ImageIO/include/CGAL/read_vtk_image_data.h b/CGAL_ImageIO/include/CGAL/read_vtk_image_data.h index 527b7ba973e..78f6586325f 100644 --- a/CGAL_ImageIO/include/CGAL/read_vtk_image_data.h +++ b/CGAL_ImageIO/include/CGAL/read_vtk_image_data.h @@ -14,87 +14,12 @@ #ifndef CGAL_READ_VTK_IMAGE_DATA_H #define CGAL_READ_VTK_IMAGE_DATA_H -#include -#include - -namespace CGAL { - -namespace { - -struct VTK_to_ImageIO_type_mapper { - WORD_KIND wordKind; - SIGN sign; - unsigned int wdim; -}; - -static const VTK_to_ImageIO_type_mapper VTK_to_ImageIO_type[VTK_ID_TYPE] = - { { WK_UNKNOWN, SGN_UNKNOWN, 0}, // 0=VTK_VOID - { WK_UNKNOWN, SGN_UNKNOWN, 0}, // 1=VTK_BIT - { WK_FIXED, SGN_SIGNED, 1}, // 2=VTK_CHAR - { WK_FIXED, SGN_UNSIGNED, 1}, // 3=VTK_UNSIGNED_CHAR - { WK_FIXED, SGN_SIGNED, 2}, // 4=VTK_SHORT - { WK_FIXED, SGN_UNSIGNED, 2}, // 5=VTK_UNSIGNED_SHORT - { WK_FIXED, SGN_SIGNED, 4}, // 6=VTK_INT - { WK_FIXED, SGN_UNSIGNED, 4}, // 7=VTK_UNSIGNED_INT - { WK_FIXED, SGN_SIGNED, 8}, // 8=VTK_LONG - { WK_FIXED, SGN_UNSIGNED, 8}, // 9=VTK_UNSIGNED_LONG - { WK_FLOAT, SGN_SIGNED, 4}, // 10=VTK_FLOAT - { WK_FIXED, SGN_SIGNED, 8} // 11=VTK_DOUBLE - }; - -} //end anonymous namespace - -inline -Image_3 -read_vtk_image_data(vtkImageData* vtk_image, Image_3::Own owning = Image_3::OWN_THE_DATA) -{ - if(!vtk_image) - return Image_3(); - - _image* image = ::_initImage(); - const int* dims = vtk_image->GetDimensions(); - const double* spacing = vtk_image->GetSpacing(); - const double* offset = vtk_image->GetOrigin(); - image->vectMode = VM_SCALAR; - image->xdim = dims[0]; - image->ydim = dims[1]; - image->zdim = dims[2]; - image->vdim = 1; - image->vx = (spacing[0] == 0) ? 1 : spacing[0]; - image->vy = (spacing[1] == 0) ? 1 : spacing[1]; - image->vz = (spacing[2] == 0) ? 1 : spacing[2]; - image->tx = static_cast(offset[0]); - image->ty = static_cast(offset[1]); - image->tz = static_cast(offset[2]); - image->endianness = ::_getEndianness(); - int vtk_type = vtk_image->GetScalarType(); - if(vtk_type == VTK_SIGNED_CHAR) vtk_type = VTK_CHAR; - if(vtk_type < 0 || vtk_type > VTK_DOUBLE) - vtk_type = VTK_DOUBLE; - const VTK_to_ImageIO_type_mapper& imageio_type = - VTK_to_ImageIO_type[vtk_type]; - image->wdim = imageio_type.wdim; - image->wordKind = imageio_type.wordKind; - image->sign = imageio_type.sign; - if (!vtk_image->GetPointData() || !vtk_image->GetPointData()->GetScalars()) { - ::_freeImage(image); - return Image_3(); - } - CGAL_assertion(vtk_image->GetPointData()->GetScalars()->GetNumberOfTuples() == dims[0]*dims[1]*dims[2]); - if(owning == Image_3::OWN_THE_DATA) { - image->data = ::ImageIO_alloc(dims[0]*dims[1]*dims[2]*image->wdim); - // std::cerr << "GetNumberOfTuples()=" << vtk_image->GetPointData()->GetScalars()->GetNumberOfTuples() - // << "\nimage->size()=" << dims[0]*dims[1]*dims[2] - // << "\nwdim=" << image->wdim << '\n'; - vtk_image->GetPointData()->GetScalars()->ExportToVoidPointer(image->data); - } else { - image->data = vtk_image->GetPointData()->GetScalars()->GetVoidPointer(0); - } - - return Image_3(image, owning); -} - -} // namespace CGAL +#ifndef CGAL_NO_DEPRECATED_CODE +#include +#define CGAL_DEPRECATED_HEADER "" +#define CGAL_REPLACEMENT_HEADER "" +#include +#endif #endif // CGAL_READ_VTK_IMAGE_DATA_H diff --git a/Mesh_3/examples/Mesh_3/mesh_3D_gray_vtk_image.cpp b/Mesh_3/examples/Mesh_3/mesh_3D_gray_vtk_image.cpp index 4d2012dfa5b..4083c4c5aca 100644 --- a/Mesh_3/examples/Mesh_3/mesh_3D_gray_vtk_image.cpp +++ b/Mesh_3/examples/Mesh_3/mesh_3D_gray_vtk_image.cpp @@ -14,7 +14,7 @@ #include #include #include -#include +#include #include #include @@ -73,7 +73,7 @@ int main(int argc, char* argv[]) vtkImageData* vtk_image = smoother->GetOutput(); vtk_image->Print(std::cerr); - CGAL::Image_3 image = CGAL::read_vtk_image_data(vtk_image); + CGAL::Image_3 image = CGAL::IO::read_vtk_image_data(vtk_image); if(image.image() == 0){ std::cerr << "could not create a CGAL::Image_3 from the vtk image\n"; return 0; diff --git a/Polyhedron/demo/Polyhedron/Plugins/Mesh_3/Io_image_plugin.cpp b/Polyhedron/demo/Polyhedron/Plugins/Mesh_3/Io_image_plugin.cpp index 33248597860..1b2a4553095 100644 --- a/Polyhedron/demo/Polyhedron/Plugins/Mesh_3/Io_image_plugin.cpp +++ b/Polyhedron/demo/Polyhedron/Plugins/Mesh_3/Io_image_plugin.cpp @@ -57,7 +57,7 @@ #include #include #ifdef CGAL_USE_VTK -#include +#include #include #include @@ -1312,7 +1312,7 @@ Image* Io_image_plugin::createDCMImage(QString dirname) auto vtk_image = smoother->GetOutput(); vtk_image->Print(std::cerr); image = new Image; - *image = CGAL::read_vtk_image_data(vtk_image); // copy the image data + *image = CGAL::IO::read_vtk_image_data(vtk_image); // copy the image data #else CGAL::Three::Three::warning("You need VTK to read a DCM file"); CGAL_USE(dirname); From 12f0e412b5f2213f061d90f71bf52b24a1445995 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?S=C3=A9bastien=20Loriot?= Date: Tue, 4 May 2021 15:12:36 +0200 Subject: [PATCH 119/171] write_vtu -> write_VTU --- .../Constrained_Delaunay_triangulation_2.cpp | 4 ++-- Mesh_2/doc/Mesh_2/CGAL/IO/write_vtu.h | 6 +++--- Mesh_2/doc/Mesh_2/Mesh_2.txt | 2 +- Mesh_2/doc/Mesh_2/PackageDescription.txt | 2 +- Mesh_2/include/CGAL/IO/write_vtu.h | 20 ++++++++++++------- Mesh_3/doc/Mesh_3/CGAL/IO/output_to_vtu.h | 2 +- .../include/CGAL/IO/write_ply_points.h | 2 +- .../File_formats/Supported_file_formats.txt | 2 +- 8 files changed, 23 insertions(+), 17 deletions(-) diff --git a/GraphicsView/demo/Triangulation_2/Constrained_Delaunay_triangulation_2.cpp b/GraphicsView/demo/Triangulation_2/Constrained_Delaunay_triangulation_2.cpp index 57126af76d2..a827b567f5b 100644 --- a/GraphicsView/demo/Triangulation_2/Constrained_Delaunay_triangulation_2.cpp +++ b/GraphicsView/demo/Triangulation_2/Constrained_Delaunay_triangulation_2.cpp @@ -24,7 +24,7 @@ #include #include #include -#include +#include #if BOOST_VERSION >= 105600 && (! defined(BOOST_GCC) || BOOST_GCC >= 40500) #include #endif @@ -788,7 +788,7 @@ MainWindow::saveConstraints(QString fileName) output << cdt; else if (output) { - CGAL::IO::write_vtu(output, cdt); + CGAL::IO::write_VTU(output, cdt); } } diff --git a/Mesh_2/doc/Mesh_2/CGAL/IO/write_vtu.h b/Mesh_2/doc/Mesh_2/CGAL/IO/write_vtu.h index e9d35b05dfa..c750c1f80a8 100644 --- a/Mesh_2/doc/Mesh_2/CGAL/IO/write_vtu.h +++ b/Mesh_2/doc/Mesh_2/CGAL/IO/write_vtu.h @@ -10,11 +10,11 @@ namespace IO { //! //! \param os the stream used for writing. //! \param tr the triangulated domain to be written. -//! \param mode decides if the data should be written in binary (`IO::BINARY`) -//! or in ASCII (`IO::ASCII`). +//! \param mode decides if the data should be written in binary (`BINARY`) +//! or in ASCII (`ASCII`). //! template -void write_vtu(std::ostream& os, +void write_VTU(std::ostream& os, const CDT& tr, IO::Mode mode = IO::BINARY); } } diff --git a/Mesh_2/doc/Mesh_2/Mesh_2.txt b/Mesh_2/doc/Mesh_2/Mesh_2.txt index bc1053fdb52..9e96c31499d 100644 --- a/Mesh_2/doc/Mesh_2/Mesh_2.txt +++ b/Mesh_2/doc/Mesh_2/Mesh_2.txt @@ -328,7 +328,7 @@ in the Reference Manual. \section secMesh_2_IO Input/Output -It is possible to export the result of a meshing in VTU, using the function `CGAL::IO::write_vtu()`. +It is possible to export the result of a meshing in VTU, using the function `CGAL::IO::write_VTU()`. For more information about this format, see \ref IOStreamVTK. */ } /* namespace CGAL */ diff --git a/Mesh_2/doc/Mesh_2/PackageDescription.txt b/Mesh_2/doc/Mesh_2/PackageDescription.txt index 6919700cb23..458e3bf6b05 100644 --- a/Mesh_2/doc/Mesh_2/PackageDescription.txt +++ b/Mesh_2/doc/Mesh_2/PackageDescription.txt @@ -64,7 +64,7 @@ The package can handle intersecting input constraints and set no restriction on - `CGAL::lloyd_optimize_mesh_2` \cgalCRPSection{I/O Functions} -- `CGAL::IO::write_vtu()` +- `CGAL::IO::write_VTU()` \cgalCRPSection{Enumerations} - `CGAL::Mesh_optimization_return_code` diff --git a/Mesh_2/include/CGAL/IO/write_vtu.h b/Mesh_2/include/CGAL/IO/write_vtu.h index 5c54bab0ee4..c85e73dd80b 100644 --- a/Mesh_2/include/CGAL/IO/write_vtu.h +++ b/Mesh_2/include/CGAL/IO/write_vtu.h @@ -301,10 +301,10 @@ write_attributes_2(std::ostream& os, } template -void write_vtu_with_attributes(std::ostream& os, +void write_VTU_with_attributes(std::ostream& os, const CDT& tr, std::vector*> >& attributes, - IO::Mode mode = IO::BINARY) + IO::Mode mode = BINARY) { typedef typename CDT::Vertex_handle Vertex_handle; std::map V; @@ -336,7 +336,7 @@ void write_vtu_with_attributes(std::ostream& os, os << " \n"; std::size_t offset = 0; - const bool binary = (mode == IO::BINARY); + const bool binary = (mode == BINARY); write_cdt_points_tag(os,tr,V,binary,offset); write_cells_tag_2(os,tr,number_of_triangles, V,binary,offset); if(attributes.empty()) @@ -363,18 +363,24 @@ void write_vtu_with_attributes(std::ostream& os, } // namespace internal template -void write_vtu(std::ostream& os, +void write_VTU(std::ostream& os, const CDT& tr, - IO::Mode mode = BINARY) + Mode mode = BINARY) { std::vector*> > dummy_atts; - internal::write_vtu_with_attributes(os, tr, dummy_atts, mode); + internal::write_VTU_with_attributes(os, tr, dummy_atts, mode); } } // namespace IO #ifndef CGAL_NO_DEPRECATED_CODE -using IO::write_vtu; +template +void write_vtu(std::ostream& os, + const CDT& tr, + IO::Mode mode = IO::BINARY) +{ + IO::write_VTU(os, tr, mode); +} #endif } //end CGAL diff --git a/Mesh_3/doc/Mesh_3/CGAL/IO/output_to_vtu.h b/Mesh_3/doc/Mesh_3/CGAL/IO/output_to_vtu.h index cf96c166d83..e1d9d87e4a9 100644 --- a/Mesh_3/doc/Mesh_3/CGAL/IO/output_to_vtu.h +++ b/Mesh_3/doc/Mesh_3/CGAL/IO/output_to_vtu.h @@ -14,5 +14,5 @@ namespace IO { template void output_to_vtu(std::ostream& os, const C3T3& c3t3, - IO::Mode mode = IO::BINARY); + IO::Mode mode = BINARY); } } diff --git a/Point_set_processing_3/include/CGAL/IO/write_ply_points.h b/Point_set_processing_3/include/CGAL/IO/write_ply_points.h index 8dd0e0640f6..196a36b6fc5 100644 --- a/Point_set_processing_3/include/CGAL/IO/write_ply_points.h +++ b/Point_set_processing_3/include/CGAL/IO/write_ply_points.h @@ -125,7 +125,7 @@ template Date: Tue, 4 May 2021 15:15:40 +0200 Subject: [PATCH 120/171] rename header + add backward compatibility header --- .../CGAL/IO/{write_vtu.h => write_VTU.h} | 0 Mesh_2/include/CGAL/IO/write_VTU.h | 387 ++++++++++++++++++ Mesh_2/include/CGAL/IO/write_vtu.h | 369 +---------------- 3 files changed, 392 insertions(+), 364 deletions(-) rename Mesh_2/doc/Mesh_2/CGAL/IO/{write_vtu.h => write_VTU.h} (100%) create mode 100644 Mesh_2/include/CGAL/IO/write_VTU.h diff --git a/Mesh_2/doc/Mesh_2/CGAL/IO/write_vtu.h b/Mesh_2/doc/Mesh_2/CGAL/IO/write_VTU.h similarity index 100% rename from Mesh_2/doc/Mesh_2/CGAL/IO/write_vtu.h rename to Mesh_2/doc/Mesh_2/CGAL/IO/write_VTU.h diff --git a/Mesh_2/include/CGAL/IO/write_VTU.h b/Mesh_2/include/CGAL/IO/write_VTU.h new file mode 100644 index 00000000000..9b193000418 --- /dev/null +++ b/Mesh_2/include/CGAL/IO/write_VTU.h @@ -0,0 +1,387 @@ +// Copyright (c) 2018 GeometryFactory (France). +// Copyright (c) 2004-2006 INRIA Sophia-Antipolis (France). +// Copyright (c) 2009 INRIA Sophia-Antipolis (France). +// All rights reserved. +// +// This file is part of CGAL (www.cgal.org). +// +// $URL$ +// $Id$ +// SPDX-License-Identifier: GPL-3.0-or-later OR LicenseRef-Commercial +// +// +// Author(s) : Laurent RINEAU, Stephane Tayeb, Maxime Gimeno + +#ifndef CGAL_IO_WRITE_VTU_H +#define CGAL_IO_WRITE_VTU_H + +#include + +#include +#include +#include + +#include +#include +#include +#include + +//todo try to factorize with functors +namespace CGAL { + +// writes the appended data into the .vtu file +namespace IO { +namespace internal { + +// writes the cells tags before binary data is appended + +template +void +write_cells_tag_2(std::ostream& os, + const CDT & tr, + std::size_t number_of_triangles, + std::map & V, + bool binary, + std::size_t& offset) +{ + std::string formatattribute = + binary ? " format=\"appended\"" : " format=\"ascii\""; + + std::string typeattribute; + switch(sizeof(std::size_t)) { + case 8: typeattribute = " type=\"UInt64\""; break; + case 4: typeattribute = " type=\"UInt32\""; break; + default: CGAL_error_msg("Unknown size of std::size_t"); + } + + // Write connectivity table + os << " \n" + << " \n"; + // 3 indices (size_t) per triangle + length of the encoded data (size_t) + offset += (3 * number_of_triangles + 1) * sizeof(std::size_t); + // 2 indices (size_t) per edge (size_t) + offset += (2 * std::distance(tr.constrained_edges_begin(), + tr.constrained_edges_end())) * sizeof(std::size_t); + } + else { + os << "\">\n"; + for(typename CDT::Finite_faces_iterator + fit = tr.finite_faces_begin(), + end = tr.finite_faces_end(); + fit != end; ++fit) + { + if(fit->is_in_domain()) + { + os << V[fit->vertex(0)] << " "; + os << V[fit->vertex(2)] << " "; + os << V[fit->vertex(1)] << " "; + } + } + os << " \n"; + } + + // Write offsets + os << " \n"; + offset += (number_of_triangles +std::distance(tr.constrained_edges_begin(), + tr.constrained_edges_end()) + 1) + * sizeof(std::size_t); + // 1 offset (size_t) per cell + length of the encoded data (size_t) + } + else { + os << "\">\n"; + std::size_t cells_offset = 0; + for(typename CDT::Finite_faces_iterator fit = + tr.finite_faces_begin() ; + fit != tr.finite_faces_end() ; + ++fit ) + { + if(fit->is_in_domain()) + { + cells_offset += 3; + os << cells_offset << " "; + } + } + os << " \n"; + } + + // Write cell type (triangles == 5) + os << " \n"; + offset += number_of_triangles + + std::distance(tr.constrained_edges_begin(), + tr.constrained_edges_end()) + + sizeof(std::size_t); + // 1 unsigned char per cell + length of the encoded data (size_t) + } + else { + os << "\">\n"; + for(typename CDT::Finite_faces_iterator fit = + tr.finite_faces_begin() ; + fit != tr.finite_faces_end() ; + ++fit ) + { + if(fit->is_in_domain()) + { + os << "5 "; + } + } + os << " \n"; + } + os << " \n"; +} + +// writes the cells appended data at the end of the .vtu file +template +void +write_cells_2(std::ostream& os, + const CDT & tr, + std::size_t number_of_triangles, + std::map & V) +{ + std::vector connectivity_table; + std::vector offsets; + std::vector cell_type(number_of_triangles,5); // triangles == 5 + cell_type.resize(cell_type.size() + std::distance(tr.constrained_edges_begin(), + tr.constrained_edges_end()), 3); // line == 3 + + std::size_t off = 0; + for(typename CDT::Finite_faces_iterator + fit = tr.finite_faces_begin(), + end = tr.finite_faces_end(); + fit != end; ++fit) + { + if(fit->is_in_domain()) + { + off += 3; + offsets.push_back(off); + connectivity_table.push_back(V[fit->vertex(0)]); + connectivity_table.push_back(V[fit->vertex(2)]); + connectivity_table.push_back(V[fit->vertex(1)]); + } + } + for(typename CDT::Constrained_edges_iterator + cei = tr.constrained_edges_begin(), + end = tr.constrained_edges_end(); + cei != end; ++cei) + { + off += 2; + offsets.push_back(off); + for(int i=0; i<3; ++i) + { + if(i != cei->second) + connectivity_table.push_back(V[cei->first->vertex(i)]); + } + } + + write_vector(os,connectivity_table); + write_vector(os,offsets); + write_vector(os,cell_type); +} + +// writes the points tags before binary data is appended +template +void +write_cdt_points_tag(std::ostream& os, + const Tr & tr, + std::map & V, + bool binary, + std::size_t& offset) +{ + std::size_t dim = 2; + typedef typename Tr::Finite_vertices_iterator Finite_vertices_iterator; + typedef typename Tr::Geom_traits Gt; + typedef typename Gt::FT FT; + + std::size_t inum = 0; + std::string format = binary ? "appended" : "ascii"; + std::string type = (sizeof(FT) == 8) ? "Float64" : "Float32"; + + os << " \n" + << " \n"; + offset += 3 * tr.number_of_vertices() * sizeof(FT) + sizeof(std::size_t); + // dim coords per points + length of the encoded data (size_t) + } + else { + os << "\">\n"; + for( Finite_vertices_iterator vit = tr.finite_vertices_begin(); + vit != tr.finite_vertices_end(); + ++vit) + { + V[vit] = inum++; + os << vit->point()[0] << " "; + os << vit->point()[1] << " "; + if(dim == 3) + os << vit->point()[2] << " "; + else + os << 0.0 << " "; + } + os << " \n"; + } + os << " \n"; +} + +// writes the points appended data at the end of the .vtu file +template +void +write_cdt_points(std::ostream& os, + const Tr & tr, + std::map & V) +{ + std::size_t dim = 2; + typedef typename Tr::Finite_vertices_iterator Finite_vertices_iterator; + typedef typename Tr::Geom_traits Gt; + typedef typename Gt::FT FT; + + std::size_t inum = 0; + std::vector coordinates; + for( Finite_vertices_iterator vit = tr.finite_vertices_begin(); + vit != tr.finite_vertices_end(); + ++vit) + { + V[vit] = inum++; // binary output => the map has not been filled yet + coordinates.push_back(vit->point()[0]); + coordinates.push_back(vit->point()[1]); + coordinates.push_back(dim == 3 ? vit->point()[2] : 0.0); + } + + write_vector(os,coordinates); +} + +// writes the attribute tags before binary data is appended +template +void +write_attribute_tag_2 (std::ostream& os, + const std::string& attr_name, + const std::vector& attribute, + bool binary, + std::size_t& offset) +{ + std::string format = binary ? "appended" : "ascii"; + std::string type = (sizeof(T) == 8) ? "Float64" : "Float32"; + os << " \n"; + offset += attribute.size() * sizeof(T) + sizeof(std::size_t); + } + else { + typedef typename std::vector::const_iterator Iterator; + os << "\">\n"; + for (Iterator it = attribute.begin(); + it != attribute.end(); + ++it ) + os << *it << " "; + os << " \n"; + } +} + +// writes the attributes appended data at the end of the .vtu file +template +void +write_attributes_2(std::ostream& os, + const std::vector& att) +{ + write_vector(os,att); +} + +template +void write_VTU_with_attributes(std::ostream& os, + const CDT& tr, + std::vector*> >& attributes, + IO::Mode mode = BINARY) +{ + typedef typename CDT::Vertex_handle Vertex_handle; + std::map V; + //write header + os << "\n" + << "\n" + << " " << "\n"; + + int number_of_triangles = 0; + for(typename CDT::Finite_faces_iterator + fit = tr.finite_faces_begin(), + end = tr.finite_faces_end(); + fit != end; ++fit) + { + if(fit->is_in_domain()) ++number_of_triangles; + } + os << " \n"; + std::size_t offset = 0; + const bool binary = (mode == BINARY); + write_cdt_points_tag(os,tr,V,binary,offset); + write_cells_tag_2(os,tr,number_of_triangles, V,binary,offset); + if(attributes.empty()) + os << " \n"; + else + os << " \n"; + for(std::size_t i = 0; i< attributes.size(); ++i) + { + write_attribute_tag_2(os,attributes[i].first, *attributes[i].second, binary,offset); + } + os << " \n"; + os << " \n" + << " \n"; + if (binary) { + os << "\n_"; + write_cdt_points(os,tr,V); // write points before cells to fill the std::map V + write_cells_2(os,tr, number_of_triangles, V); + for(std::size_t i = 0; i< attributes.size(); ++i) + write_attributes_2(os, *attributes[i].second); + } + os << "\n"; +} + +} // namespace internal + +template +void write_VTU(std::ostream& os, + const CDT& tr, + Mode mode = BINARY) +{ + std::vector*> > dummy_atts; + internal::write_VTU_with_attributes(os, tr, dummy_atts, mode); +} + +} // namespace IO + +#ifndef CGAL_NO_DEPRECATED_CODE +template +void write_vtu(std::ostream& os, + const CDT& tr, + IO::Mode mode = IO::BINARY) +{ + IO::write_VTU(os, tr, mode); +} +#endif + +} //end CGAL +#endif // CGAL_IO_WRITE_VTU_H diff --git a/Mesh_2/include/CGAL/IO/write_vtu.h b/Mesh_2/include/CGAL/IO/write_vtu.h index c85e73dd80b..a76a4ecba77 100644 --- a/Mesh_2/include/CGAL/IO/write_vtu.h +++ b/Mesh_2/include/CGAL/IO/write_vtu.h @@ -17,371 +17,12 @@ #include -#include -#include -#include - -#include -#include -#include -#include - -//todo try to factorize with functors -namespace CGAL { - -// writes the appended data into the .vtu file -namespace IO { -namespace internal { - -// writes the cells tags before binary data is appended - -template -void -write_cells_tag_2(std::ostream& os, - const CDT & tr, - std::size_t number_of_triangles, - std::map & V, - bool binary, - std::size_t& offset) -{ - std::string formatattribute = - binary ? " format=\"appended\"" : " format=\"ascii\""; - - std::string typeattribute; - switch(sizeof(std::size_t)) { - case 8: typeattribute = " type=\"UInt64\""; break; - case 4: typeattribute = " type=\"UInt32\""; break; - default: CGAL_error_msg("Unknown size of std::size_t"); - } - - // Write connectivity table - os << " \n" - << " \n"; - // 3 indices (size_t) per triangle + length of the encoded data (size_t) - offset += (3 * number_of_triangles + 1) * sizeof(std::size_t); - // 2 indices (size_t) per edge (size_t) - offset += (2 * std::distance(tr.constrained_edges_begin(), - tr.constrained_edges_end())) * sizeof(std::size_t); - } - else { - os << "\">\n"; - for(typename CDT::Finite_faces_iterator - fit = tr.finite_faces_begin(), - end = tr.finite_faces_end(); - fit != end; ++fit) - { - if(fit->is_in_domain()) - { - os << V[fit->vertex(0)] << " "; - os << V[fit->vertex(2)] << " "; - os << V[fit->vertex(1)] << " "; - } - } - os << " \n"; - } - - // Write offsets - os << " \n"; - offset += (number_of_triangles +std::distance(tr.constrained_edges_begin(), - tr.constrained_edges_end()) + 1) - * sizeof(std::size_t); - // 1 offset (size_t) per cell + length of the encoded data (size_t) - } - else { - os << "\">\n"; - std::size_t cells_offset = 0; - for(typename CDT::Finite_faces_iterator fit = - tr.finite_faces_begin() ; - fit != tr.finite_faces_end() ; - ++fit ) - { - if(fit->is_in_domain()) - { - cells_offset += 3; - os << cells_offset << " "; - } - } - os << " \n"; - } - - // Write cell type (triangles == 5) - os << " \n"; - offset += number_of_triangles - + std::distance(tr.constrained_edges_begin(), - tr.constrained_edges_end()) - + sizeof(std::size_t); - // 1 unsigned char per cell + length of the encoded data (size_t) - } - else { - os << "\">\n"; - for(typename CDT::Finite_faces_iterator fit = - tr.finite_faces_begin() ; - fit != tr.finite_faces_end() ; - ++fit ) - { - if(fit->is_in_domain()) - { - os << "5 "; - } - } - os << " \n"; - } - os << " \n"; -} - -// writes the cells appended data at the end of the .vtu file -template -void -write_cells_2(std::ostream& os, - const CDT & tr, - std::size_t number_of_triangles, - std::map & V) -{ - std::vector connectivity_table; - std::vector offsets; - std::vector cell_type(number_of_triangles,5); // triangles == 5 - cell_type.resize(cell_type.size() + std::distance(tr.constrained_edges_begin(), - tr.constrained_edges_end()), 3); // line == 3 - - std::size_t off = 0; - for(typename CDT::Finite_faces_iterator - fit = tr.finite_faces_begin(), - end = tr.finite_faces_end(); - fit != end; ++fit) - { - if(fit->is_in_domain()) - { - off += 3; - offsets.push_back(off); - connectivity_table.push_back(V[fit->vertex(0)]); - connectivity_table.push_back(V[fit->vertex(2)]); - connectivity_table.push_back(V[fit->vertex(1)]); - } - } - for(typename CDT::Constrained_edges_iterator - cei = tr.constrained_edges_begin(), - end = tr.constrained_edges_end(); - cei != end; ++cei) - { - off += 2; - offsets.push_back(off); - for(int i=0; i<3; ++i) - { - if(i != cei->second) - connectivity_table.push_back(V[cei->first->vertex(i)]); - } - } - - write_vector(os,connectivity_table); - write_vector(os,offsets); - write_vector(os,cell_type); -} - -// writes the points tags before binary data is appended -template -void -write_cdt_points_tag(std::ostream& os, - const Tr & tr, - std::map & V, - bool binary, - std::size_t& offset) -{ - std::size_t dim = 2; - typedef typename Tr::Finite_vertices_iterator Finite_vertices_iterator; - typedef typename Tr::Geom_traits Gt; - typedef typename Gt::FT FT; - - std::size_t inum = 0; - std::string format = binary ? "appended" : "ascii"; - std::string type = (sizeof(FT) == 8) ? "Float64" : "Float32"; - - os << " \n" - << " \n"; - offset += 3 * tr.number_of_vertices() * sizeof(FT) + sizeof(std::size_t); - // dim coords per points + length of the encoded data (size_t) - } - else { - os << "\">\n"; - for( Finite_vertices_iterator vit = tr.finite_vertices_begin(); - vit != tr.finite_vertices_end(); - ++vit) - { - V[vit] = inum++; - os << vit->point()[0] << " "; - os << vit->point()[1] << " "; - if(dim == 3) - os << vit->point()[2] << " "; - else - os << 0.0 << " "; - } - os << " \n"; - } - os << " \n"; -} - -// writes the points appended data at the end of the .vtu file -template -void -write_cdt_points(std::ostream& os, - const Tr & tr, - std::map & V) -{ - std::size_t dim = 2; - typedef typename Tr::Finite_vertices_iterator Finite_vertices_iterator; - typedef typename Tr::Geom_traits Gt; - typedef typename Gt::FT FT; - - std::size_t inum = 0; - std::vector coordinates; - for( Finite_vertices_iterator vit = tr.finite_vertices_begin(); - vit != tr.finite_vertices_end(); - ++vit) - { - V[vit] = inum++; // binary output => the map has not been filled yet - coordinates.push_back(vit->point()[0]); - coordinates.push_back(vit->point()[1]); - coordinates.push_back(dim == 3 ? vit->point()[2] : 0.0); - } - - write_vector(os,coordinates); -} - -// writes the attribute tags before binary data is appended -template -void -write_attribute_tag_2 (std::ostream& os, - const std::string& attr_name, - const std::vector& attribute, - bool binary, - std::size_t& offset) -{ - std::string format = binary ? "appended" : "ascii"; - std::string type = (sizeof(T) == 8) ? "Float64" : "Float32"; - os << " \n"; - offset += attribute.size() * sizeof(T) + sizeof(std::size_t); - } - else { - typedef typename std::vector::const_iterator Iterator; - os << "\">\n"; - for (Iterator it = attribute.begin(); - it != attribute.end(); - ++it ) - os << *it << " "; - os << " \n"; - } -} - -// writes the attributes appended data at the end of the .vtu file -template -void -write_attributes_2(std::ostream& os, - const std::vector& att) -{ - write_vector(os,att); -} - -template -void write_VTU_with_attributes(std::ostream& os, - const CDT& tr, - std::vector*> >& attributes, - IO::Mode mode = BINARY) -{ - typedef typename CDT::Vertex_handle Vertex_handle; - std::map V; - //write header - os << "\n" - << "\n" - << " " << "\n"; - - int number_of_triangles = 0; - for(typename CDT::Finite_faces_iterator - fit = tr.finite_faces_begin(), - end = tr.finite_faces_end(); - fit != end; ++fit) - { - if(fit->is_in_domain()) ++number_of_triangles; - } - os << " \n"; - std::size_t offset = 0; - const bool binary = (mode == BINARY); - write_cdt_points_tag(os,tr,V,binary,offset); - write_cells_tag_2(os,tr,number_of_triangles, V,binary,offset); - if(attributes.empty()) - os << " \n"; - else - os << " \n"; - for(std::size_t i = 0; i< attributes.size(); ++i) - { - write_attribute_tag_2(os,attributes[i].first, *attributes[i].second, binary,offset); - } - os << " \n"; - os << " \n" - << " \n"; - if (binary) { - os << "\n_"; - write_cdt_points(os,tr,V); // write points before cells to fill the std::map V - write_cells_2(os,tr, number_of_triangles, V); - for(std::size_t i = 0; i< attributes.size(); ++i) - write_attributes_2(os, *attributes[i].second); - } - os << "\n"; -} - -} // namespace internal - -template -void write_VTU(std::ostream& os, - const CDT& tr, - Mode mode = BINARY) -{ - std::vector*> > dummy_atts; - internal::write_VTU_with_attributes(os, tr, dummy_atts, mode); -} - -} // namespace IO - #ifndef CGAL_NO_DEPRECATED_CODE -template -void write_vtu(std::ostream& os, - const CDT& tr, - IO::Mode mode = IO::BINARY) -{ - IO::write_VTU(os, tr, mode); -} +#include + +#define CGAL_DEPRECATED_HEADER "" +#define CGAL_REPLACEMENT_HEADER "" +#include #endif -} //end CGAL #endif // CGAL_WRITE_VTU_H From 2060e0e352b1105c4eff6375492c28bfc16e1da4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?S=C3=A9bastien=20Loriot?= Date: Tue, 4 May 2021 15:58:29 +0200 Subject: [PATCH 121/171] move LAS_property in IO --- .../CGAL/IO/Arr_with_history_iostream.h | 2 +- .../Point_set_processing_3/orient_scanlines_example.cpp | 4 ++-- .../examples/Point_set_processing_3/read_las_example.cpp | 8 ++++---- Point_set_processing_3/include/CGAL/IO/read_las_points.h | 5 +++-- Point_set_processing_3/include/CGAL/IO/write_las_points.h | 6 +++--- 5 files changed, 13 insertions(+), 12 deletions(-) diff --git a/Arrangement_on_surface_2/doc/Arrangement_on_surface_2/CGAL/IO/Arr_with_history_iostream.h b/Arrangement_on_surface_2/doc/Arrangement_on_surface_2/CGAL/IO/Arr_with_history_iostream.h index 5c4b626e80b..084ec73f6bd 100644 --- a/Arrangement_on_surface_2/doc/Arrangement_on_surface_2/CGAL/IO/Arr_with_history_iostream.h +++ b/Arrangement_on_surface_2/doc/Arrangement_on_surface_2/CGAL/IO/Arr_with_history_iostream.h @@ -1,6 +1,6 @@ namespace CGAL { -namespace OI { +namespace IO { /*! \ingroup PkgArrangementOnSurface2Read diff --git a/Point_set_processing_3/examples/Point_set_processing_3/orient_scanlines_example.cpp b/Point_set_processing_3/examples/Point_set_processing_3/orient_scanlines_example.cpp index aec42159da3..f537390a6be 100644 --- a/Point_set_processing_3/examples/Point_set_processing_3/orient_scanlines_example.cpp +++ b/Point_set_processing_3/examples/Point_set_processing_3/orient_scanlines_example.cpp @@ -37,9 +37,9 @@ int main (int argc, char** argv) (ifile, std::back_inserter (points), CGAL::IO::make_las_point_reader (Point_map()), std::make_pair (Scan_angle_map(), - CGAL::LAS_property::Scan_angle()), + CGAL::IO::LAS_property::Scan_angle()), std::make_pair (Scanline_id_map(), - CGAL::LAS_property::Scan_direction_flag()))) + CGAL::IO::LAS_property::Scan_direction_flag()))) { std::cerr << "Can't read " << fname << std::endl; return EXIT_FAILURE; diff --git a/Point_set_processing_3/examples/Point_set_processing_3/read_las_example.cpp b/Point_set_processing_3/examples/Point_set_processing_3/read_las_example.cpp index 7296f39637d..11d266a2d5b 100644 --- a/Point_set_processing_3/examples/Point_set_processing_3/read_las_example.cpp +++ b/Point_set_processing_3/examples/Point_set_processing_3/read_las_example.cpp @@ -25,10 +25,10 @@ int main(int argc, char*argv[]) CGAL::IO::make_las_point_reader(CGAL::First_of_pair_property_map()), std::make_tuple(CGAL::Second_of_pair_property_map(), CGAL::Construct_array(), - CGAL::LAS_property::R(), - CGAL::LAS_property::G(), - CGAL::LAS_property::B(), - CGAL::LAS_property::I()))) + CGAL::IO::LAS_property::R(), + CGAL::IO::LAS_property::G(), + CGAL::IO::LAS_property::B(), + CGAL::IO::LAS_property::I()))) { std::cerr << "Error: cannot read file " << fname << std::endl; return EXIT_FAILURE; diff --git a/Point_set_processing_3/include/CGAL/IO/read_las_points.h b/Point_set_processing_3/include/CGAL/IO/read_las_points.h index f0830b47e3d..16147ef98a2 100644 --- a/Point_set_processing_3/include/CGAL/IO/read_las_points.h +++ b/Point_set_processing_3/include/CGAL/IO/read_las_points.h @@ -64,6 +64,8 @@ namespace CGAL { +namespace IO { + /// \cond SKIP_IN_MANUAL namespace LAS_property { namespace Id { @@ -125,8 +127,6 @@ typedef Base I; } /// \endcond -namespace IO { - /** \ingroup PkgPointSetProcessing3IOLas @@ -581,6 +581,7 @@ bool read_LAS(const std::string& fname, OutputIterator output) /// \cond SKIP_IN_MANUAL using IO::make_las_point_reader; +namespace LAS_property = IO::LAS_property; template point_property, + IO::LAS_property::X, + IO::LAS_property::Y, + IO::LAS_property::Z> point_property, PropertyHandler&& ... properties) { return IO::write_LAS_with_properties(os, points, point_property, std::forward(properties)...); From c863ee6754c7907a5bf8a55256985cd1b464c1da Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?S=C3=A9bastien=20Loriot?= Date: Tue, 4 May 2021 17:28:52 +0200 Subject: [PATCH 122/171] fix check_headers compilation issues --- Classification/include/CGAL/Classification/Label.h | 1 + .../include/CGAL/Mesh_3/Mesh_complex_3_in_triangulation_3_fwd.h | 2 ++ 2 files changed, 3 insertions(+) diff --git a/Classification/include/CGAL/Classification/Label.h b/Classification/include/CGAL/Classification/Label.h index 7b9e5b2a72f..7801942afcb 100644 --- a/Classification/include/CGAL/Classification/Label.h +++ b/Classification/include/CGAL/Classification/Label.h @@ -15,6 +15,7 @@ #include #include +#include #include namespace CGAL { diff --git a/Installation/include/CGAL/Mesh_3/Mesh_complex_3_in_triangulation_3_fwd.h b/Installation/include/CGAL/Mesh_3/Mesh_complex_3_in_triangulation_3_fwd.h index d0202553abc..6d644faa1ec 100644 --- a/Installation/include/CGAL/Mesh_3/Mesh_complex_3_in_triangulation_3_fwd.h +++ b/Installation/include/CGAL/Mesh_3/Mesh_complex_3_in_triangulation_3_fwd.h @@ -13,6 +13,8 @@ /// \file Mesh_complex_3_in_triangulation_3_fwd.h /// Forward declarations of the Mesh_3 package. +#include + #ifndef DOXYGEN_RUNNING namespace CGAL { From fbbf3863af731096c8a75c50481226cb317f445b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?S=C3=A9bastien=20Loriot?= Date: Tue, 4 May 2021 18:18:41 +0200 Subject: [PATCH 123/171] remove extra IO --- Mesh_2/include/CGAL/IO/write_VTU.h | 2 +- Point_set_processing_3/include/CGAL/IO/read_ply_points.h | 8 ++++---- Point_set_processing_3/include/CGAL/IO/read_points.h | 2 +- Point_set_processing_3/include/CGAL/IO/write_ply_points.h | 4 ++-- Point_set_processing_3/include/CGAL/IO/write_points.h | 2 +- Stream_support/include/CGAL/IO/GOCAD.h | 6 +++--- 6 files changed, 12 insertions(+), 12 deletions(-) diff --git a/Mesh_2/include/CGAL/IO/write_VTU.h b/Mesh_2/include/CGAL/IO/write_VTU.h index 9b193000418..e965633b05a 100644 --- a/Mesh_2/include/CGAL/IO/write_VTU.h +++ b/Mesh_2/include/CGAL/IO/write_VTU.h @@ -304,7 +304,7 @@ template void write_VTU_with_attributes(std::ostream& os, const CDT& tr, std::vector*> >& attributes, - IO::Mode mode = BINARY) + Mode mode = BINARY) { typedef typename CDT::Vertex_handle Vertex_handle; std::map V; diff --git a/Point_set_processing_3/include/CGAL/IO/read_ply_points.h b/Point_set_processing_3/include/CGAL/IO/read_ply_points.h index 020d2bfae99..76d88a2129c 100644 --- a/Point_set_processing_3/include/CGAL/IO/read_ply_points.h +++ b/Point_set_processing_3/include/CGAL/IO/read_ply_points.h @@ -150,7 +150,7 @@ bool read_PLY_with_properties(std::istream& is, if(!is) return false; - IO::internal::PLY_reader reader(true); + internal::PLY_reader reader(true); if(!(reader.init(is))) { @@ -160,13 +160,13 @@ bool read_PLY_with_properties(std::istream& is, for(std::size_t i = 0; i < reader.number_of_elements(); ++ i) { - IO::internal::PLY_element& element = reader.element(i); + internal::PLY_element& element = reader.element(i); for(std::size_t j = 0; j < element.number_of_items(); ++ j) { for(std::size_t k = 0; k < element.number_of_properties(); ++ k) { - IO::internal::PLY_read_number* property = element.property(k); + internal::PLY_read_number* property = element.property(k); property->get(is); if(is.fail()) @@ -176,7 +176,7 @@ bool read_PLY_with_properties(std::istream& is, if(element.name() == "vertex" || element.name() == "vertices") { OutputValueType new_element; - IO::internal::process_properties(element, new_element, std::forward(properties)...); + internal::process_properties(element, new_element, std::forward(properties)...); *(output ++) = new_element; } } diff --git a/Point_set_processing_3/include/CGAL/IO/read_points.h b/Point_set_processing_3/include/CGAL/IO/read_points.h index 6dec414fccc..b9c31d64f69 100644 --- a/Point_set_processing_3/include/CGAL/IO/read_points.h +++ b/Point_set_processing_3/include/CGAL/IO/read_points.h @@ -90,7 +90,7 @@ bool read_points(const std::string& fname, PointOutputIterator output, const NamedParameters& np) { - const std::string ext = IO::internal::get_file_extension(fname); + const std::string ext = internal::get_file_extension(fname); if(ext == "xyz" || ext == "pwn") return read_XYZ(fname, output, np); diff --git a/Point_set_processing_3/include/CGAL/IO/write_ply_points.h b/Point_set_processing_3/include/CGAL/IO/write_ply_points.h index 196a36b6fc5..881585449e1 100644 --- a/Point_set_processing_3/include/CGAL/IO/write_ply_points.h +++ b/Point_set_processing_3/include/CGAL/IO/write_ply_points.h @@ -129,13 +129,13 @@ template (properties)...); + internal::output_property_header (os, std::forward(properties)...); os << "end_header" << std::endl; // Write positions + normals for(typename PointRange::const_iterator it = points.begin(); it != points.end(); it++) - IO::internal::output_properties (os, it, std::forward(properties)...); + internal::output_properties (os, it, std::forward(properties)...); return !os.fail(); } diff --git a/Point_set_processing_3/include/CGAL/IO/write_points.h b/Point_set_processing_3/include/CGAL/IO/write_points.h index faccb3b08b1..61d64bfe8b1 100644 --- a/Point_set_processing_3/include/CGAL/IO/write_points.h +++ b/Point_set_processing_3/include/CGAL/IO/write_points.h @@ -102,7 +102,7 @@ bool write_points(const std::string& fname, #endif ) { - const std::string ext = IO::internal::get_file_extension(fname); + const std::string ext = internal::get_file_extension(fname); if(ext == "xyz" || ext == "pwn") return write_XYZ(fname, points, np); diff --git a/Stream_support/include/CGAL/IO/GOCAD.h b/Stream_support/include/CGAL/IO/GOCAD.h index ab838f15b9e..325fa2cacf2 100644 --- a/Stream_support/include/CGAL/IO/GOCAD.h +++ b/Stream_support/include/CGAL/IO/GOCAD.h @@ -376,7 +376,7 @@ bool write_GOCAD(std::ostream& os, #endif ) { - return IO::internal::write_GOCAD(os, "anonymous", points, polygons, np); + return internal::write_GOCAD(os, "anonymous", points, polygons, np); } /// \cond SKIP_IN_MANUAL @@ -385,7 +385,7 @@ template bool write_GOCAD(std::ostream& os, const PointRange& points, const PolygonRange& polygons, typename boost::enable_if >::type* = nullptr) { - return IO::internal::write_GOCAD(os, "anonymous", points, polygons, parameters::all_default()); + return internal::write_GOCAD(os, "anonymous", points, polygons, parameters::all_default()); } /// \endcond @@ -431,7 +431,7 @@ bool write_GOCAD(const std::string& fname, { std::ofstream os(fname); CGAL::set_mode(os, CGAL::IO::ASCII); - return IO::internal::write_GOCAD(os, fname.c_str(), points, polygons, np); + return internal::write_GOCAD(os, fname.c_str(), points, polygons, np); } /// \cond SKIP_IN_MANUAL From 699c87daef9322e53da8d3b6e1b74d7260c1d812 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?S=C3=A9bastien=20Loriot?= Date: Tue, 4 May 2021 19:08:10 +0200 Subject: [PATCH 124/171] fix IO namespace --- Stream_support/include/CGAL/IO/GOCAD.h | 2 -- 1 file changed, 2 deletions(-) diff --git a/Stream_support/include/CGAL/IO/GOCAD.h b/Stream_support/include/CGAL/IO/GOCAD.h index 325fa2cacf2..b4eca5aa3b4 100644 --- a/Stream_support/include/CGAL/IO/GOCAD.h +++ b/Stream_support/include/CGAL/IO/GOCAD.h @@ -276,7 +276,6 @@ bool read_GOCAD(const std::string& fname, PointRange& points, PolygonRange& poly //////////////////////////////////////////////////////////////////////////////////////////////////// // Write -namespace IO { namespace internal { template Date: Wed, 5 May 2021 06:46:57 +0100 Subject: [PATCH 125/171] Add null comparison operators to vector_iterator --- STL_Extension/include/CGAL/vector.h | 2 ++ 1 file changed, 2 insertions(+) diff --git a/STL_Extension/include/CGAL/vector.h b/STL_Extension/include/CGAL/vector.h index e4c1a5bca28..c10a8fdd53a 100644 --- a/STL_Extension/include/CGAL/vector.h +++ b/STL_Extension/include/CGAL/vector.h @@ -109,6 +109,8 @@ public: tmp += n; return tmp.operator*(); } + bool operator==( std::nullptr_t) const { return ptr == nullptr; } + bool operator!=( std::nullptr_t) const { return ptr != nullptr; } bool operator< ( const Self& i) const { return ( ptr < i.ptr); } bool operator> ( const Self& i) const { return i < *this; } bool operator<=( const Self& i) const { return !(i < *this); } From 4e519a3c7ab6e902f0fb5f6903800c104664e169 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?S=C3=A9bastien=20Loriot?= Date: Wed, 5 May 2021 13:15:37 +0200 Subject: [PATCH 126/171] move documented IO functions in IO namespace --- .../Algebraic_foundations/fraction_traits.cpp | 2 +- .../implicit_interoperable_dispatch.cpp | 2 +- .../include/CGAL/Needs_parens_as_product.h | 4 +- .../Algebraic_kernel_d/Algebraic_real_d_1.h | 8 +- .../Algebraic_kernel_d/Curve_analysis_2.h | 4 +- .../Algebraic_kernel_d/Event_line_builder.h | 2 +- .../CGAL/Algebraic_kernel_d/Xy_coordinate_2.h | 4 +- .../Algebraic_kernel_d/Curve_analysis_2.cpp | 2 +- .../CGAL/_test_algebraic_curve_kernel_2.h | 2 +- .../include/CGAL/_test_algebraic_kernel_1.h | 12 +- .../include/CGAL/_test_cls_alpha_shape_3.h | 2 +- .../CGAL/_test_weighted_alpha_shape_3.h | 2 +- .../Apollonius_graph_2_impl.h | 24 +- .../Apollonius_graph_hierarchy_2_impl.h | 16 +- .../xalci/include/misc.h | 2 +- .../xalci/misc.cpp | 2 +- .../xalci/xalci.cpp | 6 +- .../algebraic_curves.cpp | 2 +- .../rational_functions.cpp | 2 +- ...tional_functions_rational_coefficients.cpp | 2 +- .../unbounded_rational_functions.cpp | 2 +- .../include/CGAL/Arr_enums.h | 4 +- .../CGAL/Arr_rat_arc/Algebraic_point_2.h | 2 +- .../CGAL/Curved_kernel_via_analysis_2/Arc_2.h | 6 +- .../Curved_kernel_via_analysis_2_functors.h | 2 +- .../Curved_kernel_via_analysis_2/Point_2.h | 6 +- .../gfx/Curve_renderer_2.h | 4 +- .../include/CGAL/IO/Arr_text_formatter.h | 8 +- .../test_batched_point_location.cpp | 4 +- .../test_construction.cpp | 4 +- .../Arrangement_on_surface_2/test_overlay.cpp | 4 +- .../test_point_location.cpp | 4 +- .../test_point_location_dynamic.cpp | 4 +- .../Arrangement_on_surface_2/test_traits.cpp | 4 +- .../test_vertical_decomposition.cpp | 4 +- BGL/include/CGAL/boost/graph/IO/GOCAD.h | 4 +- BGL/include/CGAL/boost/graph/IO/OBJ.h | 4 +- BGL/include/CGAL/boost/graph/IO/PLY.h | 8 +- BGL/include/CGAL/boost/graph/IO/STL.h | 8 +- BGL/include/CGAL/boost/graph/IO/VTK.h | 2 +- BGL/test/BGL/test_bgl_read_write.cpp | 10 +- .../include/CGAL/General_polygon_2.h | 2 +- .../Min_circle_2/min_circle_homogeneous_2.cpp | 2 +- .../examples/Min_ellipse_2/min_ellipse_2.cpp | 2 +- .../Min_sphere_d/min_sphere_homogeneous_3.cpp | 2 +- .../rectangular_p_center_2.cpp | 2 +- Bounding_volumes/include/CGAL/Min_annulus_d.h | 6 +- .../Min_circle_2/Min_circle_2_adapterC2.h | 6 +- .../Min_circle_2/Min_circle_2_adapterH2.h | 6 +- .../CGAL/Min_circle_2/Min_circle_2_impl.h | 6 +- .../Min_circle_2/Optimisation_circle_2_impl.h | 8 +- .../Min_ellipse_2/Min_ellipse_2_adapterC2.h | 6 +- .../Min_ellipse_2/Min_ellipse_2_adapterH2.h | 6 +- .../CGAL/Min_ellipse_2/Min_ellipse_2_impl.h | 6 +- .../Optimisation_ellipse_2_impl.h | 8 +- .../CGAL/Min_sphere_d/Min_sphere_d_impl.h | 6 +- .../test/Bounding_volumes/min_sphere_test.cpp | 4 +- ...nimum_enclosing_quadrilateral_2_test_C.cpp | 2 +- ...nimum_enclosing_quadrilateral_2_test_H.cpp | 2 +- .../rectangular_p_center_2_random1_test.cpp | 2 +- .../rectangular_p_center_2_random2_test.cpp | 2 +- .../Bounding_volumes/test_Min_annulus_d.h | 2 +- .../test/Bounding_volumes/test_Min_circle.cpp | 8 +- .../Bounding_volumes/test_Min_ellipse_2.cpp | 8 +- .../include/CGAL/Cartesian/Weighted_point_2.h | 4 +- .../include/CGAL/Cartesian/Weighted_point_3.h | 4 +- .../include/CGAL/IO/Dxf_reader.h | 16 +- .../include/CGAL/IO/Dxf_reader_doubles.h | 10 +- .../Classification/gis_tutorial_example.cpp | 14 +- .../Convex_hull_2/ch_from_cin_to_cout.cpp | 4 +- .../Convex_hull_2/ch_graham_anderson.cpp | 4 +- .../examples/Convex_hull_2/ch_timing.cpp | 2 +- .../test/Convex_hull_d/chull_d-test.cpp | 2 +- .../test/Convex_hull_d/delaunay_d-test.cpp | 2 +- .../Convex_hull_d/include/CGAL/test_macros.h | 2 +- Generator/test/Generator/rcs_test.cpp | 2 +- .../include/CGAL/IO/Geomview_stream_impl.h | 2 +- .../test/Hash_map/include/CGAL/test_macros.h | 2 +- .../CGAL/Homogeneous/Weighted_point_2.h | 4 +- .../CGAL/Homogeneous/Weighted_point_3.h | 4 +- .../bbox_other_do_intersect_test.cpp | 2 +- .../Intersections_3/test_intersections_3.cpp | 2 +- .../Jet_fitting_3/Mesh_estimation.cpp | 2 +- .../Jet_fitting_3/Single_estimation.cpp | 2 +- .../examples/Kernel_23/MyPointC2_iostream.h | 4 +- Kernel_23/examples/Kernel_23/MySegmentC2.h | 2 +- Kernel_23/include/CGAL/Bbox_2.h | 6 +- Kernel_23/include/CGAL/Bbox_3.h | 8 +- Kernel_23/include/CGAL/Circle_2.h | 6 +- Kernel_23/include/CGAL/Direction_2.h | 12 +- Kernel_23/include/CGAL/Direction_3.h | 12 +- Kernel_23/include/CGAL/Iso_cuboid_3.h | 2 +- Kernel_23/include/CGAL/Iso_rectangle_2.h | 2 +- Kernel_23/include/CGAL/Line_2.h | 6 +- Kernel_23/include/CGAL/Line_3.h | 2 +- Kernel_23/include/CGAL/Plane_3.h | 6 +- Kernel_23/include/CGAL/Point_2.h | 10 +- Kernel_23/include/CGAL/Point_3.h | 10 +- Kernel_23/include/CGAL/Ray_2.h | 4 +- Kernel_23/include/CGAL/Ray_3.h | 4 +- Kernel_23/include/CGAL/Segment_2.h | 2 +- Kernel_23/include/CGAL/Segment_3.h | 2 +- Kernel_23/include/CGAL/Sphere_3.h | 8 +- Kernel_23/include/CGAL/Tetrahedron_3.h | 2 +- Kernel_23/include/CGAL/Triangle_2.h | 2 +- Kernel_23/include/CGAL/Triangle_3.h | 2 +- Kernel_23/include/CGAL/Vector_2.h | 10 +- Kernel_23/include/CGAL/Vector_3.h | 10 +- Kernel_23/include/CGAL/Weighted_point_2.h | 10 +- Kernel_23/include/CGAL/Weighted_point_3.h | 10 +- Kernel_d/include/CGAL/Kernel_d/Matrix__.h | 4 +- Kernel_d/include/CGAL/Kernel_d/Pair_d.h | 4 +- Kernel_d/include/CGAL/Kernel_d/Tuple_d.h | 4 +- Kernel_d/include/CGAL/Kernel_d/Vector__.h | 4 +- .../test/Kernel_d/Linear_algebra-test.cpp | 2 +- .../test/Kernel_d/include/CGAL/test_macros.h | 2 +- Kernel_d/test/Kernel_d/interface-test.cpp | 2 +- Kernel_d/test/Kernel_d/intersection-test.cpp | 2 +- .../gmap_linear_cell_complex_3.cpp | 2 +- .../linear_cell_complex_3.cpp | 2 +- .../CGAL/Linear_cell_complex_constructors.h | 6 +- .../archive/applications/slivers_exuder.cpp | 2 +- .../include/CGAL/Compact_mesh_cell_base_3.h | 12 +- Mesh_3/include/CGAL/IO/File_binary_mesh_3.h | 6 +- Mesh_3/include/CGAL/Mesh_3/Dump_c3t3.h | 2 +- .../CGAL/Mesh_3/Mesh_surface_cell_base_3.h | 6 +- .../CGAL/Mesh_3/Protect_edges_sizing_field.h | 18 +- .../Sizing_field_with_aabb_tree.h | 16 +- Mesh_3/include/CGAL/Mesh_cell_base_3.h | 4 +- Mesh_3/include/CGAL/Mesh_vertex_base_3.h | 4 +- .../Mesh_3/Handle_IO_for_pair_of_int.h | 6 +- .../CGAL/internal/Mesh_3/indices_management.h | 24 +- Mesh_3/test/Mesh_3/test_c3t3_io.cpp | 18 +- .../Modular_arithmetic/modular_filter.cpp | 2 +- Nef_2/examples/Nef_2/nef_2_exploration.cpp | 2 +- .../CGAL/Filtered_extended_homogeneous.h | 8 +- Nef_2/include/CGAL/Nef_2/PM_checker.h | 4 +- Nef_2/include/CGAL/Nef_2/PM_const_decorator.h | 2 +- Nef_2/include/CGAL/Nef_2/PM_io_parser.h | 8 +- Nef_2/include/CGAL/Nef_2/Polynomial.h | 4 +- Nef_2/test/Nef_2/EPoint-test.cpp | 6 +- Nef_2/test/Nef_2/Nef_polyhedron_2-test.cpp | 2 +- Nef_2/test/Nef_2/Polynomial-test.cpp | 2 +- Nef_2/test/Nef_2/include/CGAL/test_macros.h | 2 +- Nef_3/archive/SNC_walker/SNC_walker_demo.cpp | 2 +- Nef_3/archive/SNC_walker/SNC_walking.nw | 2 +- Nef_3/include/CGAL/Nef_3/Halfedge.h | 2 +- Nef_3/include/CGAL/Nef_3/Pluecker_line_3.h | 2 +- Nef_3/include/CGAL/Nef_3/SHalfedge.h | 2 +- Nef_3/include/CGAL/Nef_3/SHalfloop.h | 2 +- Nef_3/include/CGAL/Nef_3/SNC_decorator.h | 2 +- Nef_3/include/CGAL/Nef_3/SNC_io_parser.h | 4 +- Nef_3/include/CGAL/Nef_3/Vertex.h | 2 +- Nef_S2/include/CGAL/Nef_S2/SM_checker.h | 4 +- Nef_S2/include/CGAL/Nef_S2/SM_io_parser.h | 4 +- Nef_S2/include/CGAL/Nef_S2/SM_items.h | 6 +- Nef_S2/test/Nef_S2/Nef_polyhedron_S2-test.cpp | 2 +- Nef_S2/test/Nef_S2/Sphere_geometry-test.cpp | 2 +- .../CGAL/NewKernel_d/Wrapper/Point_d.h | 8 +- .../CGAL/NewKernel_d/Wrapper/Vector_d.h | 8 +- .../NewKernel_d/Wrapper/Weighted_point_d.h | 6 +- Number_types/include/CGAL/CORE_BigRat.h | 6 +- Number_types/include/CGAL/Counted_number.h | 4 +- Number_types/include/CGAL/GMP/Gmpfr_type.h | 2 +- Number_types/include/CGAL/Interval_nt.h | 4 +- Number_types/include/CGAL/Sqrt_extension/io.h | 20 +- Number_types/include/CGAL/leda_rational.h | 6 +- Number_types/include/CGAL/leda_real.h | 4 +- .../test/Number_types/CORE_BigInt.cpp | 24 +- .../test/Number_types/CORE_BigRat.cpp | 24 +- .../test/Number_types/Sqrt_extension.h | 54 ++-- .../test/Number_types/include/CGAL/_test_io.h | 12 +- Number_types/test/Number_types/ioformat.cpp | 4 +- Number_types/test/Number_types/mpq_class.cpp | 2 +- .../include/CGAL/Periodic_2_offset_2.h | 4 +- .../include/CGAL/Periodic_2_triangulation_2.h | 34 +-- .../include/interface_test.h | 10 +- .../Protect_edges_sizing_field.h | 20 +- .../include/CGAL/Periodic_3_offset_3.h | 4 +- .../include/CGAL/Periodic_3_triangulation_3.h | 16 +- .../CGAL/_test_cls_periodic_3_alpha_shape_3.h | 2 +- .../_test_cls_periodic_3_triangulation_3.h | 20 +- Point_set_3/include/CGAL/Point_set_3/IO/LAS.h | 4 +- Point_set_3/include/CGAL/Point_set_3/IO/PLY.h | 10 +- .../clustering_example.cpp | 2 +- .../orient_scanlines_example.cpp | 2 +- .../Point_set_processing_3/property_map.cpp | 2 +- .../write_ply_points_example.cpp | 4 +- .../include/CGAL/IO/read_las_points.h | 4 +- .../include/CGAL/IO/read_off_points.h | 6 +- .../include/CGAL/IO/read_ply_points.h | 4 +- .../include/CGAL/IO/write_las_points.h | 4 +- .../include/CGAL/IO/write_ply_points.h | 6 +- .../test_read_write_point_set.cpp | 6 +- .../tutorial_example.cpp | 2 +- Polygon/examples/Polygon/Example.cpp | 2 +- .../CGAL/General_polygon_with_holes_2.h | 2 +- .../include/CGAL/Polygon_2/Polygon_2_impl.h | 2 +- Polygon/include/CGAL/Polygon_with_holes_2.h | 2 +- Polygon/test/Polygon/AlgorithmTest.cpp | 6 +- Polygon/test/Polygon/PolygonTest.cpp | 12 +- Polygon/test/Polygon/SimplicityTest.cpp | 2 +- .../triangulate_hole_with_cdt_2_test.cpp | 4 +- .../Polyhedron/Plugins/IO/PLY_io_plugin.cpp | 2 +- .../Polyhedron/Plugins/IO/STL_io_plugin.cpp | 4 +- .../Plugins/Mesh_3/C3t3_io_plugin.cpp | 14 +- Polyhedron/demo/Polyhedron/Scene_c3t3_item.h | 2 +- .../Scene_points_with_normal_item.cpp | 2 +- .../include/CGAL/IO/read_surf_trianglemesh.h | 2 +- .../examples/Polyhedron/polyhedron_copy.cpp | 12 +- .../Polyhedron/polyhedron_prog_normals.cpp | 2 +- .../Polyhedron/polyhedron_prog_off.cpp | 2 +- .../Polyhedron/polyhedron_prog_planes.cpp | 2 +- .../Polyhedron/polyhedron_prog_tetra.cpp | 2 +- .../Polyhedron/polyhedron_prog_vector.cpp | 2 +- .../polyhedron_prog_vertex_normal.cpp | 2 +- Polyhedron/include/CGAL/IO/print_OFF.h | 4 +- .../test/Polynomial/Polynomial_traits_d.cpp | 20 +- .../Polynomial/coefficient_access.cpp | 2 +- .../examples/Polynomial/construction.cpp | 2 +- Polynomial/examples/Polynomial/degree.cpp | 2 +- .../Polynomial/gcd_up_to_constant_factor.cpp | 2 +- .../examples/Polynomial/subresultants.cpp | 2 +- Polynomial/examples/Polynomial/substitute.cpp | 2 +- Polynomial/examples/Polynomial/swap_move.cpp | 2 +- .../include/CGAL/Polynomial/Polynomial_type.h | 24 +- Polynomial/test/Polynomial/Interpolator.cpp | 2 +- .../test/Polynomial/Polynomial_using_core.cpp | 2 +- .../test/Polynomial/Polynomial_using_leda.cpp | 2 +- .../include/CGAL/test_modular_gcd.h | 6 +- .../test/Polynomial/modular_gcd_utils.cpp | 2 +- Polynomial/test/Polynomial/polynomial_gcd.cpp | 4 +- .../test/Polynomial/polynomial_utils.cpp | 2 +- Polynomial/test/Polynomial/resultant.cpp | 2 +- Polynomial/test/Polynomial/test_polynomial.h | 20 +- .../test_polynomial_Coercion_traits.cpp | 2 +- .../test/Polynomial/test_subresultants.cpp | 8 +- .../include/CGAL/Polytope_distance_d.h | 4 +- .../test_Polytope_distance_d.h | 2 +- QP_solver/include/CGAL/QP_models.h | 2 +- STL_Extension/include/CGAL/algorithm.h | 5 +- .../test_lexcompare_outputrange.cpp | 2 +- .../Segment_Delaunay_graph_2_impl.h | 80 +++--- .../Segment_Delaunay_graph_hierarchy_2_impl.h | 18 +- .../include/CGAL/Polychain_2.h | 6 +- ...ent_Delaunay_graph_Linf_hierarchy_2_impl.h | 18 +- ...enchmark_region_growing_on_point_set_2.cpp | 2 +- ...enchmark_region_growing_on_point_set_3.cpp | 2 +- .../region_growing_on_point_set_2.cpp | 6 +- .../region_growing_on_point_set_3.cpp | 2 +- .../region_growing_on_polygon_mesh.cpp | 2 +- .../test_region_growing_basic.cpp | 2 +- .../test_region_growing_on_cube.cpp | 2 +- ...est_region_growing_on_degenerated_mesh.cpp | 2 +- .../test_region_growing_on_point_set_2.cpp | 2 +- ...on_growing_on_point_set_2_with_sorting.cpp | 2 +- .../test_region_growing_on_point_set_3.cpp | 2 +- ...on_growing_on_point_set_3_with_sorting.cpp | 2 +- .../test_region_growing_on_polygon_mesh.cpp | 2 +- ...n_growing_on_polygon_mesh_with_sorting.cpp | 2 +- .../benchmark/Spatial_searching/binary.cpp | 8 +- .../benchmark/Spatial_searching/nn3cgal.cpp | 2 +- .../Spatial_searching/nn3nanoflan.cpp | 4 +- .../test/Straight_skeleton_2/test_sls.cpp | 2 +- .../Straight_skeleton_2/test_sls_offset.cpp | 2 +- .../Straight_skeleton_2/test_sls_simple.cpp | 2 +- .../benchmark/Stream_support/read_doubles.cpp | 2 +- .../doc/Stream_support/IOstream.txt | 18 +- .../doc/Stream_support/PackageDescription.txt | 20 +- .../examples/Stream_support/iv2off.cpp | 4 +- Stream_support/include/CGAL/IO/GOCAD.h | 4 +- Stream_support/include/CGAL/IO/OBJ.h | 4 +- .../CGAL/IO/OBJ/File_writer_wavefront.h | 4 +- .../include/CGAL/IO/OFF/File_scanner_OFF.h | 4 +- .../include/CGAL/IO/OFF/File_writer_OFF.h | 8 +- .../include/CGAL/IO/OI/File_writer_inventor.h | 2 +- Stream_support/include/CGAL/IO/PLY.h | 8 +- .../include/CGAL/IO/PLY/PLY_reader.h | 2 +- .../include/CGAL/IO/PLY/PLY_writer.h | 8 +- Stream_support/include/CGAL/IO/STL.h | 8 +- .../include/CGAL/IO/VRML/File_writer_VRML_2.h | 2 +- Stream_support/include/CGAL/IO/VTK.h | 4 +- Stream_support/include/CGAL/IO/io.h | 255 ++++++++++-------- .../test/Stream_support/test_PLY.cpp | 2 +- .../test/Stream_support/test_STL.cpp | 2 +- .../test/Stream_support/test_ioformat.cpp | 4 +- .../test/Stream_support/test_support.cpp | 12 +- Surface_mesh/test/Surface_mesh/sm_ply_io.cpp | 2 +- .../extensive_parameterization_test.cpp | 2 +- .../Complex_2_in_triangulation_cell_base_3.h | 4 +- .../CGAL/Point_with_psc_localisation.h | 4 +- .../include/CGAL/Point_with_surface_index.h | 4 +- .../CGAL/Triangulation_data_structure_2.h | 18 +- .../test/TDS_2/include/CGAL/_test_cls_tds_2.h | 22 +- .../CGAL/Triangulation_data_structure_3.h | 30 +-- .../tetrahedral_remeshing_io.h | 8 +- Triangulation/include/CGAL/Triangulation.h | 8 +- .../CGAL/Triangulation_data_structure.h | 20 +- .../include/CGAL/Triangulation_ds_full_cell.h | 4 +- .../include/CGAL/Triangulation_ds_vertex.h | 4 +- .../include/CGAL/Triangulation_full_cell.h | 4 +- Triangulation/test/Triangulation/test_tds.cpp | 4 +- .../CGAL/Constrained_triangulation_2.h | 2 +- .../_test_cls_constrained_triangulation_2.h | 26 +- .../CGAL/_test_cls_regular_hierarchy_2.h | 4 +- .../CGAL/_test_cls_regular_triangulation_2.h | 10 +- .../include/CGAL/_test_cls_triangulation_2.h | 36 +-- .../CGAL/_test_cls_triangulation_short_2.h | 8 +- .../include/CGAL/Triangulation_3.h | 14 +- .../include/CGAL/_test_cls_triangulation_3.h | 4 +- .../Union_find/include/CGAL/test_macros.h | 2 +- 311 files changed, 1084 insertions(+), 1052 deletions(-) diff --git a/Algebraic_foundations/examples/Algebraic_foundations/fraction_traits.cpp b/Algebraic_foundations/examples/Algebraic_foundations/fraction_traits.cpp index 0cf448daab4..3d85eed1e86 100644 --- a/Algebraic_foundations/examples/Algebraic_foundations/fraction_traits.cpp +++ b/Algebraic_foundations/examples/Algebraic_foundations/fraction_traits.cpp @@ -17,7 +17,7 @@ int main(){ CGAL::Gmpq fraction(4,5); FT::Decompose()(fraction,numerator,denominator); - CGAL::set_pretty_mode(std::cout); + CGAL::IO::set_pretty_mode(std::cout); std::cout << "decompose fraction: "<< std::endl; std::cout << "fraction : " << fraction << std::endl; std::cout << "numerator : " << numerator<< std::endl; diff --git a/Algebraic_foundations/examples/Algebraic_foundations/implicit_interoperable_dispatch.cpp b/Algebraic_foundations/examples/Algebraic_foundations/implicit_interoperable_dispatch.cpp index a781e8fc700..0393f435966 100644 --- a/Algebraic_foundations/examples/Algebraic_foundations/implicit_interoperable_dispatch.cpp +++ b/Algebraic_foundations/examples/Algebraic_foundations/implicit_interoperable_dispatch.cpp @@ -31,7 +31,7 @@ binary_func(const A& a , const B& b){ } int main(){ - CGAL::set_pretty_mode(std::cout); + CGAL::IO::set_pretty_mode(std::cout); // Function call for ImplicitInteroperable types std::cout<< binary_func(double(3), int(5)) << std::endl; diff --git a/Algebraic_foundations/include/CGAL/Needs_parens_as_product.h b/Algebraic_foundations/include/CGAL/Needs_parens_as_product.h index a55040176d1..1aa82b277e3 100644 --- a/Algebraic_foundations/include/CGAL/Needs_parens_as_product.h +++ b/Algebraic_foundations/include/CGAL/Needs_parens_as_product.h @@ -56,9 +56,9 @@ public: Output_rep(const T& tt) : t(tt) {} std::ostream& operator () (std::ostream& out) const { if ( needs_parens_as_product(t)) { - return out << "(" << oformat(t) << ")"; + return out << "(" << IO::oformat(t) << ")"; } else { - return out << oformat(t); + return out << IO::oformat(t); } } }; diff --git a/Algebraic_kernel_d/include/CGAL/Algebraic_kernel_d/Algebraic_real_d_1.h b/Algebraic_kernel_d/include/CGAL/Algebraic_kernel_d/Algebraic_real_d_1.h index 11900ce8bfa..7d2ed6298e2 100644 --- a/Algebraic_kernel_d/include/CGAL/Algebraic_kernel_d/Algebraic_real_d_1.h +++ b/Algebraic_kernel_d/include/CGAL/Algebraic_kernel_d/Algebraic_real_d_1.h @@ -436,8 +436,8 @@ std::ostream& operator << (std::ostream& os, const CGAL::internal::Algebraic_real_d_1& x){ os << "[" << x.polynomial() - << ",[" << oformat(x.low()) - << " , " << oformat(x.high()) << " ]]"; + << ",[" << IO::oformat(x.low()) + << " , " << IO::oformat(x.high()) << " ]]"; return os; } @@ -458,9 +458,9 @@ operator >> (std::istream& is, is >> poly; swallow(is, ',');// read the "," swallow(is, '[');// read the "," - is >> iformat(low); + is >> IO::iformat(low); swallow(is, ',');// read the "," - is >> iformat(high); + is >> IO::iformat(high); swallow(is, ']');// read the "]" swallow(is, ']');// read the "]" x = ALGNUM(poly, low, high); diff --git a/Algebraic_kernel_d/include/CGAL/Algebraic_kernel_d/Curve_analysis_2.h b/Algebraic_kernel_d/include/CGAL/Algebraic_kernel_d/Curve_analysis_2.h index 34290afa7e2..339fe371068 100644 --- a/Algebraic_kernel_d/include/CGAL/Algebraic_kernel_d/Curve_analysis_2.h +++ b/Algebraic_kernel_d/include/CGAL/Algebraic_kernel_d/Curve_analysis_2.h @@ -2417,7 +2417,7 @@ std::ostream& operator<< ( typedef typename Curve::Asymptote_y Asymptote_y; - switch (::CGAL::get_mode(out)) { + switch (::CGAL::IO::get_mode(out)) { case ::CGAL::IO::PRETTY: { out << "--------------- Analysis results ---------------" << std::endl; @@ -2514,7 +2514,7 @@ std::istream& operator>> ( std::istream& is, Curve_analysis_2< AlgebraicKernelWithAnalysis_2, Rep_ >& curve) { - CGAL_precondition(CGAL::is_ascii(is)); + CGAL_precondition(CGAL::IO::is_ascii(is)); typedef AlgebraicKernelWithAnalysis_2 Algebraic_kernel_with_analysis_2; diff --git a/Algebraic_kernel_d/include/CGAL/Algebraic_kernel_d/Event_line_builder.h b/Algebraic_kernel_d/include/CGAL/Algebraic_kernel_d/Event_line_builder.h index 75ca4b777f1..978fb2a5e88 100644 --- a/Algebraic_kernel_d/include/CGAL/Algebraic_kernel_d/Event_line_builder.h +++ b/Algebraic_kernel_d/include/CGAL/Algebraic_kernel_d/Event_line_builder.h @@ -441,7 +441,7 @@ protected: } /* #if CGAL_ACK_DEBUG_FLAG - ::CGAL::set_ascii_mode(CGAL_ACK_DEBUG_PRINT); + ::CGAL::IO::set_ascii_mode(CGAL_ACK_DEBUG_PRINT); CGAL_ACK_DEBUG_PRINT << "Stha: " << (*seq_it) << std::endl; #endif */ diff --git a/Algebraic_kernel_d/include/CGAL/Algebraic_kernel_d/Xy_coordinate_2.h b/Algebraic_kernel_d/include/CGAL/Algebraic_kernel_d/Xy_coordinate_2.h index 5172dcf80e6..7167c9f8a12 100644 --- a/Algebraic_kernel_d/include/CGAL/Algebraic_kernel_d/Xy_coordinate_2.h +++ b/Algebraic_kernel_d/include/CGAL/Algebraic_kernel_d/Xy_coordinate_2.h @@ -675,7 +675,7 @@ template < class AlgebraicCurveKernel_2, class Rep> std::ostream& operator<< (std::ostream& os, const Xy_coordinate_2& pt) { - switch (::CGAL::get_mode(os)) { + switch (::CGAL::IO::get_mode(os)) { case ::CGAL::IO::PRETTY: { os << "[x-coord: " << CGAL::to_double(pt.x()) << "; curve: " << pt.curve().polynomial_2() << @@ -703,7 +703,7 @@ std::istream& operator >> ( std::istream& is, Xy_coordinate_2< AlgebraicCurveKernel_2, Rep_>& pt) { - CGAL_precondition(CGAL::is_ascii(is)); + CGAL_precondition(CGAL::IO::is_ascii(is)); // this instance's first template argument typedef AlgebraicCurveKernel_2 Algebraic_curve_kernel_2; diff --git a/Algebraic_kernel_d/test/Algebraic_kernel_d/Curve_analysis_2.cpp b/Algebraic_kernel_d/test/Algebraic_kernel_d/Curve_analysis_2.cpp index 0f1667d105e..2f55d2cd933 100644 --- a/Algebraic_kernel_d/test/Algebraic_kernel_d/Curve_analysis_2.cpp +++ b/Algebraic_kernel_d/test/Algebraic_kernel_d/Curve_analysis_2.cpp @@ -162,7 +162,7 @@ template void test_routine() { CGAL_ACK_DEBUG_PRINT << "P[3(0,P[2(0,-2)(2,2)])(1,P[1(1,-1)])(3,P[1(1,-6)])]" << std::endl; #endif f=from_string("P[3(0,P[2(0,-2)(2,2)])(1,P[1(1,-1)])(3,P[1(1,-6)])]"); - ::CGAL::set_pretty_mode(std::cout); + ::CGAL::IO::set_pretty_mode(std::cout); curve=construct_curve_2(f); assert(curve.number_of_status_lines_with_event()==1); assert(number_of_objects(curve)==2); diff --git a/Algebraic_kernel_d/test/Algebraic_kernel_d/include/CGAL/_test_algebraic_curve_kernel_2.h b/Algebraic_kernel_d/test/Algebraic_kernel_d/include/CGAL/_test_algebraic_curve_kernel_2.h index d9fb58b9663..dca16083212 100644 --- a/Algebraic_kernel_d/test/Algebraic_kernel_d/include/CGAL/_test_algebraic_curve_kernel_2.h +++ b/Algebraic_kernel_d/test/Algebraic_kernel_d/include/CGAL/_test_algebraic_curve_kernel_2.h @@ -92,7 +92,7 @@ void test_algebraic_curve_kernel_2() { Poly_2 polys[ACK_2_n_polys]; - ::CGAL::set_mode(std::cerr, ::CGAL::IO::PRETTY); + ::CGAL::IO::set_mode(std::cerr, ::CGAL::IO::PRETTY); //std::cerr << "constructing curves..\n"; for(int i = 0; i < ACK_2_n_polys; i++) { diff --git a/Algebraic_kernel_d/test/Algebraic_kernel_d/include/CGAL/_test_algebraic_kernel_1.h b/Algebraic_kernel_d/test/Algebraic_kernel_d/include/CGAL/_test_algebraic_kernel_1.h index d087b945a6b..ac9ea88f5e5 100644 --- a/Algebraic_kernel_d/test/Algebraic_kernel_d/include/CGAL/_test_algebraic_kernel_1.h +++ b/Algebraic_kernel_d/test/Algebraic_kernel_d/include/CGAL/_test_algebraic_kernel_1.h @@ -291,7 +291,7 @@ void test_algebraic_kernel_1(const AlgebraicKernel_d_1& ak_1){ assert(compare_1(bound,Algebraic_real_1(2)) == SMALLER ); } - CGAL::set_pretty_mode(std::cerr); + CGAL::IO::set_pretty_mode(std::cerr); // Approximations bool all_right = true; @@ -408,13 +408,13 @@ void test_algebraic_kernel_1(const AlgebraicKernel_d_1& ak_1){ #define CGAL_TEST_ALGEBRAIC_REAL_IO(_f) \ alg1=_f; \ - ss<>CGAL::iformat(alg2); \ - CGAL_assertion(!ss.fail()); \ + ss>>CGAL::IO::iformat(alg2); \ + CGAL_assertion(!ss.fail()); \ ss.clear(); \ assert(alg1==alg2) - // Note: after the reading ss>>CGAL::iformat(alg2) the state of ss can + // Note: after the reading ss>>CGAL::IO::iformat(alg2) the state of ss can // have the eofbit. The C++ norm says if one tries to write to a stream // with eofbit, then the failbit will be set. That is why one must // clear the iostate with ss.clear(). @@ -422,7 +422,7 @@ void test_algebraic_kernel_1(const AlgebraicKernel_d_1& ak_1){ Algebraic_real_1 alg1,alg2; std::stringstream ss; - CGAL::set_ascii_mode(ss); + CGAL::IO::set_ascii_mode(ss); // test construction from int, Coefficient and Bound CGAL_TEST_ALGEBRAIC_REAL_IO(construct_algebraic_real_1(int(2))); diff --git a/Alpha_shapes_3/test/Alpha_shapes_3/include/CGAL/_test_cls_alpha_shape_3.h b/Alpha_shapes_3/test/Alpha_shapes_3/include/CGAL/_test_cls_alpha_shape_3.h index dc01d1e9392..d71e8aef398 100644 --- a/Alpha_shapes_3/test/Alpha_shapes_3/include/CGAL/_test_cls_alpha_shape_3.h +++ b/Alpha_shapes_3/test/Alpha_shapes_3/include/CGAL/_test_cls_alpha_shape_3.h @@ -23,7 +23,7 @@ template bool file_input(std::ifstream& is, std::list& L, int nb=0) { - CGAL::set_ascii_mode(is); + CGAL::IO::set_ascii_mode(is); int n; is >> n; if (nb != 0 && nb <= n) n=nb; diff --git a/Alpha_shapes_3/test/Alpha_shapes_3/include/CGAL/_test_weighted_alpha_shape_3.h b/Alpha_shapes_3/test/Alpha_shapes_3/include/CGAL/_test_weighted_alpha_shape_3.h index c8a099743c5..51d677c3774 100644 --- a/Alpha_shapes_3/test/Alpha_shapes_3/include/CGAL/_test_weighted_alpha_shape_3.h +++ b/Alpha_shapes_3/test/Alpha_shapes_3/include/CGAL/_test_weighted_alpha_shape_3.h @@ -22,7 +22,7 @@ template bool file_input(std::ifstream& is, std::list& L) { - CGAL::set_ascii_mode(is); + CGAL::IO::set_ascii_mode(is); int n; is >> n; std::cout << "Reading " << n << " points" << std::endl; diff --git a/Apollonius_graph_2/include/CGAL/Apollonius_graph_2/Apollonius_graph_2_impl.h b/Apollonius_graph_2/include/CGAL/Apollonius_graph_2/Apollonius_graph_2_impl.h index cad9b199647..e5988f9f77b 100644 --- a/Apollonius_graph_2/include/CGAL/Apollonius_graph_2/Apollonius_graph_2_impl.h +++ b/Apollonius_graph_2/include/CGAL/Apollonius_graph_2/Apollonius_graph_2_impl.h @@ -1966,7 +1966,7 @@ Apollonius_graph_2::file_output(std::ostream& os) const CGAL_assertion( n >= 1 ); - if( is_ascii(os) ) { + if( IO::is_ascii(os) ) { os << n << ' ' << m << ' ' << dimension() << std::endl; } else { os << n << m << dimension(); @@ -1980,24 +1980,24 @@ Apollonius_graph_2::file_output(std::ostream& os) const V[infinite_vertex()] = inum++; // finite vertices - if (is_ascii(os)) os << std::endl; + if (IO::is_ascii(os)) os << std::endl; for (Finite_vertices_iterator vit = finite_vertices_begin(); vit != finite_vertices_end(); ++vit) { V[vit] = inum++; os << vit->site(); - if ( is_ascii(os) ) { os << ' '; } + if ( IO::is_ascii(os) ) { os << ' '; } os << vit->number_of_hidden_sites(); typename Vertex::Hidden_sites_iterator hit; for (hit = vit->hidden_sites_begin(); hit != vit->hidden_sites_end(); ++hit) { - if ( is_ascii(os) ) { os << ' '; } + if ( IO::is_ascii(os) ) { os << ' '; } os << *hit; } // write non-combinatorial info of the vertex // os << *vit ; - if ( is_ascii(os) ) { os << std::endl; } + if ( IO::is_ascii(os) ) { os << std::endl; } } - if ( is_ascii(os) ) { os << std::endl; } + if ( IO::is_ascii(os) ) { os << std::endl; } // vertices of the faces inum = 0; @@ -2007,25 +2007,25 @@ Apollonius_graph_2::file_output(std::ostream& os) const F[fit] = inum++; for(int j = 0; j < dim ; ++j) { os << V[ fit->vertex(j) ]; - if( is_ascii(os) ) { os << ' '; } + if( IO::is_ascii(os) ) { os << ' '; } } // write non-combinatorial info of the face // os << *fit ; - if( is_ascii(os) ) { os << std::endl; } + if( IO::is_ascii(os) ) { os << std::endl; } } - if( is_ascii(os) ) { os << std::endl; } + if( IO::is_ascii(os) ) { os << std::endl; } // neighbor pointers of the faces for( All_faces_iterator it = all_faces_begin(); it != all_faces_end(); ++it) { for(int j = 0; j < dimension()+1; ++j){ os << F[ it->neighbor(j) ]; - if( is_ascii(os) ) { os << ' '; } + if( IO::is_ascii(os) ) { os << ' '; } } - if( is_ascii(os) ) { os << std::endl; } + if( IO::is_ascii(os) ) { os << std::endl; } } - if ( is_ascii(os) ) { os << std::endl; } + if ( IO::is_ascii(os) ) { os << std::endl; } } diff --git a/Apollonius_graph_2/include/CGAL/Apollonius_graph_2/Apollonius_graph_hierarchy_2_impl.h b/Apollonius_graph_2/include/CGAL/Apollonius_graph_2/Apollonius_graph_hierarchy_2_impl.h index 2b9e0acf72c..ba13844eb0e 100644 --- a/Apollonius_graph_2/include/CGAL/Apollonius_graph_2/Apollonius_graph_hierarchy_2_impl.h +++ b/Apollonius_graph_2/include/CGAL/Apollonius_graph_2/Apollonius_graph_hierarchy_2_impl.h @@ -484,7 +484,7 @@ file_output(std::ostream& os) const // write each level of the hierarchy for (unsigned int i = 0; i < ag_hierarchy_2__maxlevel; ++i) { hierarchy[i]->file_output(os); - if ( is_ascii(os) ) { os << std::endl << std::endl; } + if ( IO::is_ascii(os) ) { os << std::endl << std::endl; } } Vertex_map* V = new Vertex_map[ag_hierarchy_2__maxlevel]; @@ -520,22 +520,22 @@ file_output(std::ostream& os) const } // write up and down pointer info - if ( is_ascii(os) ) { os << std::endl << std::endl; } + if ( IO::is_ascii(os) ) { os << std::endl << std::endl; } for (unsigned int i = 0; i < ag_hierarchy_2__maxlevel; ++i) { os << i; - if ( is_ascii(os) ) { os << " "; } + if ( IO::is_ascii(os) ) { os << " "; } os << hierarchy[i]->number_of_vertices(); - if ( is_ascii(os) ) { os << std::endl; } + if ( IO::is_ascii(os) ) { os << std::endl; } for (Finite_vertices_iterator vit = hierarchy[i]->finite_vertices_begin(); vit != hierarchy[i]->finite_vertices_end(); ++vit) { os << V[i][vit]; - if ( is_ascii(os) ) { os << " "; } + if ( IO::is_ascii(os) ) { os << " "; } os << V_down[i][vit]; - if ( is_ascii(os) ) { os << " "; } + if ( IO::is_ascii(os) ) { os << " "; } os << V_up[i][vit]; - if ( is_ascii(os) ) { os << std::endl; } + if ( IO::is_ascii(os) ) { os << std::endl; } } - if ( is_ascii(os) ) { os << std::endl << std::endl; } + if ( IO::is_ascii(os) ) { os << std::endl << std::endl; } } delete[] V; diff --git a/Arrangement_on_surface_2/archive/demo/Arr_algebraic_segment_traits_2/xalci/include/misc.h b/Arrangement_on_surface_2/archive/demo/Arr_algebraic_segment_traits_2/xalci/include/misc.h index 101637c9cba..d24cb75dfcd 100644 --- a/Arrangement_on_surface_2/archive/demo/Arr_algebraic_segment_traits_2/xalci/include/misc.h +++ b/Arrangement_on_surface_2/archive/demo/Arr_algebraic_segment_traits_2/xalci/include/misc.h @@ -56,7 +56,7 @@ public: int i = 0; for(InputIterator it = begin;it != end; it++, i++) { std::stringstream curr_item; - ::CGAL::set_pretty_mode(curr_item); + ::CGAL::IO::set_pretty_mode(curr_item); curr_item << i << "th: "; curr_item << (*it); curve_list->insertItem(curr_item.str()); diff --git a/Arrangement_on_surface_2/archive/demo/Arr_algebraic_segment_traits_2/xalci/misc.cpp b/Arrangement_on_surface_2/archive/demo/Arr_algebraic_segment_traits_2/xalci/misc.cpp index 2ba998c0c0f..ce1e65f4b03 100644 --- a/Arrangement_on_surface_2/archive/demo/Arr_algebraic_segment_traits_2/xalci/misc.cpp +++ b/Arrangement_on_surface_2/archive/demo/Arr_algebraic_segment_traits_2/xalci/misc.cpp @@ -237,7 +237,7 @@ void xAlci_main_window::oc_rasterize_click() oc_activate_layers(); } else { // CGAL::set_error_behaviour(CGAL::THROW_EXCEPTION); - ::CGAL::set_pretty_mode(std::cout); + ::CGAL::IO::set_pretty_mode(std::cout); Poly_int2 f; if(!input_poly(f, oc_input->text().ascii())) diff --git a/Arrangement_on_surface_2/archive/demo/Arr_algebraic_segment_traits_2/xalci/xalci.cpp b/Arrangement_on_surface_2/archive/demo/Arr_algebraic_segment_traits_2/xalci/xalci.cpp index 3aa7f377f4b..9d0bd268bde 100644 --- a/Arrangement_on_surface_2/archive/demo/Arr_algebraic_segment_traits_2/xalci/xalci.cpp +++ b/Arrangement_on_surface_2/archive/demo/Arr_algebraic_segment_traits_2/xalci/xalci.cpp @@ -194,16 +194,16 @@ void xAlci_main_window::oc_analyse_click() Poly_int2 ress = fxx*fy*fy - ((fx*fy*fxy)*Poly_int1(2,0)) + fyy*fx*fx, res1 = f*fx, res2 = f*fy; - CGAL::set_pretty_mode(std::cout); + CGAL::IO::set_pretty_mode(std::cout); std::cout << "curv:\n " << ress << "\n\n"; std::cout << "fx:\n " << fx << "\n\n"; std::cout << "fy:\n " << fy << "\n\n"; std::cout << "f*fx:\n " << res1 << "\n\n"; std::cout << "f*fy:\n " << res2 << "\n\n"; - CGAL::set_ascii_mode(std::cout); + CGAL::IO::set_ascii_mode(std::cout); std::cout << "f:\n " << f << "\n\n"; - CGAL::set_pretty_mode(std::cout); + CGAL::IO::set_pretty_mode(std::cout); std::cout << "f:\n " << f << "\n\n"; timer.reset(); diff --git a/Arrangement_on_surface_2/examples/Arrangement_on_surface_2/algebraic_curves.cpp b/Arrangement_on_surface_2/examples/Arrangement_on_surface_2/algebraic_curves.cpp index d6680e4e8c1..a7896581e3f 100644 --- a/Arrangement_on_surface_2/examples/Arrangement_on_surface_2/algebraic_curves.cpp +++ b/Arrangement_on_surface_2/examples/Arrangement_on_surface_2/algebraic_curves.cpp @@ -32,7 +32,7 @@ typedef Arr_traits_2::Polynomial_2 Polynomial_2; int main() { // For nice printouts - CGAL::set_pretty_mode(std::cout); + CGAL::IO::set_pretty_mode(std::cout); Arr_traits_2 arr_traits; diff --git a/Arrangement_on_surface_2/examples/Arrangement_on_surface_2/rational_functions.cpp b/Arrangement_on_surface_2/examples/Arrangement_on_surface_2/rational_functions.cpp index 8b1e47def30..eaef4cd9829 100644 --- a/Arrangement_on_surface_2/examples/Arrangement_on_surface_2/rational_functions.cpp +++ b/Arrangement_on_surface_2/examples/Arrangement_on_surface_2/rational_functions.cpp @@ -29,7 +29,7 @@ typedef CGAL::Arrangement_2 Arrangement_2; int main () { - CGAL::set_pretty_mode(std::cout); // for nice printouts. + CGAL::IO::set_pretty_mode(std::cout); // for nice printouts. // create a polynomial representing x .-) Polynomial_1 x = CGAL::shift(Polynomial_1(1),1); diff --git a/Arrangement_on_surface_2/examples/Arrangement_on_surface_2/rational_functions_rational_coefficients.cpp b/Arrangement_on_surface_2/examples/Arrangement_on_surface_2/rational_functions_rational_coefficients.cpp index 3b9f7e391c2..f45fb97c76f 100644 --- a/Arrangement_on_surface_2/examples/Arrangement_on_surface_2/rational_functions_rational_coefficients.cpp +++ b/Arrangement_on_surface_2/examples/Arrangement_on_surface_2/rational_functions_rational_coefficients.cpp @@ -31,7 +31,7 @@ typedef CGAL::Arrangement_2 Arrangement_2; int main () { - CGAL::set_pretty_mode(std::cout); // for nice printouts. + CGAL::IO::set_pretty_mode(std::cout); // for nice printouts. // Traits class object Traits_2 traits; diff --git a/Arrangement_on_surface_2/examples/Arrangement_on_surface_2/unbounded_rational_functions.cpp b/Arrangement_on_surface_2/examples/Arrangement_on_surface_2/unbounded_rational_functions.cpp index 1f30067dd0d..c5cc697f99d 100644 --- a/Arrangement_on_surface_2/examples/Arrangement_on_surface_2/unbounded_rational_functions.cpp +++ b/Arrangement_on_surface_2/examples/Arrangement_on_surface_2/unbounded_rational_functions.cpp @@ -29,7 +29,7 @@ typedef CGAL::Arrangement_2 Arrangement_2; int main () { - CGAL::set_pretty_mode(std::cout); // for nice printouts. + CGAL::IO::set_pretty_mode(std::cout); // for nice printouts. // Traits class object AK1 ak1; diff --git a/Arrangement_on_surface_2/include/CGAL/Arr_enums.h b/Arrangement_on_surface_2/include/CGAL/Arr_enums.h index 9c52c3b5800..a3425cd2fc6 100644 --- a/Arrangement_on_surface_2/include/CGAL/Arr_enums.h +++ b/Arrangement_on_surface_2/include/CGAL/Arr_enums.h @@ -155,7 +155,7 @@ OutputStream& operator<<( OutputStream& os, const Arr_parameter_space& ps) { - switch (::CGAL::get_mode(os)) { + switch (::CGAL::IO::get_mode(os)) { case ::CGAL::IO::PRETTY: switch(ps) { case CGAL::ARR_LEFT_BOUNDARY: @@ -195,7 +195,7 @@ InputStream& operator>>( InputStream& is, Arr_parameter_space& ps) { - CGAL_precondition(CGAL::is_ascii(is)); + CGAL_precondition(CGAL::IO::is_ascii(is)); int i; is >> i; diff --git a/Arrangement_on_surface_2/include/CGAL/Arr_rat_arc/Algebraic_point_2.h b/Arrangement_on_surface_2/include/CGAL/Arr_rat_arc/Algebraic_point_2.h index f3a101db437..460bbe432a7 100644 --- a/Arrangement_on_surface_2/include/CGAL/Arr_rat_arc/Algebraic_point_2.h +++ b/Arrangement_on_surface_2/include/CGAL/Arr_rat_arc/Algebraic_point_2.h @@ -237,7 +237,7 @@ public: std::ostream& print (std::ostream& os) const { std::pair double_p; - switch(::CGAL::get_mode(os)) + switch(::CGAL::IO::get_mode(os)) { case ::CGAL::IO::PRETTY: double_p = this->to_double(); diff --git a/Arrangement_on_surface_2/include/CGAL/Curved_kernel_via_analysis_2/Arc_2.h b/Arrangement_on_surface_2/include/CGAL/Curved_kernel_via_analysis_2/Arc_2.h index dcdb6dbbc74..cfbbcc23784 100644 --- a/Arrangement_on_surface_2/include/CGAL/Curved_kernel_via_analysis_2/Arc_2.h +++ b/Arrangement_on_surface_2/include/CGAL/Curved_kernel_via_analysis_2/Arc_2.h @@ -3164,7 +3164,7 @@ public: */ void write(std::ostream& os) const { - switch (::CGAL::get_mode(os)) { + switch (::CGAL::IO::get_mode(os)) { case ::CGAL::IO::PRETTY: os << "arc@" << this->id() << "[(sup@" << this->curve().id(); if (this->is_vertical()) { @@ -3214,7 +3214,7 @@ public: */ void read(std::istream& is) { - CGAL_precondition(CGAL::is_ascii(is)); + CGAL_precondition(CGAL::IO::is_ascii(is)); Rep rep; @@ -3371,7 +3371,7 @@ std::istream& operator>> ( std::istream& is, Arc_2< CurvedKernelViaAnalysis_2, Rep_ >& arc) { - CGAL_precondition(CGAL::is_ascii(is)); + CGAL_precondition(CGAL::IO::is_ascii(is)); //typedef CurvedKernelViaAnalysis_2 Curved_kernel_via_analysis_2; //typedef Rep_ Rep; diff --git a/Arrangement_on_surface_2/include/CGAL/Curved_kernel_via_analysis_2/Curved_kernel_via_analysis_2_functors.h b/Arrangement_on_surface_2/include/CGAL/Curved_kernel_via_analysis_2/Curved_kernel_via_analysis_2_functors.h index b8dd6eaf6f9..1447bbf1ff4 100644 --- a/Arrangement_on_surface_2/include/CGAL/Curved_kernel_via_analysis_2/Curved_kernel_via_analysis_2_functors.h +++ b/Arrangement_on_surface_2/include/CGAL/Curved_kernel_via_analysis_2/Curved_kernel_via_analysis_2_functors.h @@ -231,7 +231,7 @@ public: // avoid compiler warning (void)arc; - //CGAL::set_pretty_mode(std::cerr); + //CGAL::IO::set_pretty_mode(std::cerr); CERR("Construct_pt_on_arc: " << CGAL::to_double(x) << ", " << arcno << ", " << c.id() << "\narc = " << arc << "\n"); diff --git a/Arrangement_on_surface_2/include/CGAL/Curved_kernel_via_analysis_2/Point_2.h b/Arrangement_on_surface_2/include/CGAL/Curved_kernel_via_analysis_2/Point_2.h index 09e245ec4ff..b06c547b182 100644 --- a/Arrangement_on_surface_2/include/CGAL/Curved_kernel_via_analysis_2/Point_2.h +++ b/Arrangement_on_surface_2/include/CGAL/Curved_kernel_via_analysis_2/Point_2.h @@ -615,7 +615,7 @@ public: */ void write(std::ostream& os) const { - switch(::CGAL::get_mode(os)) { + switch(::CGAL::IO::get_mode(os)) { case ::CGAL::IO::PRETTY: os << "point@" << this->id() << "("; os << "sup@" << this->curve().id() << "; "; @@ -722,7 +722,7 @@ public: */ void read(std::istream& is) { - CGAL_precondition(CGAL::is_ascii(is)); + CGAL_precondition(CGAL::IO::is_ascii(is)); Rep rep; @@ -823,7 +823,7 @@ std::istream& operator>> ( std::istream& is, Point_2< CurvedKernelViaAnalysis_2, Rep_ >& pt) { - CGAL_precondition(CGAL::is_ascii(is)); + CGAL_precondition(CGAL::IO::is_ascii(is)); //typedef CurvedKernelViaAnalysis_2 Curved_kernel_via_analysis_2; //typedef Rep_ Rep; diff --git a/Arrangement_on_surface_2/include/CGAL/Curved_kernel_via_analysis_2/gfx/Curve_renderer_2.h b/Arrangement_on_surface_2/include/CGAL/Curved_kernel_via_analysis_2/gfx/Curve_renderer_2.h index 745381dc630..163bbff54e9 100644 --- a/Arrangement_on_surface_2/include/CGAL/Curved_kernel_via_analysis_2/gfx/Curve_renderer_2.h +++ b/Arrangement_on_surface_2/include/CGAL/Curved_kernel_via_analysis_2/gfx/Curve_renderer_2.h @@ -2586,8 +2586,8 @@ inline bool is_isolated_pixel(const Pixel_2& /* pix */) { // DEBUG ONLY #ifdef Gfx_USE_OUT void dump_neighbourhood(const Pixel_2& pix) { - CGAL::set_mode(std::cerr, CGAL::IO::PRETTY); - CGAL::set_mode(std::cout, CGAL::IO::PRETTY); + CGAL::IO::set_mode(std::cerr, CGAL::IO::PRETTY); + CGAL::IO::set_mode(std::cout, CGAL::IO::PRETTY); Stripe box[2]; // 0 - left-right stripe, 1 - bottom-top stripe //NT inv = NT(1) / NT(one << pix.level); diff --git a/Arrangement_on_surface_2/include/CGAL/IO/Arr_text_formatter.h b/Arrangement_on_surface_2/include/CGAL/IO/Arr_text_formatter.h index d9337e2805f..a0096d36b76 100644 --- a/Arrangement_on_surface_2/include/CGAL/IO/Arr_text_formatter.h +++ b/Arrangement_on_surface_2/include/CGAL/IO/Arr_text_formatter.h @@ -120,8 +120,8 @@ public: void write_arrangement_begin() { CGAL_assertion(m_out != nullptr); - m_old_out_mode = get_mode(*m_out); - set_ascii_mode(*m_out); + m_old_out_mode = IO::get_mode(*m_out); + IO::set_ascii_mode(*m_out); _write_comment("BEGIN ARRANGEMENT"); } @@ -277,8 +277,8 @@ public: void read_arrangement_begin() { CGAL_assertion(m_in != nullptr); - m_old_in_mode = get_mode(*m_in); - set_ascii_mode(*m_in); + m_old_in_mode = IO::get_mode(*m_in); + IO::set_ascii_mode(*m_in); _skip_comments(); } diff --git a/Arrangement_on_surface_2/test/Arrangement_on_surface_2/test_batched_point_location.cpp b/Arrangement_on_surface_2/test/Arrangement_on_surface_2/test_batched_point_location.cpp index 4f335409a64..2162954c316 100644 --- a/Arrangement_on_surface_2/test/Arrangement_on_surface_2/test_batched_point_location.cpp +++ b/Arrangement_on_surface_2/test/Arrangement_on_surface_2/test_batched_point_location.cpp @@ -87,8 +87,8 @@ bool test(const char* points_filename, const char* xcurves_filename, int main(int argc, char* argv[]) { #if TEST_GEOM_TRAITS == ALGEBRAIC_GEOM_TRAITS - CGAL::set_pretty_mode(std::cout); - CGAL::set_pretty_mode(std::cerr); + CGAL::IO::set_pretty_mode(std::cout); + CGAL::IO::set_pretty_mode(std::cerr); #endif size_t verbose_level = 0; diff --git a/Arrangement_on_surface_2/test/Arrangement_on_surface_2/test_construction.cpp b/Arrangement_on_surface_2/test/Arrangement_on_surface_2/test_construction.cpp index 5b1c849af03..ba4e4738b41 100644 --- a/Arrangement_on_surface_2/test/Arrangement_on_surface_2/test_construction.cpp +++ b/Arrangement_on_surface_2/test/Arrangement_on_surface_2/test_construction.cpp @@ -96,8 +96,8 @@ bool test(const char* filename, int verbose_level) int main(int argc, char* argv[]) { #if TEST_GEOM_TRAITS == ALGEBRAIC_GEOM_TRAITS - CGAL::set_pretty_mode(std::cout); - CGAL::set_pretty_mode(std::cerr); + CGAL::IO::set_pretty_mode(std::cout); + CGAL::IO::set_pretty_mode(std::cerr); #endif if (argc < 2) { diff --git a/Arrangement_on_surface_2/test/Arrangement_on_surface_2/test_overlay.cpp b/Arrangement_on_surface_2/test/Arrangement_on_surface_2/test_overlay.cpp index f648439034a..34992ea018b 100644 --- a/Arrangement_on_surface_2/test/Arrangement_on_surface_2/test_overlay.cpp +++ b/Arrangement_on_surface_2/test/Arrangement_on_surface_2/test_overlay.cpp @@ -129,8 +129,8 @@ bool test(const char* filename, int verbose_level) int main(int argc, char* argv[]) { #if TEST_GEOM_TRAITS == ALGEBRAIC_GEOM_TRAITS - CGAL::set_pretty_mode(std::cout); - CGAL::set_pretty_mode(std::cerr); + CGAL::IO::set_pretty_mode(std::cout); + CGAL::IO::set_pretty_mode(std::cerr); #endif if (argc < 2) { diff --git a/Arrangement_on_surface_2/test/Arrangement_on_surface_2/test_point_location.cpp b/Arrangement_on_surface_2/test/Arrangement_on_surface_2/test_point_location.cpp index 9cc77ec9977..75eacfabdd0 100644 --- a/Arrangement_on_surface_2/test/Arrangement_on_surface_2/test_point_location.cpp +++ b/Arrangement_on_surface_2/test/Arrangement_on_surface_2/test_point_location.cpp @@ -128,8 +128,8 @@ bool test3(const char* points_filename, const char* xcurves_filename, int main(int argc, char* argv[]) { #if TEST_GEOM_TRAITS == ALGEBRAIC_GEOM_TRAITS - CGAL::set_pretty_mode(std::cout); - CGAL::set_pretty_mode(std::cerr); + CGAL::IO::set_pretty_mode(std::cout); + CGAL::IO::set_pretty_mode(std::cerr); #endif if (argc < 4) { diff --git a/Arrangement_on_surface_2/test/Arrangement_on_surface_2/test_point_location_dynamic.cpp b/Arrangement_on_surface_2/test/Arrangement_on_surface_2/test_point_location_dynamic.cpp index 4a1d461f690..d9c13cbbd44 100644 --- a/Arrangement_on_surface_2/test/Arrangement_on_surface_2/test_point_location_dynamic.cpp +++ b/Arrangement_on_surface_2/test/Arrangement_on_surface_2/test_point_location_dynamic.cpp @@ -91,8 +91,8 @@ bool test1(const char* points_filename, const char* xcurves_filename, int main(int argc, char* argv[]) { #if TEST_GEOM_TRAITS == ALGEBRAIC_GEOM_TRAITS - CGAL::set_pretty_mode(std::cout); - CGAL::set_pretty_mode(std::cerr); + CGAL::IO::set_pretty_mode(std::cout); + CGAL::IO::set_pretty_mode(std::cerr); #endif if (argc < 5) { diff --git a/Arrangement_on_surface_2/test/Arrangement_on_surface_2/test_traits.cpp b/Arrangement_on_surface_2/test/Arrangement_on_surface_2/test_traits.cpp index b883a6ba0f6..ec26c356b75 100644 --- a/Arrangement_on_surface_2/test/Arrangement_on_surface_2/test_traits.cpp +++ b/Arrangement_on_surface_2/test/Arrangement_on_surface_2/test_traits.cpp @@ -73,8 +73,8 @@ int main(int argc, char* argv[]) { #if TEST_GEOM_TRAITS == ALGEBRAIC_GEOM_TRAITS - CGAL::set_pretty_mode(std::cout); - CGAL::set_pretty_mode(std::cerr); + CGAL::IO::set_pretty_mode(std::cout); + CGAL::IO::set_pretty_mode(std::cerr); #endif Geom_traits traits; diff --git a/Arrangement_on_surface_2/test/Arrangement_on_surface_2/test_vertical_decomposition.cpp b/Arrangement_on_surface_2/test/Arrangement_on_surface_2/test_vertical_decomposition.cpp index 748632219b7..9bd60487f5d 100644 --- a/Arrangement_on_surface_2/test/Arrangement_on_surface_2/test_vertical_decomposition.cpp +++ b/Arrangement_on_surface_2/test/Arrangement_on_surface_2/test_vertical_decomposition.cpp @@ -84,8 +84,8 @@ bool test(const char* points_filename, const char* xcurves_filename, int main(int argc, char* argv[]) { #if TEST_GEOM_TRAITS == ALGEBRAIC_GEOM_TRAITS - CGAL::set_pretty_mode(std::cout); - CGAL::set_pretty_mode(std::cerr); + CGAL::IO::set_pretty_mode(std::cout); + CGAL::IO::set_pretty_mode(std::cerr); #endif size_t verbose_level = 0; diff --git a/BGL/include/CGAL/boost/graph/IO/GOCAD.h b/BGL/include/CGAL/boost/graph/IO/GOCAD.h index 9bdeea347d3..e3baecc25e3 100644 --- a/BGL/include/CGAL/boost/graph/IO/GOCAD.h +++ b/BGL/include/CGAL/boost/graph/IO/GOCAD.h @@ -211,7 +211,7 @@ bool read_GOCAD(const std::string& fname, ) { std::ifstream is(fname); - CGAL::set_mode(is, CGAL::IO::ASCII); + CGAL::IO::set_mode(is, CGAL::IO::ASCII); return read_GOCAD(is, name_and_color, g, np); } @@ -451,7 +451,7 @@ bool write_GOCAD(const std::string& fname, ) { std::ofstream os(fname); - CGAL::set_mode(os, CGAL::IO::ASCII); + CGAL::IO::set_mode(os, CGAL::IO::ASCII); return write_GOCAD(os, fname.c_str(), g, np); } diff --git a/BGL/include/CGAL/boost/graph/IO/OBJ.h b/BGL/include/CGAL/boost/graph/IO/OBJ.h index a21c92a9a94..b97515bb7b6 100644 --- a/BGL/include/CGAL/boost/graph/IO/OBJ.h +++ b/BGL/include/CGAL/boost/graph/IO/OBJ.h @@ -186,7 +186,7 @@ bool read_OBJ(const std::string& fname, ) { std::ifstream is(fname); - CGAL::set_mode(is, CGAL::IO::ASCII); + CGAL::IO::set_mode(is, CGAL::IO::ASCII); return read_OBJ(is, g, np); } @@ -306,7 +306,7 @@ bool write_OBJ(const std::string& fname, ) { std::ofstream os(fname); - CGAL::set_mode(os, CGAL::IO::ASCII); + CGAL::IO::set_mode(os, CGAL::IO::ASCII); return write_OBJ(os, g, np); } diff --git a/BGL/include/CGAL/boost/graph/IO/PLY.h b/BGL/include/CGAL/boost/graph/IO/PLY.h index d06a141baa0..881d3f86b0d 100644 --- a/BGL/include/CGAL/boost/graph/IO/PLY.h +++ b/BGL/include/CGAL/boost/graph/IO/PLY.h @@ -235,13 +235,13 @@ bool read_PLY(const std::string& fname, if(binary) { std::ifstream is(fname, std::ios::binary); - CGAL::set_mode(is, CGAL::IO::BINARY); + CGAL::IO::set_mode(is, CGAL::IO::BINARY); return internal::read_PLY_BGL(is, g, np); } else { std::ifstream is(fname); - CGAL::set_mode(is, CGAL::IO::ASCII); + CGAL::IO::set_mode(is, CGAL::IO::ASCII); return internal::read_PLY_BGL(is, g, np); } } @@ -541,13 +541,13 @@ bool write_PLY(const std::string& fname, if(binary) { std::ofstream os(fname, std::ios::binary); - CGAL::set_mode(os, CGAL::IO::BINARY); + CGAL::IO::set_mode(os, CGAL::IO::BINARY); return write_PLY(os, g, comments, np); } else { std::ofstream os(fname); - CGAL::set_mode(os, CGAL::IO::ASCII); + CGAL::IO::set_mode(os, CGAL::IO::ASCII); return write_PLY(os, g, comments, np); } diff --git a/BGL/include/CGAL/boost/graph/IO/STL.h b/BGL/include/CGAL/boost/graph/IO/STL.h index d9bf634012e..7bce5d9734b 100644 --- a/BGL/include/CGAL/boost/graph/IO/STL.h +++ b/BGL/include/CGAL/boost/graph/IO/STL.h @@ -172,7 +172,7 @@ bool read_STL(const std::string& fname, if(binary) { std::ifstream is(fname, std::ios::binary); - CGAL::set_mode(is, CGAL::IO::BINARY); + CGAL::IO::set_mode(is, CGAL::IO::BINARY); if(read_STL(is, g, np)) { return true; @@ -180,7 +180,7 @@ bool read_STL(const std::string& fname, g.clear(); } std::ifstream is(fname); - CGAL::set_mode(is, CGAL::IO::ASCII); + CGAL::IO::set_mode(is, CGAL::IO::ASCII); typedef typename CGAL::GetVertexPointMap::type VPM; VPM vpm = choose_parameter(get_parameter(np, internal_np::vertex_point), @@ -363,13 +363,13 @@ bool write_STL(const std::string& fname, const Graph& g, const CGAL_BGL_NP_CLASS if(binary) { std::ofstream os(fname, std::ios::binary); - CGAL::set_mode(os, CGAL::IO::BINARY); + CGAL::IO::set_mode(os, CGAL::IO::BINARY); return write_STL(os, g, np); } else { std::ofstream os(fname); - CGAL::set_mode(os, CGAL::IO::ASCII); + CGAL::IO::set_mode(os, CGAL::IO::ASCII); return write_STL(os, g, np); } diff --git a/BGL/include/CGAL/boost/graph/IO/VTK.h b/BGL/include/CGAL/boost/graph/IO/VTK.h index 069a4245b57..fa3446ad28f 100644 --- a/BGL/include/CGAL/boost/graph/IO/VTK.h +++ b/BGL/include/CGAL/boost/graph/IO/VTK.h @@ -531,7 +531,7 @@ bool write_VTP(const std::string& fname, const Graph& g, const CGAL_BGL_NP_CLASS std::ofstream os; if(binary){ os.open(fname, std::ios::binary); - CGAL::set_mode(os, CGAL::IO::BINARY); + CGAL::IO::set_mode(os, CGAL::IO::BINARY); } else os.open(fname); diff --git a/BGL/test/BGL/test_bgl_read_write.cpp b/BGL/test/BGL/test_bgl_read_write.cpp index ee2a4f8c644..0f2ccc5cc1f 100644 --- a/BGL/test/BGL/test_bgl_read_write.cpp +++ b/BGL/test/BGL/test_bgl_read_write.cpp @@ -492,7 +492,7 @@ void test_bgl_PLY(const std::string filename, if(binary) { os.open("tmp.ply", std::ios::binary); - CGAL::set_mode(os, CGAL::IO::BINARY); + CGAL::IO::set_mode(os, CGAL::IO::BINARY); } else { @@ -549,7 +549,7 @@ void test_bgl_PLY(const std::string filename, if(binary) { is_rpm.open("tmp.ply", std::ios::binary); - CGAL::set_mode(is_rpm, CGAL::IO::BINARY); + CGAL::IO::set_mode(is_rpm, CGAL::IO::BINARY); } else { @@ -658,7 +658,7 @@ void test_bgl_STL(const std::string filename) Custom_VPM cvpm(cpoints); std::ifstream is(filename, std::ios::binary); - CGAL::set_mode(is, CGAL::IO::BINARY); + CGAL::IO::set_mode(is, CGAL::IO::BINARY); ok = CGAL::IO::read_STL(is, fg, CGAL::parameters::vertex_point_map(cvpm)); assert(ok); assert(filename != "data/pig.stl" || (num_vertices(fg) == 8642 && num_faces(fg) == 16848)); @@ -795,7 +795,7 @@ void test_bgl_VTP(const char* filename, std::ofstream os; if(binary){ os.open("tmp.vtp", std::ios::binary); - CGAL::set_mode(os, CGAL::IO::BINARY); + CGAL::IO::set_mode(os, CGAL::IO::BINARY); } else os.open("tmp.vtp"); @@ -849,7 +849,7 @@ void test_bgl_VTP(const char* filename, if(binary) { os.open("tmp.vtp", std::ios::binary); - CGAL::set_mode(os, CGAL::IO::BINARY); + CGAL::IO::set_mode(os, CGAL::IO::BINARY); } else { diff --git a/Boolean_set_operations_2/include/CGAL/General_polygon_2.h b/Boolean_set_operations_2/include/CGAL/General_polygon_2.h index fd6badf0c40..7d1cbdea7a8 100644 --- a/Boolean_set_operations_2/include/CGAL/General_polygon_2.h +++ b/Boolean_set_operations_2/include/CGAL/General_polygon_2.h @@ -187,7 +187,7 @@ std::ostream { typename General_polygon_2::Curve_const_iterator i; - switch(get_mode(os)) { + switch(IO::get_mode(os)) { case IO::ASCII : os << p.size() << ' '; for (i = p.curves_begin(); i != p.curves_end(); ++i) { diff --git a/Bounding_volumes/examples/Min_circle_2/min_circle_homogeneous_2.cpp b/Bounding_volumes/examples/Min_circle_2/min_circle_homogeneous_2.cpp index aac519412db..238887de2e4 100644 --- a/Bounding_volumes/examples/Min_circle_2/min_circle_homogeneous_2.cpp +++ b/Bounding_volumes/examples/Min_circle_2/min_circle_homogeneous_2.cpp @@ -26,7 +26,7 @@ main( int, char**) Min_circle mc1( P, P+n, false); // very slow Min_circle mc2( P, P+n, true); // fast - CGAL::set_pretty_mode( std::cout); + CGAL::IO::set_pretty_mode( std::cout); std::cout << mc2; return 0; diff --git a/Bounding_volumes/examples/Min_ellipse_2/min_ellipse_2.cpp b/Bounding_volumes/examples/Min_ellipse_2/min_ellipse_2.cpp index f4571ad6a8c..a5f5935e5b4 100644 --- a/Bounding_volumes/examples/Min_ellipse_2/min_ellipse_2.cpp +++ b/Bounding_volumes/examples/Min_ellipse_2/min_ellipse_2.cpp @@ -39,7 +39,7 @@ main( int, char**) assert(me2.number_of_support_points()==2); // prettyprinting - CGAL::set_pretty_mode( std::cout); + CGAL::IO::set_pretty_mode( std::cout); std::cout << me2; // in general, the ellipse is not explicitly representable diff --git a/Bounding_volumes/examples/Min_sphere_d/min_sphere_homogeneous_3.cpp b/Bounding_volumes/examples/Min_sphere_d/min_sphere_homogeneous_3.cpp index 191109c0566..a0ec7ad1e17 100644 --- a/Bounding_volumes/examples/Min_sphere_d/min_sphere_homogeneous_3.cpp +++ b/Bounding_volumes/examples/Min_sphere_d/min_sphere_homogeneous_3.cpp @@ -25,7 +25,7 @@ main () Min_sphere ms (P, P+n); // smallest enclosing sphere - CGAL::set_pretty_mode (std::cout); + CGAL::IO::set_pretty_mode (std::cout); std::cout << ms; // output the sphere return 0; diff --git a/Bounding_volumes/examples/Rectangular_p_center_2/rectangular_p_center_2.cpp b/Bounding_volumes/examples/Rectangular_p_center_2/rectangular_p_center_2.cpp index 920df52e0e3..e4602fe923f 100644 --- a/Bounding_volumes/examples/Rectangular_p_center_2/rectangular_p_center_2.cpp +++ b/Bounding_volumes/examples/Rectangular_p_center_2/rectangular_p_center_2.cpp @@ -21,7 +21,7 @@ int main() int n = 10; int p = 2; OIterator cout_ip(std::cout); - CGAL::set_pretty_mode(std::cout); + CGAL::IO::set_pretty_mode(std::cout); Cont points; std::copy_n(Generator(1), n, std::back_inserter(points)); diff --git a/Bounding_volumes/include/CGAL/Min_annulus_d.h b/Bounding_volumes/include/CGAL/Min_annulus_d.h index 0be72c1b427..4f8e1d3a784 100644 --- a/Bounding_volumes/include/CGAL/Min_annulus_d.h +++ b/Bounding_volumes/include/CGAL/Min_annulus_d.h @@ -781,7 +781,7 @@ operator << ( std::ostream& os, typedef typename Traits_::ET ET; typedef ostream_iterator Et_it; - switch ( CGAL::get_mode( os)) { + switch ( CGAL::IO::get_mode( os)) { case CGAL::IO::PRETTY: os << "CGAL::Min_annulus_d( |P| = " @@ -830,7 +830,7 @@ operator << ( std::ostream& os, default: CGAL_optimisation_assertion_msg( false, - "CGAL::get_mode( os) invalid!"); + "CGAL::IO::get_mode( os) invalid!"); break; } return( os); @@ -843,7 +843,7 @@ operator >> ( std::istream& is, CGAL::Min_annulus_d& min_annulus) { using namespace std; - switch ( CGAL::get_mode( is)) { + switch ( CGAL::IO::get_mode( is)) { case CGAL::IO::PRETTY: cerr << endl; diff --git a/Bounding_volumes/include/CGAL/Min_circle_2/Min_circle_2_adapterC2.h b/Bounding_volumes/include/CGAL/Min_circle_2/Min_circle_2_adapterC2.h index a75c21f1624..3f28aef6732 100644 --- a/Bounding_volumes/include/CGAL/Min_circle_2/Min_circle_2_adapterC2.h +++ b/Bounding_volumes/include/CGAL/Min_circle_2/Min_circle_2_adapterC2.h @@ -273,7 +273,7 @@ std::ostream& operator << ( std::ostream& os, const CGAL::_Min_circle_2_adapterC2__Circle& c) { - switch ( CGAL::get_mode( os)) { + switch ( CGAL::IO::get_mode( os)) { case CGAL::IO::PRETTY: os << "CGAL::Min_circle_2_adapterC2::Circle( " @@ -294,7 +294,7 @@ operator << ( std::ostream& os, default: CGAL_optimisation_assertion_msg( false, - "CGAL::get_mode( os) invalid!"); + "CGAL::IO::get_mode( os) invalid!"); break; } return( os); @@ -305,7 +305,7 @@ std::istream& operator >> ( std::istream& is, CGAL::_Min_circle_2_adapterC2__Circle& c) { - switch ( CGAL::get_mode( is)) { + switch ( CGAL::IO::get_mode( is)) { case CGAL::IO::PRETTY: std::cerr << std::endl; diff --git a/Bounding_volumes/include/CGAL/Min_circle_2/Min_circle_2_adapterH2.h b/Bounding_volumes/include/CGAL/Min_circle_2/Min_circle_2_adapterH2.h index 166a5948eb5..74afdd668d6 100644 --- a/Bounding_volumes/include/CGAL/Min_circle_2/Min_circle_2_adapterH2.h +++ b/Bounding_volumes/include/CGAL/Min_circle_2/Min_circle_2_adapterH2.h @@ -307,7 +307,7 @@ std::ostream& operator << ( std::ostream& os, const CGAL::_Min_circle_2_adapterH2__Circle& c) { - switch ( CGAL::get_mode( os)) { + switch ( CGAL::IO::get_mode( os)) { case CGAL::IO::PRETTY: os << "CGAL::Min_circle_2_adapterH2::Circle( " @@ -333,7 +333,7 @@ operator << ( std::ostream& os, default: CGAL_optimisation_assertion_msg( false, - "CGAL::get_mode( os) invalid!"); + "CGAL::IO::get_mode( os) invalid!"); break; } return( os); @@ -344,7 +344,7 @@ std::istream& operator >> ( std::istream& is, CGAL::_Min_circle_2_adapterH2__Circle& c) { - switch ( CGAL::get_mode( is)) { + switch ( CGAL::IO::get_mode( is)) { case CGAL::IO::PRETTY: std::cerr << std::endl; diff --git a/Bounding_volumes/include/CGAL/Min_circle_2/Min_circle_2_impl.h b/Bounding_volumes/include/CGAL/Min_circle_2/Min_circle_2_impl.h index dc79b1f8812..f0a8cc7f072 100644 --- a/Bounding_volumes/include/CGAL/Min_circle_2/Min_circle_2_impl.h +++ b/Bounding_volumes/include/CGAL/Min_circle_2/Min_circle_2_impl.h @@ -28,7 +28,7 @@ operator << ( std::ostream& os, typedef typename Min_circle_2::Point Point; typedef ostream_iterator Os_it; - switch ( CGAL::get_mode( os)) { + switch ( CGAL::IO::get_mode( os)) { case CGAL::IO::PRETTY: os << endl; @@ -61,7 +61,7 @@ operator << ( std::ostream& os, default: CGAL_optimisation_assertion_msg( false, - "CGAL::get_mode( os) invalid!"); + "CGAL::IO::get_mode( os) invalid!"); break; } return( os); @@ -73,7 +73,7 @@ operator >> ( std::istream& is, CGAL::Min_circle_2& min_circle) { using namespace std; - switch ( CGAL::get_mode( is)) { + switch ( CGAL::IO::get_mode( is)) { case CGAL::IO::PRETTY: cerr << endl; diff --git a/Bounding_volumes/include/CGAL/Min_circle_2/Optimisation_circle_2_impl.h b/Bounding_volumes/include/CGAL/Min_circle_2/Optimisation_circle_2_impl.h index 7257afbb604..55057c6ac37 100644 --- a/Bounding_volumes/include/CGAL/Min_circle_2/Optimisation_circle_2_impl.h +++ b/Bounding_volumes/include/CGAL/Min_circle_2/Optimisation_circle_2_impl.h @@ -24,7 +24,7 @@ template < class K_ > std::ostream& operator << ( std::ostream& os, const CGAL::Optimisation_circle_2& c) { - switch ( CGAL::get_mode( os)) { + switch ( CGAL::IO::get_mode( os)) { case CGAL::IO::PRETTY: os << "CGAL::Optimisation_circle_2( " @@ -43,7 +43,7 @@ operator << ( std::ostream& os, const CGAL::Optimisation_circle_2& c) default: CGAL_optimisation_assertion_msg( false, - "CGAL::get_mode( os) invalid!"); + "CGAL::IO::get_mode( os) invalid!"); break; } return( os); @@ -56,7 +56,7 @@ operator >> ( std::istream& is, CGAL::Optimisation_circle_2& c) typedef typename CGAL::Optimisation_circle_2::Point Point; typedef typename CGAL::Optimisation_circle_2::Distance Distance; - switch ( CGAL::get_mode( is)) { + switch ( CGAL::IO::get_mode( is)) { case CGAL::IO::PRETTY: std::cerr << std::endl; @@ -80,7 +80,7 @@ operator >> ( std::istream& is, CGAL::Optimisation_circle_2& c) default: CGAL_optimisation_assertion_msg( false, - "CGAL::get_mode( is) invalid!"); + "CGAL::IO::get_mode( is) invalid!"); break; } return( is); diff --git a/Bounding_volumes/include/CGAL/Min_ellipse_2/Min_ellipse_2_adapterC2.h b/Bounding_volumes/include/CGAL/Min_ellipse_2/Min_ellipse_2_adapterC2.h index 6e70f09f978..b50c7e45fed 100644 --- a/Bounding_volumes/include/CGAL/Min_ellipse_2/Min_ellipse_2_adapterC2.h +++ b/Bounding_volumes/include/CGAL/Min_ellipse_2/Min_ellipse_2_adapterC2.h @@ -329,7 +329,7 @@ operator << ( std::ostream& os, const char* sep = empty; const char* tail = empty; - switch ( CGAL::get_mode( os)) { + switch ( CGAL::IO::get_mode( os)) { case CGAL::IO::PRETTY: head = pretty_head; sep = pretty_sep; @@ -342,7 +342,7 @@ operator << ( std::ostream& os, break; default: CGAL_optimisation_assertion_msg( false, - "CGAL::get_mode( os) invalid!"); + "CGAL::IO::get_mode( os) invalid!"); break; } os << head << e.n_boundary_points; @@ -374,7 +374,7 @@ std::istream& operator >> ( std::istream& is, CGAL::_Min_ellipse_2_adapterC2__Ellipse& e) { - switch ( CGAL::get_mode( is)) { + switch ( CGAL::IO::get_mode( is)) { case CGAL::IO::PRETTY: std::cerr << std::endl; diff --git a/Bounding_volumes/include/CGAL/Min_ellipse_2/Min_ellipse_2_adapterH2.h b/Bounding_volumes/include/CGAL/Min_ellipse_2/Min_ellipse_2_adapterH2.h index 9af39820a21..23454106cfc 100644 --- a/Bounding_volumes/include/CGAL/Min_ellipse_2/Min_ellipse_2_adapterH2.h +++ b/Bounding_volumes/include/CGAL/Min_ellipse_2/Min_ellipse_2_adapterH2.h @@ -337,7 +337,7 @@ operator << ( std::ostream& os, const char* sep = empty; const char* tail = empty; - switch ( CGAL::get_mode( os)) { + switch ( CGAL::IO::get_mode( os)) { case CGAL::IO::PRETTY: head = pretty_head; sep = pretty_sep; @@ -350,7 +350,7 @@ operator << ( std::ostream& os, break; default: CGAL_optimisation_assertion_msg( false, - "CGAL::get_mode( os) invalid!"); + "CGAL::IO::get_mode( os) invalid!"); break; } os << head << e.n_boundary_points; @@ -382,7 +382,7 @@ std::istream& operator >> ( std::istream& is, CGAL::_Min_ellipse_2_adapterH2__Ellipse& e) { - switch ( CGAL::get_mode( is)) { + switch ( CGAL::IO::get_mode( is)) { case CGAL::IO::PRETTY: std::cerr << std::endl; diff --git a/Bounding_volumes/include/CGAL/Min_ellipse_2/Min_ellipse_2_impl.h b/Bounding_volumes/include/CGAL/Min_ellipse_2/Min_ellipse_2_impl.h index 527a1240659..e28a847f1c5 100644 --- a/Bounding_volumes/include/CGAL/Min_ellipse_2/Min_ellipse_2_impl.h +++ b/Bounding_volumes/include/CGAL/Min_ellipse_2/Min_ellipse_2_impl.h @@ -28,7 +28,7 @@ operator << ( std::ostream& os, typedef typename Min_ellipse_2::Point Point; typedef ostream_iterator Os_it; - switch ( CGAL::get_mode( os)) { + switch ( CGAL::IO::get_mode( os)) { case CGAL::IO::PRETTY: os << endl; @@ -61,7 +61,7 @@ operator << ( std::ostream& os, default: CGAL_optimisation_assertion_msg( false, - "CGAL::get_mode( os) invalid!"); + "CGAL::IO::get_mode( os) invalid!"); break; } return( os); @@ -73,7 +73,7 @@ operator >> ( std::istream& is, CGAL::Min_ellipse_2& min_ellipse) { using namespace std; - switch ( CGAL::get_mode( is)) { + switch ( CGAL::IO::get_mode( is)) { case CGAL::IO::PRETTY: cerr << endl; diff --git a/Bounding_volumes/include/CGAL/Min_ellipse_2/Optimisation_ellipse_2_impl.h b/Bounding_volumes/include/CGAL/Min_ellipse_2/Optimisation_ellipse_2_impl.h index a2e3f211396..47b42ef90d8 100644 --- a/Bounding_volumes/include/CGAL/Min_ellipse_2/Optimisation_ellipse_2_impl.h +++ b/Bounding_volumes/include/CGAL/Min_ellipse_2/Optimisation_ellipse_2_impl.h @@ -31,7 +31,7 @@ operator << ( std::ostream& os, const CGAL::Optimisation_ellipse_2& e) const char* sep = empty; const char* tail = empty; - switch ( CGAL::get_mode( os)) { + switch ( CGAL::IO::get_mode( os)) { case CGAL::IO::PRETTY: head = pretty_head; sep = pretty_sep; @@ -44,7 +44,7 @@ operator << ( std::ostream& os, const CGAL::Optimisation_ellipse_2& e) break; default: CGAL_optimisation_assertion_msg( false, - "CGAL::get_mode( os) invalid!"); + "CGAL::IO::get_mode( os) invalid!"); break; } os << head << e.n_boundary_points; @@ -75,7 +75,7 @@ template < class K_ > std::istream& operator >> ( std::istream& is, CGAL::Optimisation_ellipse_2& e) { - switch ( CGAL::get_mode( is)) { + switch ( CGAL::IO::get_mode( is)) { case CGAL::IO::PRETTY: std::cerr << std::endl; @@ -107,7 +107,7 @@ operator >> ( std::istream& is, CGAL::Optimisation_ellipse_2& e) default: CGAL_optimisation_assertion_msg( false, - "CGAL::get_mode( is) invalid!"); + "CGAL::IO::get_mode( is) invalid!"); break; } return( is); diff --git a/Bounding_volumes/include/CGAL/Min_sphere_d/Min_sphere_d_impl.h b/Bounding_volumes/include/CGAL/Min_sphere_d/Min_sphere_d_impl.h index 1c2422c9c1f..684d1fb7e0b 100644 --- a/Bounding_volumes/include/CGAL/Min_sphere_d/Min_sphere_d_impl.h +++ b/Bounding_volumes/include/CGAL/Min_sphere_d/Min_sphere_d_impl.h @@ -25,7 +25,7 @@ operator << ( std::ostream& os, const Min_sphere_d& min_sphere) { typedef typename Min_sphere_d::Point Point; - switch ( get_mode( os)) { + switch ( IO::get_mode( os)) { case IO::PRETTY: os << std::endl; @@ -63,7 +63,7 @@ operator << ( std::ostream& os, const Min_sphere_d& min_sphere) default: CGAL_optimisation_assertion_msg - ( false, "get_mode( os) invalid!"); + ( false, "IO::get_mode( os) invalid!"); break; } return( os); @@ -73,7 +73,7 @@ template < class Traits > std::istream& operator >> ( std::istream& is, Min_sphere_d& min_sphere) { - switch ( get_mode( is)) { + switch ( IO::get_mode( is)) { case IO::PRETTY: std::cerr << std::endl; diff --git a/Bounding_volumes/test/Bounding_volumes/min_sphere_test.cpp b/Bounding_volumes/test/Bounding_volumes/min_sphere_test.cpp index e53793cf9f4..82b71269443 100644 --- a/Bounding_volumes/test/Bounding_volumes/min_sphere_test.cpp +++ b/Bounding_volumes/test/Bounding_volumes/min_sphere_test.cpp @@ -228,11 +228,11 @@ int main () std::ostringstream ost; // output string - set_ascii_mode (ost); + IO::set_ascii_mode (ost); ost << msC << msH << std::endl; // write spheres std::istringstream ist (ost.str().c_str()); // input string - set_ascii_mode (ist); + IO::set_ascii_mode (ist); ist >> msC >> msH; // read spheres assert(centerC == msC.center()); diff --git a/Bounding_volumes/test/Bounding_volumes/minimum_enclosing_quadrilateral_2_test_C.cpp b/Bounding_volumes/test/Bounding_volumes/minimum_enclosing_quadrilateral_2_test_C.cpp index 8e0a95aaad8..c009a3524a7 100644 --- a/Bounding_volumes/test/Bounding_volumes/minimum_enclosing_quadrilateral_2_test_C.cpp +++ b/Bounding_volumes/test/Bounding_volumes/minimum_enclosing_quadrilateral_2_test_C.cpp @@ -54,7 +54,7 @@ void compute(ForwardIterator f, ForwardIterator l) int main() { - CGAL::set_pretty_mode(cout); + CGAL::IO::set_pretty_mode(cout); // build a random convex 20-gon p { diff --git a/Bounding_volumes/test/Bounding_volumes/minimum_enclosing_quadrilateral_2_test_H.cpp b/Bounding_volumes/test/Bounding_volumes/minimum_enclosing_quadrilateral_2_test_H.cpp index 5acc7f9d93a..f92a59f752f 100644 --- a/Bounding_volumes/test/Bounding_volumes/minimum_enclosing_quadrilateral_2_test_H.cpp +++ b/Bounding_volumes/test/Bounding_volumes/minimum_enclosing_quadrilateral_2_test_H.cpp @@ -35,7 +35,7 @@ typedef CGAL::Random_points_in_square_2 Point_generator; int main() { - CGAL::set_pretty_mode(cout); + CGAL::IO::set_pretty_mode(cout); // build a random convex 20-gon p Polygon_2 p; diff --git a/Bounding_volumes/test/Bounding_volumes/rectangular_p_center_2_random1_test.cpp b/Bounding_volumes/test/Bounding_volumes/rectangular_p_center_2_random1_test.cpp index c39235bcf30..94ee1718336 100644 --- a/Bounding_volumes/test/Bounding_volumes/rectangular_p_center_2_random1_test.cpp +++ b/Bounding_volumes/test/Bounding_volumes/rectangular_p_center_2_random1_test.cpp @@ -135,7 +135,7 @@ int main(int argc, char* argv[]) { #ifndef CGAL_PCENTER_NO_OUTPUT - CGAL::set_pretty_mode(cerr); + CGAL::IO::set_pretty_mode(cerr); #endif // CGAL_PCENTER_NO_OUTPUT int number_of_points; diff --git a/Bounding_volumes/test/Bounding_volumes/rectangular_p_center_2_random2_test.cpp b/Bounding_volumes/test/Bounding_volumes/rectangular_p_center_2_random2_test.cpp index ff205e038ae..cd9378c9c79 100644 --- a/Bounding_volumes/test/Bounding_volumes/rectangular_p_center_2_random2_test.cpp +++ b/Bounding_volumes/test/Bounding_volumes/rectangular_p_center_2_random2_test.cpp @@ -137,7 +137,7 @@ int main(int argc, char* argv[]) { #ifndef CGAL_PCENTER_NO_OUTPUT - CGAL::set_pretty_mode(cerr); + CGAL::IO::set_pretty_mode(cerr); #endif // CGAL_PCENTER_NO_OUTPUT int number_of_points; diff --git a/Bounding_volumes/test/Bounding_volumes/test_Min_annulus_d.h b/Bounding_volumes/test/Bounding_volumes/test_Min_annulus_d.h index 0e32b0be687..a1b3c9e88e0 100644 --- a/Bounding_volumes/test/Bounding_volumes/test_Min_annulus_d.h +++ b/Bounding_volumes/test/Bounding_volumes/test_Min_annulus_d.h @@ -53,7 +53,7 @@ test_Min_annulus_d( ForwardIterator first, ForwardIterator last, CGAL::Verbose_ostream verr ( verbose >= 0); CGAL::Verbose_ostream verr0( verbose == 0); CGAL::Verbose_ostream verrX( verbose > 0); - CGAL::set_pretty_mode( verr.out()); + CGAL::IO::set_pretty_mode( verr.out()); bool is_valid_verbose = ( verbose > 0); diff --git a/Bounding_volumes/test/Bounding_volumes/test_Min_circle.cpp b/Bounding_volumes/test/Bounding_volumes/test_Min_circle.cpp index 4412a7a546f..01ce8cc429a 100644 --- a/Bounding_volumes/test/Bounding_volumes/test_Min_circle.cpp +++ b/Bounding_volumes/test/Bounding_volumes/test_Min_circle.cpp @@ -219,26 +219,26 @@ cover_Min_circle_2( bool verbose, const Traits&, const RT&) { verr << endl << " writing `test_Min_circle_2.ascii'..."; ofstream os( "test_Min_circle_2.ascii"); - CGAL::set_ascii_mode( os); + CGAL::IO::set_ascii_mode( os); os << mc; } { verr << endl << " writing `test_Min_circle_2.pretty'..."; ofstream os( "test_Min_circle_2.pretty"); - CGAL::set_pretty_mode( os); + CGAL::IO::set_pretty_mode( os); os << mc; } { verr << endl << " writing `test_Min_circle_2.binary'..."; ofstream os( "test_Min_circle_2.binary"); - CGAL::set_binary_mode( os); + CGAL::IO::set_binary_mode( os); os << mc; } { verr << endl << " reading `test_Min_circle_2.ascii'..."; Min_circle mc_in; ifstream is( "test_Min_circle_2.ascii"); - CGAL::set_ascii_mode( is); + CGAL::IO::set_ascii_mode( is); is >> mc_in; bool is_valid = mc_in.is_valid( verbose); assert( is_valid); diff --git a/Bounding_volumes/test/Bounding_volumes/test_Min_ellipse_2.cpp b/Bounding_volumes/test/Bounding_volumes/test_Min_ellipse_2.cpp index edfc855f158..535aa4674b1 100644 --- a/Bounding_volumes/test/Bounding_volumes/test_Min_ellipse_2.cpp +++ b/Bounding_volumes/test/Bounding_volumes/test_Min_ellipse_2.cpp @@ -412,26 +412,26 @@ cover_Min_ellipse_2( bool verbose, const Traits&, const RT&) { verr << endl << " writing `test_Min_ellipse_2.ascii'..."; ofstream os( "test_Min_ellipse_2.ascii"); - CGAL::set_ascii_mode( os); + CGAL::IO::set_ascii_mode( os); os << me; } { verr << endl << " writing `test_Min_ellipse_2.pretty'..."; ofstream os( "test_Min_ellipse_2.pretty"); - CGAL::set_pretty_mode( os); + CGAL::IO::set_pretty_mode( os); os << me; } { verr << endl << " writing `test_Min_ellipse_2.binary'..."; ofstream os( "test_Min_ellipse_2.binary"); - CGAL::set_binary_mode( os); + CGAL::IO::set_binary_mode( os); os << me; } { verr << endl << " reading `test_Min_ellipse_2.ascii'..."; Min_ellipse me_in; ifstream is( "test_Min_ellipse_2.ascii"); - CGAL::set_ascii_mode( is); + CGAL::IO::set_ascii_mode( is); is >> me_in; bool is_valid = me_in.is_valid( verbose); assert( is_valid); diff --git a/Cartesian_kernel/include/CGAL/Cartesian/Weighted_point_2.h b/Cartesian_kernel/include/CGAL/Cartesian/Weighted_point_2.h index db5e9f1b98e..3e584ea9830 100644 --- a/Cartesian_kernel/include/CGAL/Cartesian/Weighted_point_2.h +++ b/Cartesian_kernel/include/CGAL/Cartesian/Weighted_point_2.h @@ -79,7 +79,7 @@ template < class R_ > std::ostream & operator<<(std::ostream &os, const Weighted_pointC2 &p) { - switch(get_mode(os)) + switch(IO::get_mode(os)) { case IO::ASCII : return os << p.point() << " " << p.weight(); @@ -100,7 +100,7 @@ operator>>(std::istream &is, Weighted_pointC2 &wp) typename Weighted_pointC2::Point_2 p; is >> p; if(!is) return is; - if(is_ascii(is)) + if(IO::is_ascii(is)) is >> w; else read(is, w); diff --git a/Cartesian_kernel/include/CGAL/Cartesian/Weighted_point_3.h b/Cartesian_kernel/include/CGAL/Cartesian/Weighted_point_3.h index 295686a3ac8..c1309fde4d8 100644 --- a/Cartesian_kernel/include/CGAL/Cartesian/Weighted_point_3.h +++ b/Cartesian_kernel/include/CGAL/Cartesian/Weighted_point_3.h @@ -79,7 +79,7 @@ template < class R_ > std::ostream & operator<<(std::ostream &os, const Weighted_pointC3 &p) { - switch(get_mode(os)) + switch(IO::get_mode(os)) { case IO::ASCII : return os << p.point() << " " << p.weight(); @@ -100,7 +100,7 @@ operator>>(std::istream &is, Weighted_pointC3 &wp) typename Weighted_pointC3::Point_3 p; is >> p; if(!is) return is; - if(is_ascii(is)) + if(IO::is_ascii(is)) is >> w; else read(is, w); diff --git a/Circular_kernel_2/include/CGAL/IO/Dxf_reader.h b/Circular_kernel_2/include/CGAL/IO/Dxf_reader.h index e72a21197dc..bf00857272b 100644 --- a/Circular_kernel_2/include/CGAL/IO/Dxf_reader.h +++ b/Circular_kernel_2/include/CGAL/IO/Dxf_reader.h @@ -120,13 +120,13 @@ private: is >> n; CGAL_assertion(n == 10); - is >> iformat(cx); + is >> IO::iformat(cx); is >> n; CGAL_assertion(n == 20); - is >> iformat(cy); + is >> IO::iformat(cy); is >> n; CGAL_assertion(n == 40); - is >> iformat(r); + is >> IO::iformat(r); FT sqr_ft(r*r); circ = typename K::Construct_circle_2()(Point_2(cx,cy), sqr_ft); } @@ -144,13 +144,13 @@ private: is >> n; CGAL_assertion(n == 10); - is >> iformat(cx); + is >> IO::iformat(cx); is >> n; CGAL_assertion(n == 20); - is >> iformat(cy); + is >> IO::iformat(cy); is >> n; CGAL_assertion(n == 40); - is >> iformat(r); + is >> IO::iformat(r); center = typename K::Construct_point_2()(cx,cy); rft = FT(r); // intentionally not squared @@ -181,10 +181,10 @@ read_polygon(std::istream& is, Polygon& poly) CGAL_assertion(n == 0); is >> n; CGAL_assertion(n == 10); - is >> iformat(x); + is >> IO::iformat(x); is >> n; CGAL_assertion(n == 20); - is >> iformat(y); + is >> IO::iformat(y); is >> n; len = 0; if(n == 42){ diff --git a/Circular_kernel_2/include/CGAL/IO/Dxf_reader_doubles.h b/Circular_kernel_2/include/CGAL/IO/Dxf_reader_doubles.h index df8895e6b33..4da1adc4c96 100644 --- a/Circular_kernel_2/include/CGAL/IO/Dxf_reader_doubles.h +++ b/Circular_kernel_2/include/CGAL/IO/Dxf_reader_doubles.h @@ -124,13 +124,13 @@ private: is >> n; CGAL_assertion(n == 10); - is >> iformat(cx); + is >> IO::iformat(cx); is >> n; CGAL_assertion(n == 20); - is >> iformat(cy); + is >> IO::iformat(cy); is >> n; CGAL_assertion(n == 40); - is >> iformat(r); + is >> IO::iformat(r); FT sqr_ft(r*r); circ = CGAL::make_array(cx,cy,sqr_ft); } @@ -160,10 +160,10 @@ read_polygon(std::istream& is, Polygon& poly) CGAL_assertion(n == 0); is >> n; CGAL_assertion(n == 10); - is >> iformat(x); + is >> IO::iformat(x); is >> n; CGAL_assertion(n == 20); - is >> iformat(y); + is >> IO::iformat(y); is >> n; len = 0; if(n == 42){ diff --git a/Classification/examples/Classification/gis_tutorial_example.cpp b/Classification/examples/Classification/gis_tutorial_example.cpp index c839400850b..fe90c423415 100644 --- a/Classification/examples/Classification/gis_tutorial_example.cpp +++ b/Classification/examples/Classification/gis_tutorial_example.cpp @@ -217,7 +217,7 @@ int main (int argc, char** argv) Mesh dsm_mesh; CGAL::copy_face_graph (dsm, dsm_mesh); std::ofstream dsm_ofile ("dsm.ply", std::ios_base::binary); - CGAL::set_binary_mode (dsm_ofile); + CGAL::IO::set_binary_mode (dsm_ofile); CGAL::IO::write_PLY (dsm_ofile, dsm_mesh); dsm_ofile.close(); @@ -322,7 +322,7 @@ int main (int argc, char** argv) }))); std::ofstream tin_colored_ofile ("colored_tin.ply", std::ios_base::binary); - CGAL::set_binary_mode (tin_colored_ofile); + CGAL::IO::set_binary_mode (tin_colored_ofile); CGAL::IO::write_PLY (tin_colored_ofile, tin_colored_mesh); tin_colored_ofile.close(); @@ -415,7 +415,7 @@ int main (int argc, char** argv) // Save original DTM std::ofstream dtm_ofile ("dtm.ply", std::ios_base::binary); - CGAL::set_binary_mode (dtm_ofile); + CGAL::IO::set_binary_mode (dtm_ofile); CGAL::IO::write_PLY (dtm_ofile, dtm_mesh); dtm_ofile.close(); @@ -439,7 +439,7 @@ int main (int argc, char** argv) // Save filtered DTM std::ofstream dtm_holes_ofile ("dtm_with_holes.ply", std::ios_base::binary); - CGAL::set_binary_mode (dtm_holes_ofile); + CGAL::IO::set_binary_mode (dtm_holes_ofile); CGAL::IO::write_PLY (dtm_holes_ofile, dtm_mesh); dtm_holes_ofile.close(); @@ -477,7 +477,7 @@ int main (int argc, char** argv) // Save DTM with holes filled std::ofstream dtm_filled_ofile ("dtm_filled.ply", std::ios_base::binary); - CGAL::set_binary_mode (dtm_filled_ofile); + CGAL::IO::set_binary_mode (dtm_filled_ofile); CGAL::IO::write_PLY (dtm_filled_ofile, dtm_mesh); dtm_filled_ofile.close(); @@ -490,7 +490,7 @@ int main (int argc, char** argv) CGAL::Polygon_mesh_processing::isotropic_remeshing (faces(dtm_mesh), spacing, dtm_mesh); std::ofstream dtm_remeshed_ofile ("dtm_remeshed.ply", std::ios_base::binary); - CGAL::set_binary_mode (dtm_remeshed_ofile); + CGAL::IO::set_binary_mode (dtm_remeshed_ofile); CGAL::IO::write_PLY (dtm_remeshed_ofile, dtm_mesh); dtm_remeshed_ofile.close(); @@ -736,7 +736,7 @@ int main (int argc, char** argv) // Save the classified point set std::ofstream classified_ofile ("classified.ply"); - CGAL::set_binary_mode (classified_ofile); + CGAL::IO::set_binary_mode (classified_ofile); classified_ofile << points; classified_ofile.close(); } diff --git a/Convex_hull_2/examples/Convex_hull_2/ch_from_cin_to_cout.cpp b/Convex_hull_2/examples/Convex_hull_2/ch_from_cin_to_cout.cpp index cb3d04d28da..957e316d045 100644 --- a/Convex_hull_2/examples/Convex_hull_2/ch_from_cin_to_cout.cpp +++ b/Convex_hull_2/examples/Convex_hull_2/ch_from_cin_to_cout.cpp @@ -6,8 +6,8 @@ typedef K::Point_2 Point_2; int main() { - CGAL::set_ascii_mode(std::cin); - CGAL::set_ascii_mode(std::cout); + CGAL::IO::set_ascii_mode(std::cin); + CGAL::IO::set_ascii_mode(std::cout); std::istream_iterator< Point_2 > in_start( std::cin ); std::istream_iterator< Point_2 > in_end; std::ostream_iterator< Point_2 > out( std::cout, "\n" ); diff --git a/Convex_hull_2/examples/Convex_hull_2/ch_graham_anderson.cpp b/Convex_hull_2/examples/Convex_hull_2/ch_graham_anderson.cpp index 019ede1ed24..68fb6ca8109 100644 --- a/Convex_hull_2/examples/Convex_hull_2/ch_graham_anderson.cpp +++ b/Convex_hull_2/examples/Convex_hull_2/ch_graham_anderson.cpp @@ -37,8 +37,8 @@ ch_graham_anderson( InputIterator first, InputIterator beyond, int main() { - CGAL::set_ascii_mode(std::cin); - CGAL::set_ascii_mode(std::cout); + CGAL::IO::set_ascii_mode(std::cin); + CGAL::IO::set_ascii_mode(std::cout); std::istream_iterator< Point_2 > in_start( std::cin ); std::istream_iterator< Point_2 > in_end; std::ostream_iterator< Point_2 > out( std::cout, "\n" ); diff --git a/Convex_hull_2/examples/Convex_hull_2/ch_timing.cpp b/Convex_hull_2/examples/Convex_hull_2/ch_timing.cpp index 591fd7213c5..c75adf6ac67 100644 --- a/Convex_hull_2/examples/Convex_hull_2/ch_timing.cpp +++ b/Convex_hull_2/examples/Convex_hull_2/ch_timing.cpp @@ -24,7 +24,7 @@ int main( int argc, char* argv[] ) } std::ifstream F( (argc >= 2) ? argv[1] : "files/CD500"); - CGAL::set_ascii_mode( F ); + CGAL::IO::set_ascii_mode( F ); std::istream_iterator< Point_2> in_start( F ); std::istream_iterator< Point_2> in_end; diff --git a/Convex_hull_d/test/Convex_hull_d/chull_d-test.cpp b/Convex_hull_d/test/Convex_hull_d/chull_d-test.cpp index 2ea6a0a2b4c..c0e79f7a2f8 100644 --- a/Convex_hull_d/test/Convex_hull_d/chull_d-test.cpp +++ b/Convex_hull_d/test/Convex_hull_d/chull_d-test.cpp @@ -25,7 +25,7 @@ typedef double RT; int main() { CGAL_KD_SETDTHREAD(11); - CGAL::set_pretty_mode ( std::cerr ); + CGAL::IO::set_pretty_mode ( std::cerr ); CGAL_TEST_START; { typedef CGAL::Homogeneous_d Kernel; diff --git a/Convex_hull_d/test/Convex_hull_d/delaunay_d-test.cpp b/Convex_hull_d/test/Convex_hull_d/delaunay_d-test.cpp index 5815e5affc5..1dc96b23f93 100644 --- a/Convex_hull_d/test/Convex_hull_d/delaunay_d-test.cpp +++ b/Convex_hull_d/test/Convex_hull_d/delaunay_d-test.cpp @@ -28,7 +28,7 @@ typedef double FT; int main() { - CGAL::set_pretty_mode ( std::cerr ); + CGAL::IO::set_pretty_mode ( std::cerr ); CGAL_KD_SETDTHREAD(193); CGAL_TEST_START; { diff --git a/Convex_hull_d/test/Convex_hull_d/include/CGAL/test_macros.h b/Convex_hull_d/test/Convex_hull_d/include/CGAL/test_macros.h index 7ba8334b2f1..369323eab84 100644 --- a/Convex_hull_d/test/Convex_hull_d/include/CGAL/test_macros.h +++ b/Convex_hull_d/test/Convex_hull_d/include/CGAL/test_macros.h @@ -14,7 +14,7 @@ else {} #define CGAL_IO_TEST(datao,datai,iomode) { \ std::stringstream S; \ - CGAL::set_mode(S,iomode); \ + CGAL::IO::set_mode(S,iomode); \ S << datao; \ if ( iomode != CGAL::IO::BINARY) \ S << '\n'; \ diff --git a/Generator/test/Generator/rcs_test.cpp b/Generator/test/Generator/rcs_test.cpp index b541bbe742d..89ea1bc8a64 100644 --- a/Generator/test/Generator/rcs_test.cpp +++ b/Generator/test/Generator/rcs_test.cpp @@ -37,7 +37,7 @@ using std::back_inserter; using CGAL::Simple_cartesian; using CGAL::Creator_uniform_2; using CGAL::Random_points_in_square_2; -using CGAL::set_pretty_mode; +using CGAL::IO::set_pretty_mode; using CGAL::random_convex_set_2; diff --git a/Geomview/include/CGAL/IO/Geomview_stream_impl.h b/Geomview/include/CGAL/IO/Geomview_stream_impl.h index 08a558043a7..216371cd715 100644 --- a/Geomview/include/CGAL/IO/Geomview_stream_impl.h +++ b/Geomview/include/CGAL/IO/Geomview_stream_impl.h @@ -197,7 +197,7 @@ Geomview_stream::pickplane(const Bbox_3 &bbox) // close the text bracket << "}) (pickable pickplane no)"; - set_ascii_mode(bin_bak); + IO::set_ascii_mode(bin_bak); } CGAL_INLINE_FUNCTION diff --git a/Hash_map/test/Hash_map/include/CGAL/test_macros.h b/Hash_map/test/Hash_map/include/CGAL/test_macros.h index 7ba8334b2f1..369323eab84 100644 --- a/Hash_map/test/Hash_map/include/CGAL/test_macros.h +++ b/Hash_map/test/Hash_map/include/CGAL/test_macros.h @@ -14,7 +14,7 @@ else {} #define CGAL_IO_TEST(datao,datai,iomode) { \ std::stringstream S; \ - CGAL::set_mode(S,iomode); \ + CGAL::IO::set_mode(S,iomode); \ S << datao; \ if ( iomode != CGAL::IO::BINARY) \ S << '\n'; \ diff --git a/Homogeneous_kernel/include/CGAL/Homogeneous/Weighted_point_2.h b/Homogeneous_kernel/include/CGAL/Homogeneous/Weighted_point_2.h index 9cc5691df9c..1b422904b90 100644 --- a/Homogeneous_kernel/include/CGAL/Homogeneous/Weighted_point_2.h +++ b/Homogeneous_kernel/include/CGAL/Homogeneous/Weighted_point_2.h @@ -79,7 +79,7 @@ template < class R_ > std::ostream & operator<<(std::ostream &os, const Weighted_pointH2 &p) { - switch(get_mode(os)) + switch(IO::get_mode(os)) { case IO::ASCII : return os << p.point() << " " << p.weight(); @@ -100,7 +100,7 @@ operator>>(std::istream &is, Weighted_pointH2 &wp) typename Weighted_pointH2::Point_2 p; is >> p; if(!is) return is; - if(is_ascii(is)) + if(IO::is_ascii(is)) is >> w; else read(is, w); diff --git a/Homogeneous_kernel/include/CGAL/Homogeneous/Weighted_point_3.h b/Homogeneous_kernel/include/CGAL/Homogeneous/Weighted_point_3.h index 6d9c5bf6e4b..6c32feaf000 100644 --- a/Homogeneous_kernel/include/CGAL/Homogeneous/Weighted_point_3.h +++ b/Homogeneous_kernel/include/CGAL/Homogeneous/Weighted_point_3.h @@ -79,7 +79,7 @@ template < class R_ > std::ostream & operator<<(std::ostream &os, const Weighted_pointH3 &p) { - switch(get_mode(os)) + switch(IO::get_mode(os)) { case IO::ASCII : return os << p.point() << " " << p.weight(); @@ -100,7 +100,7 @@ operator>>(std::istream &is, Weighted_pointH3 &wp) typename Weighted_pointH3::Point_3 p; is >> p; if(!is) return is; - if(is_ascii(is)) + if(IO::is_ascii(is)) is >> w; else read(is, w); diff --git a/Intersections_3/test/Intersections_3/bbox_other_do_intersect_test.cpp b/Intersections_3/test/Intersections_3/bbox_other_do_intersect_test.cpp index cbb17fc2f35..29debe09068 100644 --- a/Intersections_3/test/Intersections_3/bbox_other_do_intersect_test.cpp +++ b/Intersections_3/test/Intersections_3/bbox_other_do_intersect_test.cpp @@ -243,7 +243,7 @@ bool test_case(const FT& px, const FT& py, const FT& pz, { if(!exactness_issue || exact_k) { b = false; - CGAL::set_pretty_mode(std::cerr); + CGAL::IO::set_pretty_mode(std::cerr); std::cerr.precision(17); std::cerr << "Wrong result for do_intersect(" << Bbox_3(bxmin, bymin, bzmin, diff --git a/Intersections_3/test/Intersections_3/test_intersections_3.cpp b/Intersections_3/test/Intersections_3/test_intersections_3.cpp index 65ec3326031..b8953c92b8b 100644 --- a/Intersections_3/test/Intersections_3/test_intersections_3.cpp +++ b/Intersections_3/test/Intersections_3/test_intersections_3.cpp @@ -545,7 +545,7 @@ struct Test { if(b != b_tree) { std::stringstream err_msg; err_msg.precision(17); - CGAL::set_pretty_mode(err_msg); + CGAL::IO::set_pretty_mode(err_msg); err_msg << "do_intersect(\n" << " " << unit_bbox << "\n,\n" << " " << tr diff --git a/Jet_fitting_3/examples/Jet_fitting_3/Mesh_estimation.cpp b/Jet_fitting_3/examples/Jet_fitting_3/Mesh_estimation.cpp index 0945986b171..2f39fdad0f2 100644 --- a/Jet_fitting_3/examples/Jet_fitting_3/Mesh_estimation.cpp +++ b/Jet_fitting_3/examples/Jet_fitting_3/Mesh_estimation.cpp @@ -198,7 +198,7 @@ std::cerr << "res4openGL_fname" << res4openGL_fname << std::endl; verbose_fname = w_if_name + ".verb.txt"; out_verbose.open(verbose_fname.c_str(), std::ios::out); assert(out_verbose.good()); - CGAL::set_pretty_mode(out_verbose); + CGAL::IO::set_pretty_mode(out_verbose); } unsigned int nb_vertices_considered = 0;//count vertices for verbose diff --git a/Jet_fitting_3/examples/Jet_fitting_3/Single_estimation.cpp b/Jet_fitting_3/examples/Jet_fitting_3/Single_estimation.cpp index 2b8d10999ec..cd4a53291fd 100644 --- a/Jet_fitting_3/examples/Jet_fitting_3/Single_estimation.cpp +++ b/Jet_fitting_3/examples/Jet_fitting_3/Single_estimation.cpp @@ -52,7 +52,7 @@ int main(int argc, char *argv[]) monge_form = monge_fit(in_points.begin(), in_points.end(), d_fitting, d_monge); //OUTPUT on std::cout - CGAL::set_pretty_mode(std::cout); + CGAL::IO::set_pretty_mode(std::cout); std::cout << "vertex : " << in_points[0] << std::endl << "number of points used : " << in_points.size() << std::endl << monge_form; diff --git a/Kernel_23/examples/Kernel_23/MyPointC2_iostream.h b/Kernel_23/examples/Kernel_23/MyPointC2_iostream.h index 9e0365ebd15..76473c6264c 100644 --- a/Kernel_23/examples/Kernel_23/MyPointC2_iostream.h +++ b/Kernel_23/examples/Kernel_23/MyPointC2_iostream.h @@ -4,7 +4,7 @@ std::ostream & operator<<(std::ostream &os, const MyPointC2 &p) { - switch(CGAL::get_mode(os)) { + switch(CGAL::IO::get_mode(os)) { case CGAL::IO::ASCII : return os << p.x() << ' ' << p.y() << ' ' << p.color(); case CGAL::IO::BINARY : @@ -24,7 +24,7 @@ operator>>(std::istream &is, MyPointC2 &p) { double x, y; int c; - switch(CGAL::get_mode(is)) { + switch(CGAL::IO::get_mode(is)) { case CGAL::IO::ASCII : is >> x >> y >> c; break; diff --git a/Kernel_23/examples/Kernel_23/MySegmentC2.h b/Kernel_23/examples/Kernel_23/MySegmentC2.h index bca24c85bc9..903cb5a5b89 100644 --- a/Kernel_23/examples/Kernel_23/MySegmentC2.h +++ b/Kernel_23/examples/Kernel_23/MySegmentC2.h @@ -224,7 +224,7 @@ template < class R > std::ostream & operator<<(std::ostream &os, const MySegmentC2 &s) { - switch(CGAL::get_mode(os)) { + switch(CGAL::IO::get_mode(os)) { case CGAL::IO::ASCII : return os << s.source() << ' ' << s.target(); case CGAL::IO::BINARY : diff --git a/Kernel_23/include/CGAL/Bbox_2.h b/Kernel_23/include/CGAL/Bbox_2.h index cb84444425a..e3e118f9240 100644 --- a/Kernel_23/include/CGAL/Bbox_2.h +++ b/Kernel_23/include/CGAL/Bbox_2.h @@ -176,7 +176,7 @@ inline std::ostream& operator<<(std::ostream &os, const Bbox_2 &b) { - switch(get_mode(os)) { + switch(IO::get_mode(os)) { case IO::ASCII : os << b.xmin() << ' ' << b.ymin() << ' ' << b.xmax() << ' ' << b.ymax(); @@ -205,9 +205,9 @@ operator>>(std::istream &is, Bbox_2 &b) double xmax = 0; double ymax = 0; - switch(get_mode(is)) { + switch(IO::get_mode(is)) { case IO::ASCII : - is >> iformat(xmin) >> iformat(ymin) >> iformat(xmax) >> iformat(ymax); + is >> IO::iformat(xmin) >> IO::iformat(ymin) >> IO::iformat(xmax) >> IO::iformat(ymax); break; case IO::BINARY : read(is, xmin); diff --git a/Kernel_23/include/CGAL/Bbox_3.h b/Kernel_23/include/CGAL/Bbox_3.h index 2f5b6e49425..a013e041291 100644 --- a/Kernel_23/include/CGAL/Bbox_3.h +++ b/Kernel_23/include/CGAL/Bbox_3.h @@ -205,7 +205,7 @@ inline std::ostream& operator<<(std::ostream &os, const Bbox_3& b) { - switch(get_mode(os)) + switch(IO::get_mode(os)) { case IO::ASCII : return os << b.xmin() << ' ' << b.ymin() << ' ' << b.zmin() @@ -241,11 +241,11 @@ operator>>(std::istream &is, Bbox_3& b) double ymax = 0; double zmax = 0; - switch(get_mode(is)) + switch(IO::get_mode(is)) { case IO::ASCII : - is >> iformat(xmin) >> iformat(ymin) >> iformat(zmin) - >> iformat(xmax) >> iformat(ymax) >> iformat(zmax); + is >> IO::iformat(xmin) >> IO::iformat(ymin) >> IO::iformat(zmin) + >> IO::iformat(xmax) >> IO::iformat(ymax) >> IO::iformat(zmax); break; case IO::BINARY : read(is, xmin); diff --git a/Kernel_23/include/CGAL/Circle_2.h b/Kernel_23/include/CGAL/Circle_2.h index a1cc8092654..a94c4f2f598 100644 --- a/Kernel_23/include/CGAL/Circle_2.h +++ b/Kernel_23/include/CGAL/Circle_2.h @@ -221,7 +221,7 @@ template std::ostream& insert(std::ostream& os, const Circle_2& c) { - switch(get_mode(os)) { + switch(IO::get_mode(os)) { case IO::ASCII : os << c.center() << ' ' << c.squared_radius() << ' ' << static_cast(c.orientation()); @@ -264,9 +264,9 @@ extract(std::istream& is, Circle_2& c) typename R::Point_2 center; typename R::FT squared_radius(0); int o=0; - switch(get_mode(is)) { + switch(IO::get_mode(is)) { case IO::ASCII : - is >> center >> iformat(squared_radius) >> o; + is >> center >> IO::iformat(squared_radius) >> o; break; case IO::BINARY : is >> center; diff --git a/Kernel_23/include/CGAL/Direction_2.h b/Kernel_23/include/CGAL/Direction_2.h index 37f1196d794..9d512db64de 100644 --- a/Kernel_23/include/CGAL/Direction_2.h +++ b/Kernel_23/include/CGAL/Direction_2.h @@ -180,7 +180,7 @@ std::ostream& insert(std::ostream& os, const Direction_2& d, const Cartesian_tag&) { typename R::Vector_2 v = d.to_vector(); - switch(get_mode(os)) { + switch(IO::get_mode(os)) { case IO::ASCII : return os << v.x() << ' ' << v.y(); case IO::BINARY : @@ -196,7 +196,7 @@ template std::ostream& insert(std::ostream& os, const Direction_2& d, const Homogeneous_tag&) { - switch(get_mode(os)) + switch(IO::get_mode(os)) { case IO::ASCII : return os << d.dx() << ' ' << d.dy(); @@ -223,9 +223,9 @@ std::istream& extract(std::istream& is, Direction_2& d, const Cartesian_tag&) { typename R::FT x(0), y(0); - switch(get_mode(is)) { + switch(IO::get_mode(is)) { case IO::ASCII : - is >> iformat(x) >> iformat(y); + is >> IO::iformat(x) >> IO::iformat(y); break; case IO::BINARY : read(is, x); @@ -247,10 +247,10 @@ std::istream& extract(std::istream& is, Direction_2& d, const Homogeneous_tag&) { typename R::RT x, y; - switch(get_mode(is)) + switch(IO::get_mode(is)) { case IO::ASCII : - is >> iformat(x) >> iformat(y); + is >> IO::iformat(x) >> IO::iformat(y); break; case IO::BINARY : read(is, x); diff --git a/Kernel_23/include/CGAL/Direction_3.h b/Kernel_23/include/CGAL/Direction_3.h index 77be97c63be..aedb284da3f 100644 --- a/Kernel_23/include/CGAL/Direction_3.h +++ b/Kernel_23/include/CGAL/Direction_3.h @@ -133,7 +133,7 @@ std::ostream& insert(std::ostream& os, const Direction_3& d, const Cartesian_tag&) { typename R::Vector_3 v = d.to_vector(); - switch(get_mode(os)) { + switch(IO::get_mode(os)) { case IO::ASCII : return os << v.x() << ' ' << v.y() << ' ' << v.z(); case IO::BINARY : @@ -151,7 +151,7 @@ template std::ostream& insert(std::ostream& os, const Direction_3& d, const Homogeneous_tag&) { - switch(get_mode(os)) + switch(IO::get_mode(os)) { case IO::ASCII : return os << d.dx() << ' ' << d.dy() << ' ' << d.dz(); @@ -180,9 +180,9 @@ std::istream& extract(std::istream& is, Direction_3& d, const Cartesian_tag&) { typename R::FT x(0), y(0), z(0); - switch(get_mode(is)) { + switch(IO::get_mode(is)) { case IO::ASCII : - is >> iformat(x) >> iformat(y) >> iformat(z); + is >> IO::iformat(x) >> IO::iformat(y) >> IO::iformat(z); break; case IO::BINARY : read(is, x); @@ -205,10 +205,10 @@ std::istream& extract(std::istream& is, Direction_3& d, const Homogeneous_tag&) { typename R::RT x, y, z; - switch(get_mode(is)) + switch(IO::get_mode(is)) { case IO::ASCII : - is >> iformat(x) >> iformat(y) >> iformat(z); + is >> IO::iformat(x) >> IO::iformat(y) >> IO::iformat(z); break; case IO::BINARY : read(is, x); diff --git a/Kernel_23/include/CGAL/Iso_cuboid_3.h b/Kernel_23/include/CGAL/Iso_cuboid_3.h index 9c241a184ec..6a004ca5ce1 100644 --- a/Kernel_23/include/CGAL/Iso_cuboid_3.h +++ b/Kernel_23/include/CGAL/Iso_cuboid_3.h @@ -231,7 +231,7 @@ template < class R > std::ostream & operator<<(std::ostream& os, const Iso_cuboid_3& r) { - switch(get_mode(os)) { + switch(IO::get_mode(os)) { case IO::ASCII : return os << (r.min)() << ' ' << (r.max)(); case IO::BINARY : diff --git a/Kernel_23/include/CGAL/Iso_rectangle_2.h b/Kernel_23/include/CGAL/Iso_rectangle_2.h index 10041882ce5..5929236e1a1 100644 --- a/Kernel_23/include/CGAL/Iso_rectangle_2.h +++ b/Kernel_23/include/CGAL/Iso_rectangle_2.h @@ -222,7 +222,7 @@ template < class R > std::ostream & operator<<(std::ostream &os, const Iso_rectangle_2 &r) { - switch(get_mode(os)) { + switch(IO::get_mode(os)) { case IO::ASCII : return os << (r.min)() << ' ' << (r.max)(); case IO::BINARY : diff --git a/Kernel_23/include/CGAL/Line_2.h b/Kernel_23/include/CGAL/Line_2.h index 79b4dcbc9f8..605193d46c7 100644 --- a/Kernel_23/include/CGAL/Line_2.h +++ b/Kernel_23/include/CGAL/Line_2.h @@ -240,7 +240,7 @@ template std::ostream& insert(std::ostream& os, const Line_2& l) { - switch(get_mode(os)) { + switch(IO::get_mode(os)) { case IO::ASCII : return os << l.a() << ' ' << l.b() << ' ' << l.c(); case IO::BINARY : @@ -267,9 +267,9 @@ std::istream& extract(std::istream& is, Line_2& l) { typename R::RT a(0), b(0), c(0); - switch(get_mode(is)) { + switch(IO::get_mode(is)) { case IO::ASCII : - is >> iformat(a) >> iformat(b) >> iformat(c); + is >> IO::iformat(a) >> IO::iformat(b) >> IO::iformat(c); break; case IO::BINARY : read(is, a); diff --git a/Kernel_23/include/CGAL/Line_3.h b/Kernel_23/include/CGAL/Line_3.h index ef303c87d34..c17c39eb8d4 100644 --- a/Kernel_23/include/CGAL/Line_3.h +++ b/Kernel_23/include/CGAL/Line_3.h @@ -138,7 +138,7 @@ template < class R > std::ostream & operator<<(std::ostream &os, const Line_3 &l) { - switch(get_mode(os)) { + switch(IO::get_mode(os)) { case IO::ASCII : return os << l.point(0) << ' ' << l.point(1); case IO::BINARY : diff --git a/Kernel_23/include/CGAL/Plane_3.h b/Kernel_23/include/CGAL/Plane_3.h index 659cde8d50b..058c96b919e 100644 --- a/Kernel_23/include/CGAL/Plane_3.h +++ b/Kernel_23/include/CGAL/Plane_3.h @@ -228,7 +228,7 @@ template < class R > std::ostream & operator<<(std::ostream &os, const Plane_3 &p) { - switch(get_mode(os)) { + switch(IO::get_mode(os)) { case IO::ASCII : return os << p.a() << ' ' << p.b() << ' ' << p.c() << ' ' << p.d(); case IO::BINARY : @@ -249,9 +249,9 @@ std::istream & operator>>(std::istream &is, Plane_3 &p) { typename R::RT a(0), b(0), c(0), d(0); - switch(get_mode(is)) { + switch(IO::get_mode(is)) { case IO::ASCII : - is >> iformat(a) >> iformat(b) >> iformat(c) >> iformat(d); + is >> IO::iformat(a) >> IO::iformat(b) >> IO::iformat(c) >> IO::iformat(d); break; case IO::BINARY : read(is, a); diff --git a/Kernel_23/include/CGAL/Point_2.h b/Kernel_23/include/CGAL/Point_2.h index 1d4403354b7..297817303ee 100644 --- a/Kernel_23/include/CGAL/Point_2.h +++ b/Kernel_23/include/CGAL/Point_2.h @@ -190,7 +190,7 @@ template std::ostream& insert(std::ostream& os, const Point_2& p,const Cartesian_tag&) { - switch(get_mode(os)) { + switch(IO::get_mode(os)) { case IO::ASCII : return os << p.x() << ' ' << p.y(); case IO::BINARY : @@ -206,7 +206,7 @@ template std::ostream& insert(std::ostream& os, const Point_2& p,const Homogeneous_tag&) { - switch(get_mode(os)) + switch(IO::get_mode(os)) { case IO::ASCII : return os << p.hx() << ' ' << p.hy() << ' ' << p.hw(); @@ -235,9 +235,9 @@ std::istream& extract(std::istream& is, Point_2& p, const Cartesian_tag&) { typename R::FT x(0), y(0); - switch(get_mode(is)) { + switch(IO::get_mode(is)) { case IO::ASCII : - is >> iformat(x) >> iformat(y); + is >> IO::iformat(x) >> IO::iformat(y); break; case IO::BINARY : read(is, x); @@ -260,7 +260,7 @@ std::istream& extract(std::istream& is, Point_2& p, const Homogeneous_tag&) { typename R::RT hx, hy, hw; - switch(get_mode(is)) + switch(IO::get_mode(is)) { case IO::ASCII : is >> hx >> hy >> hw; diff --git a/Kernel_23/include/CGAL/Point_3.h b/Kernel_23/include/CGAL/Point_3.h index a8487afeb38..77858d83689 100644 --- a/Kernel_23/include/CGAL/Point_3.h +++ b/Kernel_23/include/CGAL/Point_3.h @@ -216,7 +216,7 @@ template std::ostream& insert(std::ostream& os, const Point_3& p,const Cartesian_tag&) { - switch(get_mode(os)) { + switch(IO::get_mode(os)) { case IO::ASCII : return os << p.x() << ' ' << p.y() << ' ' << p.z(); case IO::BINARY : @@ -234,7 +234,7 @@ template std::ostream& insert(std::ostream& os, const Point_3& p,const Homogeneous_tag&) { - switch(get_mode(os)) + switch(IO::get_mode(os)) { case IO::ASCII : return os << p.hx() << ' ' << p.hy() << ' ' << p.hz() << ' ' << p.hw(); @@ -265,9 +265,9 @@ std::istream& extract(std::istream& is, Point_3& p, const Cartesian_tag&) { typename R::FT x(0), y(0), z(0); - switch(get_mode(is)) { + switch(IO::get_mode(is)) { case IO::ASCII : - is >> iformat(x) >> iformat(y) >> iformat(z); + is >> IO::iformat(x) >> IO::iformat(y) >> IO::iformat(z); break; case IO::BINARY : read(is, x); @@ -291,7 +291,7 @@ std::istream& extract(std::istream& is, Point_3& p, const Homogeneous_tag&) { typename R::RT hx, hy, hz, hw; - switch(get_mode(is)) + switch(IO::get_mode(is)) { case IO::ASCII : is >> hx >> hy >> hz >> hw; diff --git a/Kernel_23/include/CGAL/Ray_2.h b/Kernel_23/include/CGAL/Ray_2.h index 732ea145918..161b11fc01e 100644 --- a/Kernel_23/include/CGAL/Ray_2.h +++ b/Kernel_23/include/CGAL/Ray_2.h @@ -198,7 +198,7 @@ template std::ostream& insert(std::ostream& os, const Ray_2& r, const Cartesian_tag&) { - switch(get_mode(os)) { + switch(IO::get_mode(os)) { case IO::ASCII : return os << r.source() << ' ' << r.second_point(); case IO::BINARY : @@ -212,7 +212,7 @@ template std::ostream& insert(std::ostream& os, const Ray_2& r, const Homogeneous_tag&) { - switch(get_mode(os)) + switch(IO::get_mode(os)) { case IO::ASCII : return os << r.source() << ' ' << r.second_point(); diff --git a/Kernel_23/include/CGAL/Ray_3.h b/Kernel_23/include/CGAL/Ray_3.h index 6854f30a46f..fe0c2e056e5 100644 --- a/Kernel_23/include/CGAL/Ray_3.h +++ b/Kernel_23/include/CGAL/Ray_3.h @@ -166,7 +166,7 @@ template std::ostream& insert(std::ostream& os, const Ray_3& r, const Cartesian_tag&) { - switch(get_mode(os)) { + switch(IO::get_mode(os)) { case IO::ASCII : return os << r.start() << ' ' << r.direction(); case IO::BINARY : @@ -180,7 +180,7 @@ template std::ostream& insert(std::ostream& os, const Ray_3& r, const Homogeneous_tag&) { - switch(get_mode(os)) + switch(IO::get_mode(os)) { case IO::ASCII : return os << r.start() << ' ' << r.direction(); diff --git a/Kernel_23/include/CGAL/Segment_2.h b/Kernel_23/include/CGAL/Segment_2.h index 8143beeb5c0..72773d62789 100644 --- a/Kernel_23/include/CGAL/Segment_2.h +++ b/Kernel_23/include/CGAL/Segment_2.h @@ -242,7 +242,7 @@ template < class R > std::ostream & operator<<(std::ostream &os, const Segment_2 &s) { - switch(get_mode(os)) { + switch(IO::get_mode(os)) { case IO::ASCII : return os << s.source() << ' ' << s.target(); case IO::BINARY : diff --git a/Kernel_23/include/CGAL/Segment_3.h b/Kernel_23/include/CGAL/Segment_3.h index fa0e4e7569d..1274e3d7868 100644 --- a/Kernel_23/include/CGAL/Segment_3.h +++ b/Kernel_23/include/CGAL/Segment_3.h @@ -173,7 +173,7 @@ template < class R > std::ostream & operator<<(std::ostream &os, const Segment_3 &s) { - switch(get_mode(os)) { + switch(IO::get_mode(os)) { case IO::ASCII : return os << s.source() << ' ' << s.target(); case IO::BINARY : diff --git a/Kernel_23/include/CGAL/Sphere_3.h b/Kernel_23/include/CGAL/Sphere_3.h index 246801a068e..59f3d142cd1 100644 --- a/Kernel_23/include/CGAL/Sphere_3.h +++ b/Kernel_23/include/CGAL/Sphere_3.h @@ -208,7 +208,7 @@ template std::ostream& insert(std::ostream& os, const Sphere_3& c,const Cartesian_tag&) { - switch(get_mode(os)) { + switch(IO::get_mode(os)) { case IO::ASCII : os << c.center() << ' ' << c.squared_radius() << ' ' << static_cast(c.orientation()); @@ -240,7 +240,7 @@ template std::ostream& insert(std::ostream& os, const Sphere_3& c, const Homogeneous_tag&) { - switch(get_mode(os)) { + switch(IO::get_mode(os)) { case IO::ASCII : os << c.center() << ' ' << c.squared_radius() << ' ' << static_cast(c.orientation()); @@ -283,7 +283,7 @@ extract(std::istream& is, Sphere_3& c, const Cartesian_tag&) typename R::Point_3 center; typename R::FT squared_radius(0); int o=0; - switch(get_mode(is)) { + switch(IO::get_mode(is)) { case IO::ASCII : is >> center >> squared_radius >> o; break; @@ -311,7 +311,7 @@ extract(std::istream& is, Sphere_3& c, const Homogeneous_tag&) typename R::Point_3 center; typename R::FT squared_radius; int o=0; - switch(get_mode(is)) { + switch(IO::get_mode(is)) { case IO::ASCII : is >> center >> squared_radius >> o; break; diff --git a/Kernel_23/include/CGAL/Tetrahedron_3.h b/Kernel_23/include/CGAL/Tetrahedron_3.h index 634e73434da..edbe34c85ce 100644 --- a/Kernel_23/include/CGAL/Tetrahedron_3.h +++ b/Kernel_23/include/CGAL/Tetrahedron_3.h @@ -147,7 +147,7 @@ template < class R > std::ostream & operator<<(std::ostream &os, const Tetrahedron_3 &t) { - switch(get_mode(os)) { + switch(IO::get_mode(os)) { case IO::ASCII : return os << t[0] << ' ' << t[1] << ' ' << t[2] << ' ' << t[3]; case IO::BINARY : diff --git a/Kernel_23/include/CGAL/Triangle_2.h b/Kernel_23/include/CGAL/Triangle_2.h index 5cc5aa97cad..2b7d6b5a0aa 100644 --- a/Kernel_23/include/CGAL/Triangle_2.h +++ b/Kernel_23/include/CGAL/Triangle_2.h @@ -175,7 +175,7 @@ template < class R > std::ostream & operator<<(std::ostream &os, const Triangle_2 &t) { - switch(get_mode(os)) { + switch(IO::get_mode(os)) { case IO::ASCII : return os << t[0] << ' ' << t[1] << ' ' << t[2]; case IO::BINARY : diff --git a/Kernel_23/include/CGAL/Triangle_3.h b/Kernel_23/include/CGAL/Triangle_3.h index 7999ca64f82..a1e2348e165 100644 --- a/Kernel_23/include/CGAL/Triangle_3.h +++ b/Kernel_23/include/CGAL/Triangle_3.h @@ -117,7 +117,7 @@ template < class R > std::ostream & operator<<(std::ostream &os, const Triangle_3 &t) { - switch(get_mode(os)) { + switch(IO::get_mode(os)) { case IO::ASCII : return os << t[0] << ' ' << t[1] << ' ' << t[2]; case IO::BINARY : diff --git a/Kernel_23/include/CGAL/Vector_2.h b/Kernel_23/include/CGAL/Vector_2.h index 8c08dfd29d5..bc8e6a72a03 100644 --- a/Kernel_23/include/CGAL/Vector_2.h +++ b/Kernel_23/include/CGAL/Vector_2.h @@ -290,7 +290,7 @@ template std::ostream& insert(std::ostream& os, const Vector_2& v, const Cartesian_tag&) { - switch(get_mode(os)) { + switch(IO::get_mode(os)) { case IO::ASCII : return os << v.x() << ' ' << v.y(); case IO::BINARY : @@ -306,7 +306,7 @@ template std::ostream& insert(std::ostream& os, const Vector_2& v, const Homogeneous_tag&) { - switch(get_mode(os)) + switch(IO::get_mode(os)) { case IO::ASCII : return os << v.hx() << ' ' << v.hy() << ' ' << v.hw(); @@ -336,9 +336,9 @@ std::istream& extract(std::istream& is, Vector_2& v, const Cartesian_tag&) { typename R::FT x(0), y(0); - switch(get_mode(is)) { + switch(IO::get_mode(is)) { case IO::ASCII : - is >> iformat(x) >> iformat(y); + is >> IO::iformat(x) >> IO::iformat(y); break; case IO::BINARY : read(is, x); @@ -361,7 +361,7 @@ std::istream& extract(std::istream& is, Vector_2& v, const Homogeneous_tag&) { typename R::RT hx, hy, hw; - switch(get_mode(is)) + switch(IO::get_mode(is)) { case IO::ASCII : is >> hx >> hy >> hw; diff --git a/Kernel_23/include/CGAL/Vector_3.h b/Kernel_23/include/CGAL/Vector_3.h index 681e3ec7ceb..75e071c0a7c 100644 --- a/Kernel_23/include/CGAL/Vector_3.h +++ b/Kernel_23/include/CGAL/Vector_3.h @@ -267,7 +267,7 @@ template std::ostream& insert(std::ostream& os, const Vector_3& v, const Cartesian_tag&) { - switch(get_mode(os)) { + switch(IO::get_mode(os)) { case IO::ASCII : return os << v.x() << ' ' << v.y() << ' ' << v.z(); case IO::BINARY : @@ -285,7 +285,7 @@ template std::ostream& insert(std::ostream& os, const Vector_3& v, const Homogeneous_tag&) { - switch(get_mode(os)) + switch(IO::get_mode(os)) { case IO::ASCII : return os << v.hx() << ' ' << v.hy() << ' ' << v.hz() << ' ' << v.hw(); @@ -316,9 +316,9 @@ std::istream& extract(std::istream& is, Vector_3& v, const Cartesian_tag&) { typename R::FT x(0), y(0), z(0); - switch(get_mode(is)) { + switch(IO::get_mode(is)) { case IO::ASCII : - is >> iformat(x) >> iformat(y) >> iformat(z); + is >> IO::iformat(x) >> IO::iformat(y) >> IO::iformat(z); break; case IO::BINARY : read(is, x); @@ -341,7 +341,7 @@ std::istream& extract(std::istream& is, Vector_3& v, const Homogeneous_tag&) { typename R::RT hx, hy, hz, hw; - switch(get_mode(is)) + switch(IO::get_mode(is)) { case IO::ASCII : is >> hx >> hy >> hz >> hw; diff --git a/Kernel_23/include/CGAL/Weighted_point_2.h b/Kernel_23/include/CGAL/Weighted_point_2.h index 68742e47973..006fbe8cbc0 100644 --- a/Kernel_23/include/CGAL/Weighted_point_2.h +++ b/Kernel_23/include/CGAL/Weighted_point_2.h @@ -236,7 +236,7 @@ template std::ostream& insert(std::ostream& os, const Weighted_point_2& p,const Cartesian_tag&) { - switch(get_mode(os)) { + switch(IO::get_mode(os)) { case IO::ASCII : return os << p.point() << ' ' << p.weight(); case IO::BINARY : @@ -253,7 +253,7 @@ template std::ostream& insert(std::ostream& os, const Weighted_point_2& p,const Homogeneous_tag&) { - switch(get_mode(os)) + switch(IO::get_mode(os)) { case IO::ASCII : return os << p.point() << ' ' << p.weight(); @@ -283,9 +283,9 @@ std::istream& extract(std::istream& is, Weighted_point_2& p, const Cartesian_tag&) { typename R::FT x, y, weight; - switch(get_mode(is)) { + switch(IO::get_mode(is)) { case IO::ASCII : - is >> iformat(x) >> iformat(y) >> iformat(weight); + is >> IO::iformat(x) >> IO::iformat(y) >> IO::iformat(weight); break; case IO::BINARY : read(is, x); @@ -309,7 +309,7 @@ extract(std::istream& is, Weighted_point_2& p, const Homogeneous_tag&) { typename R::RT hx, hy, hw; typename R::FT weight; - switch(get_mode(is)) + switch(IO::get_mode(is)) { case IO::ASCII : is >> hx >> hy >> hw >> weight; diff --git a/Kernel_23/include/CGAL/Weighted_point_3.h b/Kernel_23/include/CGAL/Weighted_point_3.h index 37aa35f5f4b..25e2eeaa62e 100644 --- a/Kernel_23/include/CGAL/Weighted_point_3.h +++ b/Kernel_23/include/CGAL/Weighted_point_3.h @@ -251,7 +251,7 @@ template std::ostream& insert(std::ostream& os, const Weighted_point_3& p,const Cartesian_tag&) { - switch(get_mode(os)) { + switch(IO::get_mode(os)) { case IO::ASCII : return os << p.point() << ' ' << p.weight(); case IO::BINARY : @@ -270,7 +270,7 @@ template std::ostream& insert(std::ostream& os, const Weighted_point_3& p,const Homogeneous_tag&) { - switch(get_mode(os)) + switch(IO::get_mode(os)) { case IO::ASCII : return os << p.hx() << ' ' << p.hy() << ' ' << p.hz() << ' ' << p.hw() << ' ' << p.weight(); @@ -303,9 +303,9 @@ std::istream& extract(std::istream& is, Weighted_point_3& p, const Cartesian_tag&) { typename R::FT x, y, z, weight; - switch(get_mode(is)) { + switch(IO::get_mode(is)) { case IO::ASCII : - is >> iformat(x) >> iformat(y) >> iformat(z) >> iformat(weight); + is >> IO::iformat(x) >> IO::iformat(y) >> IO::iformat(z) >> IO::iformat(weight); break; case IO::BINARY : read(is, x); @@ -330,7 +330,7 @@ extract(std::istream& is, Weighted_point_3& p, const Homogeneous_tag&) { typename R::RT hx, hy, hz, hw; typename R::FT weight; - switch(get_mode(is)) + switch(IO::get_mode(is)) { case IO::ASCII : is >> hx >> hy >> hz >> hw >> weight; diff --git a/Kernel_d/include/CGAL/Kernel_d/Matrix__.h b/Kernel_d/include/CGAL/Kernel_d/Matrix__.h index 5ecbfcc10b7..779137a2ccc 100644 --- a/Kernel_d/include/CGAL/Kernel_d/Matrix__.h +++ b/Kernel_d/include/CGAL/Kernel_d/Matrix__.h @@ -746,7 +746,7 @@ std::ostream& operator<<(std::ostream& os, const Matrix_& M) int d = M.row_dimension(); int k = M.column_dimension(); - switch (get_mode(os)) { + switch (IO::get_mode(os)) { case CGAL::IO::BINARY: CGAL::write( os, d); CGAL::write( os, k); @@ -790,7 +790,7 @@ std::istream& operator>>(std::istream& is, Matrix_& M) x_d2,0 ... x_d2,d1-1 */ int cdim, rdim, i; - switch(get_mode(is)) { + switch(IO::get_mode(is)) { case CGAL::IO::BINARY : CGAL::read(is,rdim); CGAL::read(is,cdim); diff --git a/Kernel_d/include/CGAL/Kernel_d/Pair_d.h b/Kernel_d/include/CGAL/Kernel_d/Pair_d.h index a5cbbd2482f..6f9c435e07a 100644 --- a/Kernel_d/include/CGAL/Kernel_d/Pair_d.h +++ b/Kernel_d/include/CGAL/Kernel_d/Pair_d.h @@ -61,7 +61,7 @@ Direction_d direction() const void read(std::istream& is) { - switch( get_mode(is) ) { + switch( IO::get_mode(is) ) { case CGAL::IO::ASCII : is >> _p[0] >> _p[1]; break; case CGAL::IO::BINARY : @@ -73,7 +73,7 @@ void read(std::istream& is) void print(std::ostream& os, const char* _name) const { - switch( get_mode(os) ) { + switch( IO::get_mode(os) ) { case CGAL::IO::ASCII : os << _p[0] << " " << _p[1]; break; case CGAL::IO::BINARY : diff --git a/Kernel_d/include/CGAL/Kernel_d/Tuple_d.h b/Kernel_d/include/CGAL/Kernel_d/Tuple_d.h index 30539b5512d..9468a19db47 100644 --- a/Kernel_d/include/CGAL/Kernel_d/Tuple_d.h +++ b/Kernel_d/include/CGAL/Kernel_d/Tuple_d.h @@ -212,7 +212,7 @@ Comparison_result operator()( template void Tuple_d::print(std::ostream& os, const char* l) const { int i; - switch( get_mode(os) ) { + switch( IO::get_mode(os) ) { case CGAL::IO::ASCII : os << size() << " "; for (i = 0; i < size(); ++i) @@ -235,7 +235,7 @@ void Tuple_d::print(std::ostream& os, const char* l) const template void Tuple_d::read(std::istream& is) { int i = 0, d; - switch( get_mode(is) ) { + switch( IO::get_mode(is) ) { case CGAL::IO::ASCII : is >> d; v = Vector(d); while (i < d && is >> v[i] ) ++i; diff --git a/Kernel_d/include/CGAL/Kernel_d/Vector__.h b/Kernel_d/include/CGAL/Kernel_d/Vector__.h index 94a49f3f264..efeb82ad8e1 100644 --- a/Kernel_d/include/CGAL/Kernel_d/Vector__.h +++ b/Kernel_d/include/CGAL/Kernel_d/Vector__.h @@ -405,7 +405,7 @@ std::ostream& operator<<(std::ostream& os, const Vector_& v) /*{\Xbinopfunc writes |\Mvar| componentwise to the output stream $O$.}*/ { /* syntax: d x_0 x_1 ... x_d-1 */ int d = v.dimension(); - switch (get_mode(os)) { + switch (IO::get_mode(os)) { case CGAL::IO::BINARY: CGAL::write( os, d); for ( int i = 0; i < d; ++i) @@ -434,7 +434,7 @@ std::istream& operator>>(std::istream& is, Vector_& v) /*{\Xbinopfunc reads |\Mvar| componentwise from the input stream $I$.}*/ { /* syntax: d x_0 x_1 ... x_d-1 */ int d; - switch (get_mode(is)) { + switch (IO::get_mode(is)) { case CGAL::IO::ASCII : case CGAL::IO::BINARY : is >> d; diff --git a/Kernel_d/test/Kernel_d/Linear_algebra-test.cpp b/Kernel_d/test/Kernel_d/Linear_algebra-test.cpp index 543de175b53..cc12532746e 100644 --- a/Kernel_d/test/Kernel_d/Linear_algebra-test.cpp +++ b/Kernel_d/test/Kernel_d/Linear_algebra-test.cpp @@ -30,7 +30,7 @@ typedef double FT; int main(int argc, char* argv[]) { CGAL_KD_SETDTHREAD(151); - CGAL::set_pretty_mode ( std::cerr ); + CGAL::IO::set_pretty_mode ( std::cerr ); CGAL_TEST_START; { typedef RT NT; diff --git a/Kernel_d/test/Kernel_d/include/CGAL/test_macros.h b/Kernel_d/test/Kernel_d/include/CGAL/test_macros.h index 53dbe3cc356..94eee89202d 100644 --- a/Kernel_d/test/Kernel_d/include/CGAL/test_macros.h +++ b/Kernel_d/test/Kernel_d/include/CGAL/test_macros.h @@ -13,7 +13,7 @@ else #define CGAL_IO_TEST(datao,datai,iomode) { \ std::stringstream S; \ - CGAL::set_mode(S,iomode); \ + CGAL::IO::set_mode(S,iomode); \ S << datao; \ if ( iomode != CGAL::IO::BINARY) \ S << '\n'; \ diff --git a/Kernel_d/test/Kernel_d/interface-test.cpp b/Kernel_d/test/Kernel_d/interface-test.cpp index 17f962823c8..1429ac6ac76 100644 --- a/Kernel_d/test/Kernel_d/interface-test.cpp +++ b/Kernel_d/test/Kernel_d/interface-test.cpp @@ -24,7 +24,7 @@ typedef double FT_; int main() { CGAL_KD_SETDTHREAD(2); - CGAL::set_pretty_mode ( std::cerr ); + CGAL::IO::set_pretty_mode ( std::cerr ); CGAL_TEST_START; { // Homogeneous Kernel typedef CGAL::Homogeneous_d Kernel; diff --git a/Kernel_d/test/Kernel_d/intersection-test.cpp b/Kernel_d/test/Kernel_d/intersection-test.cpp index 2735aa0fc72..3f22d193653 100644 --- a/Kernel_d/test/Kernel_d/intersection-test.cpp +++ b/Kernel_d/test/Kernel_d/intersection-test.cpp @@ -29,7 +29,7 @@ typedef CGAL::Quotient FT; #endif int main() -{ CGAL::set_pretty_mode ( std::cerr ); +{ CGAL::IO::set_pretty_mode ( std::cerr ); CGAL_TEST_START; { typedef CGAL::Homogeneous_d Kernel; diff --git a/Linear_cell_complex/examples/Linear_cell_complex/gmap_linear_cell_complex_3.cpp b/Linear_cell_complex/examples/Linear_cell_complex/gmap_linear_cell_complex_3.cpp index 7e4d6771338..fbb3f60d826 100644 --- a/Linear_cell_complex/examples/Linear_cell_complex/gmap_linear_cell_complex_3.cpp +++ b/Linear_cell_complex/examples/Linear_cell_complex/gmap_linear_cell_complex_3.cpp @@ -49,7 +49,7 @@ int main() // Display all the vertices of the lcc by iterating on the // Vertex_attribute container. - CGAL::set_ascii_mode(std::cout); + CGAL::IO::set_ascii_mode(std::cout); std::cout<<"Vertices: "; for (LCC_3::Vertex_attribute_const_range::iterator v=lcc.vertex_attributes().begin(), diff --git a/Linear_cell_complex/examples/Linear_cell_complex/linear_cell_complex_3.cpp b/Linear_cell_complex/examples/Linear_cell_complex/linear_cell_complex_3.cpp index 9704f6fed30..929390f6b0a 100644 --- a/Linear_cell_complex/examples/Linear_cell_complex/linear_cell_complex_3.cpp +++ b/Linear_cell_complex/examples/Linear_cell_complex/linear_cell_complex_3.cpp @@ -48,7 +48,7 @@ int main() // Display all the vertices of the lcc by iterating on the // Vertex_attribute container. - CGAL::set_ascii_mode(std::cout); + CGAL::IO::set_ascii_mode(std::cout); std::cout<<"Vertices: "; for (LCC_3::Vertex_attribute_const_range::iterator v=lcc.vertex_attributes().begin(), diff --git a/Linear_cell_complex/include/CGAL/Linear_cell_complex_constructors.h b/Linear_cell_complex/include/CGAL/Linear_cell_complex_constructors.h index 211c76a78ae..9ec501d454b 100644 --- a/Linear_cell_complex/include/CGAL/Linear_cell_complex_constructors.h +++ b/Linear_cell_complex/include/CGAL/Linear_cell_complex_constructors.h @@ -156,7 +156,7 @@ namespace CGAL { } FT x, y; - ais >> iformat(x) >> iformat(y); + ais >> IO::iformat(x) >> IO::iformat(y); vertices.push_back(Point{x, y}); --numVertices; } @@ -305,8 +305,8 @@ namespace CGAL { } File_header_OFF header(false); - header.set_binary(is_binary(out)); - header.set_no_comments(!is_pretty(out)); + header.set_binary(IO::is_binary(out)); + header.set_no_comments(!IO::is_pretty(out)); File_writer_OFF writer( header); writer.header().set_polyhedral_surface(true); writer.header().set_halfedges(alcc.number_of_darts()); diff --git a/Mesh_3/archive/applications/slivers_exuder.cpp b/Mesh_3/archive/applications/slivers_exuder.cpp index 1d02cef1932..a3d13d27e0c 100644 --- a/Mesh_3/archive/applications/slivers_exuder.cpp +++ b/Mesh_3/archive/applications/slivers_exuder.cpp @@ -69,7 +69,7 @@ int main(int argc, char** argv) timer.stop(); std::cout << " Pumping done. CPU time: " << timer.time() << std::endl; - CGAL::set_binary_mode(ofs); + CGAL::IO::set_binary_mode(ofs); std::cout << " Writing " << argv[2] << std::endl; CGAL::Mesh_3::output_mesh(ofs, c2t3); ofs.close(); diff --git a/Mesh_3/include/CGAL/Compact_mesh_cell_base_3.h b/Mesh_3/include/CGAL/Compact_mesh_cell_base_3.h index 13fd9f70083..765c2a373c9 100644 --- a/Mesh_3/include/CGAL/Compact_mesh_cell_base_3.h +++ b/Mesh_3/include/CGAL/Compact_mesh_cell_base_3.h @@ -669,7 +669,7 @@ public: friend std::istream& operator>>(std::istream &is, Compact_mesh_cell_3 &c) { Subdomain_index index; - if(is_ascii(is)) + if(IO::is_ascii(is)) is >> index; else read(is, index); @@ -678,8 +678,8 @@ public: for(int i = 0; i < 4; ++i) { Surface_patch_index i2; - if(is_ascii(is)) - is >> iformat(i2); + if(IO::is_ascii(is)) + is >> IO::iformat(i2); else { read(is, i2); @@ -693,14 +693,14 @@ public: friend std::ostream& operator<<(std::ostream &os, const Compact_mesh_cell_3 &c) { - if(is_ascii(os)) + if(IO::is_ascii(os)) os << c.subdomain_index(); else write(os, c.subdomain_index()); for(int i = 0; i < 4; ++i) { - if(is_ascii(os)) - os << ' ' << oformat(c.surface_patch_index(i)); + if(IO::is_ascii(os)) + os << ' ' << IO::oformat(c.surface_patch_index(i)); else write(os, c.surface_patch_index(i)); } diff --git a/Mesh_3/include/CGAL/IO/File_binary_mesh_3.h b/Mesh_3/include/CGAL/IO/File_binary_mesh_3.h index 2bf7931ff35..a2a87ee45ca 100644 --- a/Mesh_3/include/CGAL/IO/File_binary_mesh_3.h +++ b/Mesh_3/include/CGAL/IO/File_binary_mesh_3.h @@ -35,9 +35,9 @@ save_binary_file(std::ostream& os, if(binary) os << "binary "; os << "CGAL c3t3 " << CGAL::Get_io_signature()() << "\n"; if(binary) { - CGAL::set_binary_mode(os); + CGAL::IO::set_binary_mode(os); } else { - CGAL::set_ascii_mode(os); + CGAL::IO::set_ascii_mode(os); os.precision(std::numeric_limits::digits10+2); } return !!(os << c3t3); @@ -71,7 +71,7 @@ bool load_binary_file(std::istream& is, C3T3& c3t3) return false; } } - if(binary) CGAL::set_binary_mode(is); + if(binary) CGAL::IO::set_binary_mode(is); is >> c3t3; return !!is; // call operator!() twice, because operator bool() is C++11 diff --git a/Mesh_3/include/CGAL/Mesh_3/Dump_c3t3.h b/Mesh_3/include/CGAL/Mesh_3/Dump_c3t3.h index 427472d4b2d..5a798e665e0 100644 --- a/Mesh_3/include/CGAL/Mesh_3/Dump_c3t3.h +++ b/Mesh_3/include/CGAL/Mesh_3/Dump_c3t3.h @@ -55,7 +55,7 @@ struct Dump_c3t3 { std::string signature = CGAL::Get_io_signature()(); CGAL_assertion(signature != std::string()); bin_file << "binary CGAL c3t3 " << signature << "\n"; - CGAL::set_binary_mode(bin_file); + CGAL::IO::set_binary_mode(bin_file); bin_file << c3t3; } }; // end struct template Dump_c3t3 diff --git a/Mesh_3/include/CGAL/Mesh_3/Mesh_surface_cell_base_3.h b/Mesh_3/include/CGAL/Mesh_3/Mesh_surface_cell_base_3.h index 90a0e1ec909..3e5437c8244 100644 --- a/Mesh_3/include/CGAL/Mesh_3/Mesh_surface_cell_base_3.h +++ b/Mesh_3/include/CGAL/Mesh_3/Mesh_surface_cell_base_3.h @@ -283,7 +283,7 @@ operator>>(std::istream &is, Mesh_surface_cell_base_3 &c) is >> static_cast(c); for(int i = 0; i < 4; ++i) { - if(is_ascii(is)) + if(IO::is_ascii(is)) is >> index; else { @@ -303,8 +303,8 @@ operator<<(std::ostream &os, os << static_cast(c); for(int i = 0; i < 4; ++i) { - if(is_ascii(os)) - os << ' ' << oformat(c.surface_patch_index(i)); + if(IO::is_ascii(os)) + os << ' ' << IO::oformat(c.surface_patch_index(i)); else write(os, c.surface_patch_index(i)); } diff --git a/Mesh_3/include/CGAL/Mesh_3/Protect_edges_sizing_field.h b/Mesh_3/include/CGAL/Mesh_3/Protect_edges_sizing_field.h index a5cb40496a5..e0328dab5d2 100644 --- a/Mesh_3/include/CGAL/Mesh_3/Protect_edges_sizing_field.h +++ b/Mesh_3/include/CGAL/Mesh_3/Protect_edges_sizing_field.h @@ -102,7 +102,7 @@ void debug_dump_c3t3(const std::string filename, const C3t3& c3t3) std::ofstream out(filename.c_str(), std::ios_base::out|std::ios_base::binary); out << "binary CGAL c3t3 " << CGAL::Get_io_signature()() << "\n"; - CGAL::set_binary_mode(out); + CGAL::IO::set_binary_mode(out); out << c3t3; } @@ -578,7 +578,7 @@ insert_corners() Index p_index = domain_.index_from_corner_index(cit->first); #if CGAL_MESH_3_PROTECTION_DEBUG & 1 - std::cerr << "** treat corner #" << CGAL::oformat(p_index) << std::endl; + std::cerr << "** treat corner #" << CGAL::IO::oformat(p_index) << std::endl; #endif // Get weight (the ball radius is given by the 'query_size' function) @@ -679,7 +679,7 @@ insert_point(const Bare_point& p, const Weight& w, int dim, const Index& index, std::cerr << " ERROR dim=" << dim << " index="; } - std::cerr << CGAL::oformat(index) << std::endl; + std::cerr << CGAL::IO::oformat(index) << std::endl; if(v == Vertex_handle()) std::cerr << " HIDDEN!\n"; std::cerr << "The weight was " << w << std::endl; @@ -708,7 +708,7 @@ smart_insert_point(const Bare_point& p, Weight w, int dim, const Index& index, std::cerr << "smart_insert_point( (" << p << "), w=" << w << ", dim=" << dim - << ", index=" << CGAL::oformat(index) << ")\n"; + << ", index=" << CGAL::IO::oformat(index) << ")\n"; #endif const Tr& tr = c3t3_.triangulation(); @@ -1498,7 +1498,7 @@ change_ball_size(const Vertex_handle& v, const FT squared_size, const bool speci #if CGAL_MESH_3_PROTECTION_DEBUG & 1 std::cerr << "change_ball_size(v=" << disp_vert(v) << " dim=" << c3t3_.in_dimension(v) - << " index=" << CGAL::oformat(c3t3_.index(v)) + << " index=" << CGAL::IO::oformat(c3t3_.index(v)) << " ,\n" << " (squared) size=" << w << ", special_ball=" << std::boolalpha << special_ball << std::endl; @@ -1636,7 +1636,7 @@ check_and_fix_vertex_along_edge(const Vertex_handle& v, ErasedVeOutIt out) std::cerr << "check_and_fix_vertex_along_edge(" << disp_vert(v) << " dim=" << get_dimension(v) - << " index=" << CGAL::oformat(c3t3_.index(v)) + << " index=" << CGAL::IO::oformat(c3t3_.index(v)) << " special=" << std::boolalpha << is_special(v) << ")\n"; #endif @@ -1906,7 +1906,7 @@ repopulate(InputIterator begin, InputIterator last, std::cerr << "repopulate(begin=" << disp_vert(*begin) << "\n" << " last=" << disp_vert(*last) << "\n" << " distance(begin, last)=" << std::distance(begin, last) << ",\n" - << " index=" << CGAL::oformat(index) << ",\n" + << " index=" << CGAL::IO::oformat(index) << ",\n" << " orientation=" << orientation << ")\n"; #endif CGAL_assertion( std::distance(begin,last) >= 0 ); @@ -1946,7 +1946,7 @@ repopulate(InputIterator begin, InputIterator last, default: std::cerr << " ERROR dim=" << get_dimension(*current) << " index="; } - std::cerr << CGAL::oformat(c3t3_.index(*current)) << std::endl; + std::cerr << CGAL::IO::oformat(c3t3_.index(*current)) << std::endl; #endif // CGAL_MESH_3_PROTECTION_DEBUG *out++ = *current; c3t3_.triangulation().remove(*current); @@ -1971,7 +1971,7 @@ analyze_and_repopulate(InputIterator begin, InputIterator last, std::cerr << "analyze_and_repopulate(begin=" << disp_vert(*begin) << "\n" << " last=" << disp_vert(*last) << "\n" << " distance(begin, last)=" << std::distance(begin, last) << ",\n" - << " index=" << CGAL::oformat(index) << ",\n" + << " index=" << CGAL::IO::oformat(index) << ",\n" << " orientation=" << orientation << ")\n"; #endif CGAL_assertion( std::distance(begin,last) >= 0 ); diff --git a/Mesh_3/include/CGAL/Mesh_3/experimental/Sizing_field_with_aabb_tree.h b/Mesh_3/include/CGAL/Mesh_3/experimental/Sizing_field_with_aabb_tree.h index 300d63900d3..0dcff62901b 100644 --- a/Mesh_3/include/CGAL/Mesh_3/experimental/Sizing_field_with_aabb_tree.h +++ b/Mesh_3/include/CGAL/Mesh_3/experimental/Sizing_field_with_aabb_tree.h @@ -174,7 +174,7 @@ struct Sizing_field_with_aabb_tree #ifdef CGAL_MESH_3_PROTECTION_HIGH_VERBOSITY if(dim <= 1) { std::cerr << "Sizing(" << p << ", dim=" << dim - << ", index=#" << CGAL::oformat(id) << "): "; + << ", index=#" << CGAL::IO::oformat(id) << "): "; } #endif // CGAL_MESH_3_PROTECTION_HIGH_VERBOSITY double result = d_; @@ -258,12 +258,12 @@ struct Sizing_field_with_aabb_tree "Ids are { ") % group(setprecision(17),result) % group(setprecision(17),p) - % CGAL::oformat(get(facet_patch_id_map, + % CGAL::IO::oformat(get(facet_patch_id_map, projection_traits.closest_point_and_primitive().second)) % group(setprecision(17), projection_traits.closest_point_and_primitive().first); for(Patch_index i : ids) { - s << CGAL::oformat(i) << " "; + s << CGAL::IO::oformat(i) << " "; } s << "}\n"; std::cerr << s.str(); @@ -327,10 +327,10 @@ struct Sizing_field_with_aabb_tree "Closest face id: %4%\n" "Ids are { ") % result % p % curve_id - % CGAL::oformat(get(facet_patch_id_map, + % CGAL::IO::oformat(get(facet_patch_id_map, projection_traits.closest_point_and_primitive().second)); for(Patch_index i : ids) { - s << CGAL::oformat(i) << " "; + s << CGAL::IO::oformat(i) << " "; } s << "}\n"; std::cerr << s.str(); @@ -346,10 +346,10 @@ struct Sizing_field_with_aabb_tree "Closest face id: %4%\n" "Ids are { ") % result % p % curve_id - % CGAL::oformat(get(facet_patch_id_map, + % CGAL::IO::oformat(get(facet_patch_id_map, projection_traits.closest_point_and_primitive().second)); for(Patch_index i : ids) { - s << CGAL::oformat(i) << " "; + s << CGAL::IO::oformat(i) << " "; } s << "}\n"; CGAL_assertion_msg(result <=0, s.str().c_str()); @@ -364,7 +364,7 @@ struct Sizing_field_with_aabb_tree % result % p % curve_id % projection_traits.closest_point_and_primitive().second->patch_id(); for(Patch_index i : ids) { - s << CGAL::oformat(i) << " "; + s << CGAL::IO::oformat(i) << " "; } s << "}\n"; std::cerr << "ERROR at " << __FILE__ << " line " << __LINE__ << " :\n" diff --git a/Mesh_3/include/CGAL/Mesh_cell_base_3.h b/Mesh_3/include/CGAL/Mesh_cell_base_3.h index 2babd0cc5db..b944bdad4ac 100644 --- a/Mesh_3/include/CGAL/Mesh_cell_base_3.h +++ b/Mesh_3/include/CGAL/Mesh_cell_base_3.h @@ -248,7 +248,7 @@ operator>>(std::istream &is, Mesh_cell_base_3 &c) { typename Mesh_cell_base_3::Subdomain_index index; - if(is_ascii(is)) + if(IO::is_ascii(is)) is >> index; else read(is, index); @@ -263,7 +263,7 @@ std::ostream& operator<<(std::ostream &os, const Mesh_cell_base_3 &c) { - if(is_ascii(os)) + if(IO::is_ascii(os)) os << c.subdomain_index(); else write(os, c.subdomain_index()); diff --git a/Mesh_3/include/CGAL/Mesh_vertex_base_3.h b/Mesh_3/include/CGAL/Mesh_vertex_base_3.h index ecb1f9464c5..ddda978ed2c 100644 --- a/Mesh_3/include/CGAL/Mesh_vertex_base_3.h +++ b/Mesh_3/include/CGAL/Mesh_vertex_base_3.h @@ -248,7 +248,7 @@ public: { is >> static_cast(v); int dimension; - if(is_ascii(is)) { + if(IO::is_ascii(is)) { is >> dimension; } else { @@ -267,7 +267,7 @@ public: friend std::ostream& operator<<(std::ostream &os, const Mesh_vertex_3& v) { os << static_cast(v); - if(is_ascii(os)) { + if(IO::is_ascii(os)) { os << " " << v.in_dimension() << " "; } else { diff --git a/Mesh_3/include/CGAL/internal/Mesh_3/Handle_IO_for_pair_of_int.h b/Mesh_3/include/CGAL/internal/Mesh_3/Handle_IO_for_pair_of_int.h index 7def0a39e9b..b8b9c0c6182 100644 --- a/Mesh_3/include/CGAL/internal/Mesh_3/Handle_IO_for_pair_of_int.h +++ b/Mesh_3/include/CGAL/internal/Mesh_3/Handle_IO_for_pair_of_int.h @@ -41,7 +41,7 @@ public: Output_rep( const T& tt) : t(tt) {} //! perform the output, calls \c operator\<\< by default. std::ostream& operator()( std::ostream& out) const { - if(is_ascii(out)) { + if(IO::is_ascii(out)) { out << t.first << " " << t.second; } else { CGAL::write(out, t.first); @@ -62,7 +62,7 @@ public: Output_rep(const Variant& v) : v(v) {} std::ostream& operator()( std::ostream& out) const { if(v.which() == 1) { - out << oformat(boost::get >(v)); + out << IO::oformat(boost::get >(v)); } else { out << boost::get(v); } @@ -79,7 +79,7 @@ public: Input_rep( T& tt) : t(tt) {} //! perform the output, calls \c operator\<\< by default. std::istream& operator()( std::istream& in) const { - if(is_ascii(in)) { + if(IO::is_ascii(in)) { in >> t.first >> t.second; } else { CGAL::read(in, t.first); diff --git a/Mesh_3/include/CGAL/internal/Mesh_3/indices_management.h b/Mesh_3/include/CGAL/internal/Mesh_3/indices_management.h index fdb84a6c82b..a4b05a9cc61 100644 --- a/Mesh_3/include/CGAL/internal/Mesh_3/indices_management.h +++ b/Mesh_3/include/CGAL/internal/Mesh_3/indices_management.h @@ -163,13 +163,13 @@ struct Read_mesh_domain_index { switch(dimension) { case 0: typename MT::Corner_index ci; - if(is_ascii(is)) is >> ci; + if(IO::is_ascii(is)) is >> ci; else CGAL::read(is, ci); return ci; break; case 1: typename MT::Curve_index si; - if(is_ascii(is)) is >> si; + if(IO::is_ascii(is)) is >> si; else CGAL::read(is, si); return si; break; @@ -195,13 +195,13 @@ struct Write_mesh_domain_index { switch(dimension) { case 0: { const Ci& ci = get_index(index); - if(is_ascii(os)) os << oformat(ci); + if(IO::is_ascii(os)) os << IO::oformat(ci); else CGAL::write(os, ci); } break; case 1: { const Si& si = get_index(index); - if(is_ascii(os)) os << oformat(si); + if(IO::is_ascii(os)) os << IO::oformat(si); else CGAL::write(os, si); } break; @@ -223,14 +223,14 @@ struct Read_mesh_domain_index { switch(dimension) { case 2: { typename MT::Surface_patch_index spi; - if(is_ascii(is)) is >> iformat(spi); + if(IO::is_ascii(is)) is >> IO::iformat(spi); else CGAL::read(is, spi); return spi; } break; default: {// 3 typename MT::Subdomain_index di; - if(is_ascii(is)) is >> iformat(di); + if(IO::is_ascii(is)) is >> IO::iformat(di); else CGAL::read(is, di); return di; } @@ -254,13 +254,13 @@ struct Write_mesh_domain_index { switch(dimension) { case 2: { const Spi& spi = get_index(index); - if(is_ascii(os)) os << oformat(spi); + if(IO::is_ascii(os)) os << IO::oformat(spi); else CGAL::write(os, spi); } break; default: {// 3 const Di& di = get_index(index); - if(is_ascii(os)) os << oformat(di); + if(IO::is_ascii(os)) os << IO::oformat(di); else CGAL::write(os, di); } break; @@ -272,12 +272,12 @@ struct Write_mesh_domain_index { template struct Read_write_index { void operator()(std::ostream& os, int, Index index) const { - if(is_ascii(os)) os << oformat(index); + if(IO::is_ascii(os)) os << IO::oformat(index); else CGAL::write(os, index); } Index operator()(std::istream& is, int) const { Index index; - if(is_ascii(is)) is >> iformat(index); + if(IO::is_ascii(is)) is >> IO::iformat(index); else CGAL::read(is, index); return index; } @@ -287,7 +287,7 @@ struct Variant_write_visitor { std::ostream& os; template void operator()(T v) const { - if(is_ascii(os)) os << CGAL::oformat(v); + if(IO::is_ascii(os)) os << CGAL::IO::oformat(v); else CGAL::write(os, v); } }; @@ -299,7 +299,7 @@ struct Variant_read_visitor { template void operator()(T) const { T v; - if(is_ascii(is)) is >> CGAL::iformat(v); + if(IO::is_ascii(is)) is >> CGAL::IO::iformat(v); else CGAL::read(is, v); variant = v; } diff --git a/Mesh_3/test/Mesh_3/test_c3t3_io.cpp b/Mesh_3/test/Mesh_3/test_c3t3_io.cpp index 233120d7ef7..5e75b344e14 100644 --- a/Mesh_3/test/Mesh_3/test_c3t3_io.cpp +++ b/Mesh_3/test/Mesh_3/test_c3t3_io.cpp @@ -85,7 +85,7 @@ public: Output_rep( const T& tt) : t(tt) {} //! perform the output, calls \c operator\<\< by default. std::ostream& operator()( std::ostream& out) const { - if(is_ascii(out)) { + if(IO::is_ascii(out)) { out << (int)t; } else { CGAL::write(out, (int)t); @@ -104,7 +104,7 @@ public: //! perform the output, calls \c operator\<\< by default. std::istream& operator()( std::istream& in) const { int i; - if(is_ascii(in)) { + if(IO::is_ascii(in)) { in >> i; } else { CGAL::read(in, i); @@ -119,11 +119,11 @@ public: namespace std { std::ostream& operator<<(std::ostream& out, MD_heterogeneous_types::Subdomain_index index) { - return out << CGAL::oformat(index); + return out << CGAL::IO::oformat(index); } std::istream& operator>>(std::istream& in, MD_heterogeneous_types::Subdomain_index& index) { - return in >> CGAL::iformat(index); + return in >> CGAL::IO::iformat(index); } } // end namespace std @@ -153,7 +153,7 @@ public: Output_rep( const T& tt) : t(tt) {} //! perform the output, calls \c operator\<\< by default. std::ostream& operator()( std::ostream& out) const { - if(is_ascii(out)) { + if(IO::is_ascii(out)) { out << t.first << " " << t.second; } else { CGAL::write(out, t.first); @@ -172,7 +172,7 @@ public: Input_rep( T& tt) : t(tt) {} //! perform the output, calls \c operator\<\< by default. std::istream& operator()( std::istream& in) const { - if(is_ascii(in)) { + if(IO::is_ascii(in)) { in >> t.first >> t.second; } else { CGAL::read(in, t.first); @@ -187,11 +187,11 @@ public: namespace std { std::ostream& operator<<(std::ostream& out, MD_heterogeneous_types::Surface_patch_index index) { - return out << CGAL::oformat(index); + return out << CGAL::IO::oformat(index); } std::istream& operator>>(std::istream& in, MD_heterogeneous_types::Surface_patch_index& index) { - return in >> CGAL::iformat(index); + return in >> CGAL::IO::iformat(index); } } // end namespace std @@ -332,7 +332,7 @@ struct Test_c3t3_io { std::cout << "IO format: " << CGAL::Get_io_signature()() << std::endl; std::stringstream stream(mode); if(binary) { - CGAL::set_binary_mode(stream); + CGAL::IO::set_binary_mode(stream); } stream << c3t3; if(!binary) { diff --git a/Modular_arithmetic/examples/Modular_arithmetic/modular_filter.cpp b/Modular_arithmetic/examples/Modular_arithmetic/modular_filter.cpp index 52920116692..4d6f223fc32 100644 --- a/Modular_arithmetic/examples/Modular_arithmetic/modular_filter.cpp +++ b/Modular_arithmetic/examples/Modular_arithmetic/modular_filter.cpp @@ -67,7 +67,7 @@ Polynomial modular_filtered_gcd(const Polynomial& p1, const Polynomial& p2){ } int main(){ - CGAL::set_pretty_mode(std::cout); + CGAL::IO::set_pretty_mode(std::cout); typedef CGAL::Gmpz NT; typedef CGAL::Polynomial Poly; diff --git a/Nef_2/examples/Nef_2/nef_2_exploration.cpp b/Nef_2/examples/Nef_2/nef_2_exploration.cpp index 011b2887dbd..3895ce9ba78 100644 --- a/Nef_2/examples/Nef_2/nef_2_exploration.cpp +++ b/Nef_2/examples/Nef_2/nef_2_exploration.cpp @@ -76,7 +76,7 @@ void explore(std::string s, const Nef_polyhedron& poly) int main() { - CGAL::set_pretty_mode(std::cout); + CGAL::IO::set_pretty_mode(std::cout); Nef_polyhedron N0(Nef_polyhedron::COMPLETE); explore("complete", N0); diff --git a/Nef_2/include/CGAL/Filtered_extended_homogeneous.h b/Nef_2/include/CGAL/Filtered_extended_homogeneous.h index 31f67e9e45d..f1d2ae85290 100644 --- a/Nef_2/include/CGAL/Filtered_extended_homogeneous.h +++ b/Nef_2/include/CGAL/Filtered_extended_homogeneous.h @@ -144,7 +144,7 @@ inline double to_double(const SPolynomial& p) template std::ostream& operator<<(std::ostream& os, const SPolynomial& p) { - switch( get_mode(os) ) { + switch( IO::get_mode(os) ) { case CGAL::IO::ASCII : os << p.m() << " " << p.n(); break; case CGAL::IO::BINARY : @@ -158,7 +158,7 @@ std::ostream& operator<<(std::ostream& os, const SPolynomial& p) template std::istream& operator>>(std::istream& is, SPolynomial& p) { RT m,n; - switch( get_mode(is) ){ + switch( IO::get_mode(is) ){ case CGAL::IO::ASCII : is >> m >> n; p = SPolynomial(m,n); break; case CGAL::IO::BINARY : @@ -309,7 +309,7 @@ CheckPoint checkrep() const template std::ostream& operator<<(std::ostream& os, const Extended_point& p) -{ switch( get_mode(os) ) { +{ switch( IO::get_mode(os) ) { case CGAL::IO::ASCII : os << p.hx() << " " << p.hy() << " " << p.hw(); break; case CGAL::IO::BINARY : @@ -327,7 +327,7 @@ std::ostream& operator<<(std::ostream& os, const Extended_point& p) template std::istream& operator>>(std::istream& is, Extended_point& p) { SPolynomial x,y; RT w; - switch( get_mode(is) ){ + switch( IO::get_mode(is) ){ case CGAL::IO::ASCII : is >> x >> y >> w; break; case CGAL::IO::BINARY : diff --git a/Nef_2/include/CGAL/Nef_2/PM_checker.h b/Nef_2/include/CGAL/Nef_2/PM_checker.h index ab2c590a361..a971ee5b946 100644 --- a/Nef_2/include/CGAL/Nef_2/PM_checker.h +++ b/Nef_2/include/CGAL/Nef_2/PM_checker.h @@ -124,7 +124,7 @@ check_order_preserving_embedding(Vertex_const_handle v) const { if ( is_isolated(v) ) return; std::ostringstream error_status; - CGAL::set_pretty_mode ( error_status ); + CGAL::IO::set_pretty_mode ( error_status ); Halfedge_const_handle ef = first_out_edge(v) ,e=ef,en,enn; error_status << "check_order_preserving_embedding\n"; error_status << "vertex " << PV(v) << std::endl; @@ -251,7 +251,7 @@ check_is_triangulation() const CGAL::Unique_hash_map< Halfedge_const_iterator, bool> on_boundary(false); Halfedge_around_face_const_circulator hit(eb), hend(hit); std::ostringstream error_status; - CGAL::set_pretty_mode ( error_status ); + CGAL::IO::set_pretty_mode ( error_status ); error_status << "check_is_triangulation\n"; error_status << "on boundary:\n"; CGAL_For_all(hit,hend) { diff --git a/Nef_2/include/CGAL/Nef_2/PM_const_decorator.h b/Nef_2/include/CGAL/Nef_2/PM_const_decorator.h index ab08adba6cc..8ccfb77c1b6 100644 --- a/Nef_2/include/CGAL/Nef_2/PM_const_decorator.h +++ b/Nef_2/include/CGAL/Nef_2/PM_const_decorator.h @@ -398,7 +398,7 @@ void check_integrity_and_topological_planarity(bool faces=true) const; template std::string PV(VH v) -{ std::ostringstream os; CGAL::set_pretty_mode(os); +{ std::ostringstream os; CGAL::IO::set_pretty_mode(os); if (v != VH()) os << v->point(); else os << "nil"; return os.str(); diff --git a/Nef_2/include/CGAL/Nef_2/PM_io_parser.h b/Nef_2/include/CGAL/Nef_2/PM_io_parser.h index 39b99b37d7c..2ad7ebf2739 100644 --- a/Nef_2/include/CGAL/Nef_2/PM_io_parser.h +++ b/Nef_2/include/CGAL/Nef_2/PM_io_parser.h @@ -117,8 +117,8 @@ to output |H| to |os|.}*/ vn(Base::number_of_vertices()), en(Base::number_of_halfedges()), fn(Base::number_of_faces()) -{ verbose = (get_mode(out) != CGAL::IO::ASCII && - get_mode(out) != CGAL::IO::BINARY); +{ verbose = (IO::get_mode(out) != CGAL::IO::ASCII && + IO::get_mode(out) != CGAL::IO::BINARY); } @@ -130,8 +130,8 @@ PM_io_parser(std::ostream& os, const PMDEC& D) vn(Base::number_of_vertices()), en(Base::number_of_halfedges()), fn(Base::number_of_faces()) -{ verbose = (get_mode(out) != CGAL::IO::ASCII && - get_mode(out) != CGAL::IO::BINARY); +{ verbose = (IO::get_mode(out) != CGAL::IO::ASCII && + IO::get_mode(out) != CGAL::IO::BINARY); } diff --git a/Nef_2/include/CGAL/Nef_2/Polynomial.h b/Nef_2/include/CGAL/Nef_2/Polynomial.h index d2a146f6392..30c5963b4ad 100644 --- a/Nef_2/include/CGAL/Nef_2/Polynomial.h +++ b/Nef_2/include/CGAL/Nef_2/Polynomial.h @@ -1737,7 +1737,7 @@ template std::ostream& operator << (std::ostream& os, const Polynomial& p) { int i; - switch( get_mode(os) ) + switch( IO::get_mode(os) ) { case CGAL::IO::ASCII : os << p.degree() << ' '; @@ -1773,7 +1773,7 @@ std::istream& operator >> (std::istream& is, Polynomial& p) { char ch; NT c; bool pretty = false; - switch( get_mode(is) ) { + switch( IO::get_mode(is) ) { case CGAL::IO::ASCII : case CGAL::IO::PRETTY : is >> ch; diff --git a/Nef_2/test/Nef_2/EPoint-test.cpp b/Nef_2/test/Nef_2/EPoint-test.cpp index 2e2302a1f2f..4b83f8dce08 100644 --- a/Nef_2/test/Nef_2/EPoint-test.cpp +++ b/Nef_2/test/Nef_2/EPoint-test.cpp @@ -39,7 +39,7 @@ int main() typedef EDec::Standard_RT RT; EDec D; - CGAL::set_pretty_mode ( std::cerr ); + CGAL::IO::set_pretty_mode ( std::cerr ); Point ps1(0,0), ps2(1,1), ps3(1,0), ps4(0,1), ps5(1,1,2); EDec::Point_type t1,t2,t3; EP eps1 = D.construct_point(ps1); @@ -149,7 +149,7 @@ int main() typedef EDec::Standard_RT RT; EDec D; - CGAL::set_pretty_mode ( std::cerr ); + CGAL::IO::set_pretty_mode ( std::cerr ); Point ps1(0,0), ps2(1,1), ps3(1,0), ps4(0,1), ps5(1,1,2); EDec::Point_type t1,t2,t3; EP eps1 = D.construct_point(ps1); @@ -256,7 +256,7 @@ int main() typedef EDec::Standard_RT RT; EDec D; - CGAL::set_pretty_mode ( std::cerr ); + CGAL::IO::set_pretty_mode ( std::cerr ); Point ps1(0,0), ps2(1,1), ps3(1,0), ps4(0,1), ps5(1,1,2); EDec::Point_type t1,t2,t3; EP eps1 = D.construct_point(ps1); diff --git a/Nef_2/test/Nef_2/Nef_polyhedron_2-test.cpp b/Nef_2/test/Nef_2/Nef_polyhedron_2-test.cpp index 77819fd3f5b..e925809395e 100644 --- a/Nef_2/test/Nef_2/Nef_polyhedron_2-test.cpp +++ b/Nef_2/test/Nef_2/Nef_polyhedron_2-test.cpp @@ -16,7 +16,7 @@ int main() #endif CGAL_NEF_SETDTHREAD(911); // 911 - CGAL::set_pretty_mode ( std::cerr ); + CGAL::IO::set_pretty_mode ( std::cerr ); std::cerr << "using " << CGAL::pointlocationversion << std::endl; std::cerr << "using " << CGAL::sweepversion << std::endl; CGAL_TEST_START; diff --git a/Nef_2/test/Nef_2/Polynomial-test.cpp b/Nef_2/test/Nef_2/Polynomial-test.cpp index 45370b1402e..38fa46c51ae 100644 --- a/Nef_2/test/Nef_2/Polynomial-test.cpp +++ b/Nef_2/test/Nef_2/Polynomial-test.cpp @@ -25,7 +25,7 @@ using namespace CGAL; int main() { - //CGAL_NEF_SETDTHREAD(3); CGAL::set_pretty_mode ( std::cerr ); + //CGAL_NEF_SETDTHREAD(3); CGAL::IO::set_pretty_mode ( std::cerr ); CGAL_TEST_START; { PRT(Integer,Integer); diff --git a/Nef_2/test/Nef_2/include/CGAL/test_macros.h b/Nef_2/test/Nef_2/include/CGAL/test_macros.h index 9193a65a90a..d1bb6ab1c33 100644 --- a/Nef_2/test/Nef_2/include/CGAL/test_macros.h +++ b/Nef_2/test/Nef_2/include/CGAL/test_macros.h @@ -14,7 +14,7 @@ std::cerr<<"ERROR: ("<<__LINE__ <<") test "<<#b<<" failed."< std::ostream& operator<<(std::ostream& os, const Pluecker_line_3& l) { - switch( get_mode(os) ) { + switch( IO::get_mode(os) ) { case CGAL::IO::ASCII : for (unsigned i=0; i<6; ++i) os << l[i] << " "; return os; diff --git a/Nef_3/include/CGAL/Nef_3/SHalfedge.h b/Nef_3/include/CGAL/Nef_3/SHalfedge.h index ddf5b382b1d..31694604135 100644 --- a/Nef_3/include/CGAL/Nef_3/SHalfedge.h +++ b/Nef_3/include/CGAL/Nef_3/SHalfedge.h @@ -216,7 +216,7 @@ class SHalfedge_base { std::string debug() const { std::stringstream os; - set_pretty_mode(os); + CGAL::IO::set_pretty_mode(os); os <<"e[ "<debug()<<", " <source_->debug() #ifdef CGAL_I_DO_WANT_TO_USE_GENINFO diff --git a/Nef_3/include/CGAL/Nef_3/SHalfloop.h b/Nef_3/include/CGAL/Nef_3/SHalfloop.h index e6cc98bf944..59c449c150f 100644 --- a/Nef_3/include/CGAL/Nef_3/SHalfloop.h +++ b/Nef_3/include/CGAL/Nef_3/SHalfloop.h @@ -102,7 +102,7 @@ class SHalfloop_base { public: std::string debug() const { std::stringstream os; - set_pretty_mode(os); + CGAL::IO::set_pretty_mode(os); os<<"sl [ "< { } std::string debug(SHalfedge_handle e) const - { std::stringstream os; set_pretty_mode(os); + { std::stringstream os; CGAL::IO::set_pretty_mode(os); os << "sedge-use " << e->source()->source()->point() << e->twin()->source()->twin()->source()->point() <<'\0'; return os.str(); diff --git a/Nef_3/include/CGAL/Nef_3/SNC_io_parser.h b/Nef_3/include/CGAL/Nef_3/SNC_io_parser.h index 7968f56902b..c0ddcc5ff22 100644 --- a/Nef_3/include/CGAL/Nef_3/SNC_io_parser.h +++ b/Nef_3/include/CGAL/Nef_3/SNC_io_parser.h @@ -1112,8 +1112,8 @@ SNC_io_parser::SNC_io_parser(std::ostream& os, SNC_structure& W, sln(W.number_of_shalfloops()), sfn(W.number_of_sfaces()) { - verbose = (get_mode(out) != CGAL::IO::ASCII && - get_mode(out) != CGAL::IO::BINARY); + verbose = (IO::get_mode(out) != CGAL::IO::ASCII && + IO::get_mode(out) != CGAL::IO::BINARY); sorted = sort; reduce = reduce_; reduce = reduce && this->is_extended_kernel() && this->is_bounded(); diff --git a/Nef_3/include/CGAL/Nef_3/Vertex.h b/Nef_3/include/CGAL/Nef_3/Vertex.h index 5731fbda1a7..e0b697f94ea 100644 --- a/Nef_3/include/CGAL/Nef_3/Vertex.h +++ b/Nef_3/include/CGAL/Nef_3/Vertex.h @@ -304,7 +304,7 @@ class Vertex_base { public: std::string debug() const { std::stringstream os; - set_pretty_mode(os); + CGAL::IO::set_pretty_mode(os); os<<"{ addr, point, mark, snc, svb, sve, seb, see, sfb, sfe, sl," <<" info }"<:: check_order_preserving_embedding(Vertex_const_handle v) const { std::ostrstream error_status; - CGAL::set_pretty_mode ( error_status ); + CGAL::IO::set_pretty_mode ( error_status ); Halfedge_const_handle ef = first_out_edge(v) ,e=ef,en,enn; error_status << "check_order_preserving_embedding\n"; error_status << "vertex " << PV(v) << endl; @@ -219,7 +219,7 @@ check_is_triangulation() const CGAL::Hash_map< Halfedge_const_iterator, bool> on_boundary(false); Halfedge_around_face_const_circulator hit(eb), hend(hit); std::ostrstream error_status; - CGAL::set_pretty_mode ( error_status ); + CGAL::IO::set_pretty_mode ( error_status ); error_status << "check_is_triangulation\n"; error_status << "on boundary:\n"; CGAL_For_all(hit,hend) { diff --git a/Nef_S2/include/CGAL/Nef_S2/SM_io_parser.h b/Nef_S2/include/CGAL/Nef_S2/SM_io_parser.h index d58126bac9c..7c09b4eaf0c 100644 --- a/Nef_S2/include/CGAL/Nef_S2/SM_io_parser.h +++ b/Nef_S2/include/CGAL/Nef_S2/SM_io_parser.h @@ -152,8 +152,8 @@ SM_io_parser(std::ostream& iout, const Base& D) en(this->number_of_shalfedges()), ln(this->number_of_shalfloops()), fn(this->number_of_sfaces()) -{ verbose = (get_mode(out) != CGAL::IO::ASCII && - get_mode(out) != CGAL::IO::BINARY); +{ verbose = (IO::get_mode(out) != CGAL::IO::ASCII && + IO::get_mode(out) != CGAL::IO::BINARY); } diff --git a/Nef_S2/include/CGAL/Nef_S2/SM_items.h b/Nef_S2/include/CGAL/Nef_S2/SM_items.h index f779f23273f..d1141a21311 100644 --- a/Nef_S2/include/CGAL/Nef_S2/SM_items.h +++ b/Nef_S2/include/CGAL/Nef_S2/SM_items.h @@ -109,7 +109,7 @@ public: public: std::string debug() const - { std::ostringstream os; set_pretty_mode(os); + { std::ostringstream os; CGAL::IO::set_pretty_mode(os); os<<"V"<debug()<<", " <source_->debug()<< #ifdef CGAL_I_DO_WANT_TO_USE_GENINFO @@ -289,7 +289,7 @@ public: const GenPtr& info() const { return info_; } std::string debug() const - { std::ostringstream os; set_pretty_mode(os); + { std::ostringstream os; CGAL::IO::set_pretty_mode(os); os<<"l"< Plane; int main() { CGAL_TEST_START; - CGAL::set_pretty_mode ( std::cout ); + CGAL::IO::set_pretty_mode ( std::cout ); SPoint p(0,0,1), q(1,1,0), r(1,-1,0), s(1,1,1); SSegment s1(p,q), s2(p,r,false), s3(SPoint(0,-1,0),SPoint(-1,0,0)); SCircle c0, c1(p,q), c2(1,1,1), c3(Plane(1,1,1,0)); diff --git a/NewKernel_d/include/CGAL/NewKernel_d/Wrapper/Point_d.h b/NewKernel_d/include/CGAL/NewKernel_d/Wrapper/Point_d.h index f21a7f6b4ba..63dd30f2369 100644 --- a/NewKernel_d/include/CGAL/NewKernel_d/Wrapper/Point_d.h +++ b/NewKernel_d/include/CGAL/NewKernel_d/Wrapper/Point_d.h @@ -141,7 +141,7 @@ public: { auto b = p.cartesian_begin(); auto e = p.cartesian_end(); - if(is_ascii(os)) + if(IO::is_ascii(os)) { os << p.dimension(); for(; b != e; ++b){ @@ -162,7 +162,7 @@ public: friend std::istream& operator>>(std::istream &is, Point_d & p) { int dim; - if( is_ascii(is) ) + if( IO::is_ascii(is) ) is >> dim; else { @@ -171,10 +171,10 @@ public: if(!is) return is; std::vector coords(dim); - if(is_ascii(is)) + if(IO::is_ascii(is)) { for(int i=0;i> iformat(coords[i]); + is >> IO::iformat(coords[i]); } else { diff --git a/NewKernel_d/include/CGAL/NewKernel_d/Wrapper/Vector_d.h b/NewKernel_d/include/CGAL/NewKernel_d/Wrapper/Vector_d.h index de13385758d..3c45a5eecb0 100644 --- a/NewKernel_d/include/CGAL/NewKernel_d/Wrapper/Vector_d.h +++ b/NewKernel_d/include/CGAL/NewKernel_d/Wrapper/Vector_d.h @@ -134,7 +134,7 @@ public: { auto b = v.cartesian_begin(); auto e = v.cartesian_end(); - if(is_ascii(os)) + if(IO::is_ascii(os)) { os << v.dimension(); for(; b != e; ++b){ @@ -155,7 +155,7 @@ public: friend std::istream & operator>>(std::istream &is, Vector_d & v) { int dim; - if( is_ascii(is) ) + if( IO::is_ascii(is) ) is >> dim; else { @@ -164,10 +164,10 @@ public: if(!is) return is; std::vector coords(dim); - if(is_ascii(is)) + if(IO::is_ascii(is)) { for(int i=0;i> iformat(coords[i]); + is >> IO::iformat(coords[i]); } else { diff --git a/NewKernel_d/include/CGAL/NewKernel_d/Wrapper/Weighted_point_d.h b/NewKernel_d/include/CGAL/NewKernel_d/Wrapper/Weighted_point_d.h index ba88c4e0db7..c3020b65f7c 100644 --- a/NewKernel_d/include/CGAL/NewKernel_d/Wrapper/Weighted_point_d.h +++ b/NewKernel_d/include/CGAL/NewKernel_d/Wrapper/Weighted_point_d.h @@ -92,7 +92,7 @@ public: template std::ostream& operator<<(std::ostream& os, const Weighted_point_d& p) { - if(is_ascii(os)) + if(IO::is_ascii(os)) { return os << p.point() << ' ' << p.weight(); } @@ -111,9 +111,9 @@ std::istream& operator>>(std::istream& is, Weighted_point_d& p) typedef typename Get_type::type Point_; typedef typename Get_functor >::type CWP; Point_ q; FT_ w; - if(is_ascii(is)) + if(IO::is_ascii(is)) { - if(is >> q >> iformat(w)) p=CWP()(q,w); + if(is >> q >> IO::iformat(w)) p=CWP()(q,w); } else { diff --git a/Number_types/include/CGAL/CORE_BigRat.h b/Number_types/include/CGAL/CORE_BigRat.h index 871f209e42e..0f51dac5663 100644 --- a/Number_types/include/CGAL/CORE_BigRat.h +++ b/Number_types/include/CGAL/CORE_BigRat.h @@ -156,7 +156,7 @@ public: Output_rep( const ::CORE::BigRat& tt) : t(tt) {} //! perform the output, calls \c operator\<\< by default. std::ostream& operator()( std::ostream& out) const { - switch (get_mode(out)) { + switch (IO::get_mode(out)) { case IO::PRETTY:{ if(CGAL_CORE_DENOMINATOR(t) == ::CORE::BigRat(1)) return out < needs_parens_as_product; if (needs_parens_as_product(t)) - return out <<"("<< oformat(t) <<")"; + return out <<"("<< IO::oformat(t) <<")"; else - return out << oformat(t); + return out << IO::oformat(t); } }; diff --git a/Number_types/include/CGAL/Counted_number.h b/Number_types/include/CGAL/Counted_number.h index 68fe0409671..7f6dfcf04c1 100644 --- a/Number_types/include/CGAL/Counted_number.h +++ b/Number_types/include/CGAL/Counted_number.h @@ -490,14 +490,14 @@ void Counted_number::report(std::ostream &os) template std::ostream& operator<<(std::ostream &os, Counted_number const &n) { - return os << ::CGAL::oformat( n.rep() )<< std::endl; + return os << ::CGAL::IO::oformat( n.rep() )<< std::endl; } template std::istream& operator>>(std::istream &is, Counted_number &n) { NT num; - is >> ::CGAL::iformat(num); + is >> ::CGAL::IO::iformat(num); if (is) n = Counted_number(num); return is; } diff --git a/Number_types/include/CGAL/GMP/Gmpfr_type.h b/Number_types/include/CGAL/GMP/Gmpfr_type.h index 4d2931fb8d2..33d7108b159 100644 --- a/Number_types/include/CGAL/GMP/Gmpfr_type.h +++ b/Number_types/include/CGAL/GMP/Gmpfr_type.h @@ -1167,7 +1167,7 @@ std::ostream& operator<<(std::ostream& os,const Gmpfr &a){ if(a.is_inf()) return os<<(a<0?"-inf":"+inf"); // The rest of the function was written by George Tzoumas. - if (!is_pretty(os)) { + if (!IO::is_pretty(os)) { std::pair ie=a.to_integer_exp(); os << ie.first << 'e' << ie.second; return os; diff --git a/Number_types/include/CGAL/Interval_nt.h b/Number_types/include/CGAL/Interval_nt.h index 690f1cc4c74..b981657d0fb 100644 --- a/Number_types/include/CGAL/Interval_nt.h +++ b/Number_types/include/CGAL/Interval_nt.h @@ -438,9 +438,9 @@ private: if(c == '['){ // read original output from operator << double inf,sup; CGAL_SWALLOW(is, '[');// read the "[" - is >> iformat(inf); + is >> IO::iformat(inf); CGAL_SWALLOW(is, ';');// read the ";" - is >> iformat(sup); + is >> IO::iformat(sup); CGAL_SWALLOW(is, ']');// read the "]" I = Interval_nt(inf,sup); }else{ //read double (backward compatibility) diff --git a/Number_types/include/CGAL/Sqrt_extension/io.h b/Number_types/include/CGAL/Sqrt_extension/io.h index 6a7b593691f..37ac7f7b0f9 100644 --- a/Number_types/include/CGAL/Sqrt_extension/io.h +++ b/Number_types/include/CGAL/Sqrt_extension/io.h @@ -38,15 +38,15 @@ input_ascii(std::istream& is , Sqrt_extension& result){ swallow(is, 'X'); swallow(is, 'T'); swallow(is, '['); - is >> iformat(a0); + is >> IO::iformat(a0); do is.get(c); while (isspace(c)); if (c != ',') CGAL_error_msg( "input error: , expected" ); - is >> iformat(a1); + is >> IO::iformat(a1); do is.get(c); while (isspace(c)); if (c != ',') CGAL_error_msg( "input error: , expected" ); - is >> iformat(root); + is >> IO::iformat(root); do is.get(c); while (isspace(c)); if (c != ']') CGAL_error_msg( "input error: ] expected" ); @@ -61,13 +61,13 @@ input_ascii(std::istream& is , Sqrt_extension& result){ template void output_maple(std::ostream& os, const Sqrt_extension& x){ - CGAL::IO::Mode o_mode=::CGAL::get_mode(os); - ::CGAL::set_mode(os,CGAL::IO::PRETTY); + CGAL::IO::Mode o_mode=::CGAL::IO::get_mode(os); + ::CGAL::IO::set_mode(os,CGAL::IO::PRETTY); if ( x.a0() != NT(0)){ if ( x.a1() != NT(0)){ os << x.a0() - << "+" << CGAL::oformat(x.a1(),CGAL::Parens_as_product_tag()) + << "+" << CGAL::IO::oformat(x.a1(),CGAL::Parens_as_product_tag()) << "*sqrt(" << x.root() << ")"; }else{ os << x.a0(); @@ -75,13 +75,13 @@ output_maple(std::ostream& os, const Sqrt_extension& x) } else{ if (x.a1() != NT(0)){ - os << CGAL::oformat(x.a1(),CGAL::Parens_as_product_tag()) + os << CGAL::IO::oformat(x.a1(),CGAL::Parens_as_product_tag()) << "*sqrt(" << x.root() << ")"; }else{ os << 0; } } - ::CGAL::set_mode(os,o_mode); + ::CGAL::IO::set_mode(os,o_mode); return; } @@ -133,7 +133,7 @@ public: template std::ostream& operator << (std::ostream& os, const Sqrt_extension& ext){ - switch(CGAL::get_mode(os)) { + switch(CGAL::IO::get_mode(os)) { case CGAL::IO::PRETTY: output_maple(os,ext); break; default: @@ -151,7 +151,7 @@ std::ostream& operator << (std::ostream& os, */ template std::istream& operator >> (std::istream& is, Sqrt_extension& ext) { - CGAL_precondition(!CGAL::is_pretty(is)); + CGAL_precondition(!CGAL::IO::is_pretty(is)); input_ascii(is,ext); return is; } diff --git a/Number_types/include/CGAL/leda_rational.h b/Number_types/include/CGAL/leda_rational.h index e520781c132..6b0da89b525 100644 --- a/Number_types/include/CGAL/leda_rational.h +++ b/Number_types/include/CGAL/leda_rational.h @@ -180,7 +180,7 @@ public: Output_rep( const leda_rational& tt) : t(tt) {} //! perform the output, calls \c operator\<\< by default. std::ostream& operator()( std::ostream& out) const { - switch (get_mode(out)) { + switch (IO::get_mode(out)) { case IO::PRETTY:{ if(t.denominator() == leda_integer(1)) return out < needs_parens_as_product; if (needs_parens_as_product(t)) - return out <<"("<< oformat(t) <<")"; + return out <<"("<< IO::oformat(t) <<")"; else - return out << oformat(t); + return out << IO::oformat(t); } }; diff --git a/Number_types/include/CGAL/leda_real.h b/Number_types/include/CGAL/leda_real.h index b05fa068e30..2dd4c458762 100644 --- a/Number_types/include/CGAL/leda_real.h +++ b/Number_types/include/CGAL/leda_real.h @@ -197,8 +197,8 @@ public: Output_rep( const ::leda::real& tt) : t(tt) {} //! perform the output, calls \c operator\<\< by default. std::ostream& operator()( std::ostream& out) const { - if (t<0) out << "(" << ::CGAL::oformat(t)<<")"; - else out << ::CGAL::oformat(t); + if (t<0) out << "(" << ::CGAL::IO::oformat(t)<<")"; + else out << ::CGAL::IO::oformat(t); return out; } }; diff --git a/Number_types/test/Number_types/CORE_BigInt.cpp b/Number_types/test/Number_types/CORE_BigInt.cpp index 98b9dc4e3b1..8cfe816f043 100644 --- a/Number_types/test/Number_types/CORE_BigInt.cpp +++ b/Number_types/test/Number_types/CORE_BigInt.cpp @@ -14,35 +14,35 @@ void test_io(){ // MODE ASCII { std::stringstream ss; - CGAL::set_ascii_mode(ss); - ss << CGAL::oformat(NT(1)); + CGAL::IO::set_ascii_mode(ss); + ss << CGAL::IO::oformat(NT(1)); assert( ss.str() == "1"); }{ std::stringstream ss; - CGAL::set_ascii_mode(ss); - ss << CGAL::oformat(NT(0)); + CGAL::IO::set_ascii_mode(ss); + ss << CGAL::IO::oformat(NT(0)); assert( ss.str() == "0"); }{ std::stringstream ss; - CGAL::set_ascii_mode(ss); - ss << CGAL::oformat(NT(-1)); + CGAL::IO::set_ascii_mode(ss); + ss << CGAL::IO::oformat(NT(-1)); assert( ss.str() == "-1"); } //MODE PRETTY { std::stringstream ss; - CGAL::set_pretty_mode(ss); - ss << CGAL::oformat(NT(1), CGAL::Parens_as_product_tag()); + CGAL::IO::set_pretty_mode(ss); + ss << CGAL::IO::oformat(NT(1), CGAL::Parens_as_product_tag()); assert( ss.str() == "1"); }{ std::stringstream ss; - CGAL::set_pretty_mode(ss); - ss << CGAL::oformat(NT(0),CGAL::Parens_as_product_tag()); + CGAL::IO::set_pretty_mode(ss); + ss << CGAL::IO::oformat(NT(0),CGAL::Parens_as_product_tag()); assert( ss.str() == "0"); }{ std::stringstream ss; - CGAL::set_pretty_mode(ss); - ss << CGAL::oformat(NT(-1), CGAL::Parens_as_product_tag()); + CGAL::IO::set_pretty_mode(ss); + ss << CGAL::IO::oformat(NT(-1), CGAL::Parens_as_product_tag()); assert( ss.str() == "(-1)"); } } diff --git a/Number_types/test/Number_types/CORE_BigRat.cpp b/Number_types/test/Number_types/CORE_BigRat.cpp index e6ea9bdfd1b..60124ec0277 100644 --- a/Number_types/test/Number_types/CORE_BigRat.cpp +++ b/Number_types/test/Number_types/CORE_BigRat.cpp @@ -17,36 +17,36 @@ void test_io(){ // MODE ASCII { std::stringstream ss; - CGAL::set_ascii_mode(ss); - ss << CGAL::oformat(NT(1)); + CGAL::IO::set_ascii_mode(ss); + ss << CGAL::IO::oformat(NT(1)); //std::cout << ss.str()<>CGAL::iformat(a); + ss<>CGAL::IO::iformat(a); assert(a==NT(x)); } @@ -44,8 +44,8 @@ void test_io(){ NT a; std::stringstream ss; - ss<>CGAL::iformat(a); + ss<>CGAL::IO::iformat(a); assert(a==NT()); } @@ -58,8 +58,8 @@ void test_interval_io(_CT x){ NT a(x),b(x); std::stringstream ss; - ss<>CGAL::iformat(a); + ss<>CGAL::IO::iformat(a); assert(a.inf()==b.inf()); assert(a.sup()==b.sup()); } diff --git a/Number_types/test/Number_types/ioformat.cpp b/Number_types/test/Number_types/ioformat.cpp index a483d2f5971..e2d0bf7cda9 100644 --- a/Number_types/test/Number_types/ioformat.cpp +++ b/Number_types/test/Number_types/ioformat.cpp @@ -51,10 +51,10 @@ void test_it(const char* N, int value) NT tmp2(0), tmp1 = static_cast(value); std::ostringstream os; - os << ::CGAL::oformat(tmp1); + os << ::CGAL::IO::oformat(tmp1); std::cout << os.str() << std::endl; std::istringstream is(os.str()); - is >> ::CGAL::iformat(tmp2); + is >> ::CGAL::IO::iformat(tmp2); assert( tmp1 == tmp2 ); } diff --git a/Number_types/test/Number_types/mpq_class.cpp b/Number_types/test/Number_types/mpq_class.cpp index 03d4aaa3d4b..ca215c874c6 100644 --- a/Number_types/test/Number_types/mpq_class.cpp +++ b/Number_types/test/Number_types/mpq_class.cpp @@ -33,7 +33,7 @@ int main() { { mpq_class q; std::istringstream in("12.34"); - in >> CGAL::iformat(q); + in >> CGAL::IO::iformat(q); assert(in); assert(q.get_num() == 617); assert(q.get_den() == 50); diff --git a/Periodic_2_triangulation_2/include/CGAL/Periodic_2_offset_2.h b/Periodic_2_triangulation_2/include/CGAL/Periodic_2_offset_2.h index c97034bb790..574fd1d31ec 100644 --- a/Periodic_2_triangulation_2/include/CGAL/Periodic_2_offset_2.h +++ b/Periodic_2_triangulation_2/include/CGAL/Periodic_2_offset_2.h @@ -146,7 +146,7 @@ inline typename K::Point_2 operator+(const typename K::Point_2 &p, const Periodi inline std::ostream &operator<<(std::ostream &os, const Periodic_2_offset_2 &off) { - if (is_ascii(os)) + if (IO::is_ascii(os)) os << off.x() << " " << off.y(); else { @@ -161,7 +161,7 @@ inline std::istream &operator>>(std::istream &is, Periodic_2_offset_2 &off) { int x = 0, y = 0; - if (is_ascii(is)) + if (IO::is_ascii(is)) is >> x >> y; else { diff --git a/Periodic_2_triangulation_2/include/CGAL/Periodic_2_triangulation_2.h b/Periodic_2_triangulation_2/include/CGAL/Periodic_2_triangulation_2.h index ef8a5d063f9..542fcb98d3d 100644 --- a/Periodic_2_triangulation_2/include/CGAL/Periodic_2_triangulation_2.h +++ b/Periodic_2_triangulation_2/include/CGAL/Periodic_2_triangulation_2.h @@ -4145,7 +4145,7 @@ Periodic_2_triangulation_2::save(std::ostream& os) const size_type n = number_of_vertices(); - if (is_ascii(os)) + if (IO::is_ascii(os)) os << domain() << std::endl << cover[0] << " " << cover[1] << std::endl << n*cover[0]*cover[1] << std::endl; @@ -4172,7 +4172,7 @@ Periodic_2_triangulation_2::save(std::ostream& os) const { V[it] = i++; os << it->point(); - if (is_ascii(os)) + if (IO::is_ascii(os)) os << std::endl; } } @@ -4185,7 +4185,7 @@ Periodic_2_triangulation_2::save(std::ostream& os) const vit = _virtual_vertices.find(it); if (vit != _virtual_vertices.end()) continue; V[it] = i++; - if (is_ascii(os)) + if (IO::is_ascii(os)) os << it->point() << std::endl << Offset(0, 0) << std::endl; else @@ -4199,7 +4199,7 @@ Periodic_2_triangulation_2::save(std::ostream& os) const vvit = _virtual_vertices.find(vv[j]); CGAL_triangulation_assertion(vvit != _virtual_vertices.end()); V[vv[j]] = i++; - if (is_ascii(os)) + if (IO::is_ascii(os)) os << vv[j]->point() << std::endl << vvit->second.second << std::endl; else os << vv[j]->point() << vvit->second.second; @@ -4213,7 +4213,7 @@ Periodic_2_triangulation_2::save(std::ostream& os) const // asks the tds for the combinatorial information // vertices of the faces size_type m = _tds.number_of_faces(); - if (is_ascii(os)) os << std::endl << m << std::endl; + if (IO::is_ascii(os)) os << std::endl << m << std::endl; else write(os, m); std::cout << "save, #Faces: " << m << std::endl; @@ -4223,13 +4223,13 @@ Periodic_2_triangulation_2::save(std::ostream& os) const F[ib] = inum++; for(int j = 0; j < 3 ; ++j) { - if(is_ascii(os)) os << V[ib->vertex(j)] << " "; + if(IO::is_ascii(os)) os << V[ib->vertex(j)] << " "; else write(os, V[ib->vertex(j)]); } os << *ib ; - if(is_ascii(os)) os << "\n"; + if(IO::is_ascii(os)) os << "\n"; } - if(is_ascii(os)) os << "\n"; + if(IO::is_ascii(os)) os << "\n"; std::cout << "save, face check: " << inum << " == " << m << std::endl; CGAL_assertion(m == (size_type)inum); @@ -4241,10 +4241,10 @@ Periodic_2_triangulation_2::save(std::ostream& os) const for(int j = 0; j < 3; ++j) { CGAL_assertion(F.is_defined(it->neighbor(j))); - if(is_ascii(os)) os << F[it->neighbor(j)] << " "; + if(IO::is_ascii(os)) os << F[it->neighbor(j)] << " "; else write(os, F[it->neighbor(j)]); } - if(is_ascii(os)) os << "\n"; + if(IO::is_ascii(os)) os << "\n"; } // write offsets @@ -4255,7 +4255,7 @@ Periodic_2_triangulation_2::save(std::ostream& os) const Face_handle ch(it); for (int j = 0; j < 3; j++) { - if(is_ascii(os)) + if(IO::is_ascii(os)) { os << ch->offset(j); if ( j == 3 ) @@ -4276,7 +4276,7 @@ Periodic_2_triangulation_2::save(std::ostream& os) const for(Face_iterator it = faces_begin(); it != faces_end(); ++it) { os << *it; // other information - if(is_ascii(os)) + if(IO::is_ascii(os)) os << std::endl; } } @@ -4307,7 +4307,7 @@ Periodic_2_triangulation_2::load(std::istream& is) int cx = 0, cy = 0; size_type n = 0; - if (is_ascii(is)) + if (IO::is_ascii(is)) { is >> domain; is >> cx >> cy >> n; @@ -4372,7 +4372,7 @@ Periodic_2_triangulation_2::load(std::istream& is) // Creation of the faces std::size_t index; size_type m; - if (is_ascii(is)) is >> m; + if (IO::is_ascii(is)) is >> m; else read(is, m); std::vector F(m); std::cout << "load, #Faces: " << m << std::endl; @@ -4382,7 +4382,7 @@ Periodic_2_triangulation_2::load(std::istream& is) F[i] = _tds.create_face() ; for(int j = 0; j < 3 ; ++j) { - if (is_ascii(is)) is >> index; + if (IO::is_ascii(is)) is >> index; else read(is, index); CGAL_assertion(index < V.size()); F[i]->set_vertex(j, V[index]); @@ -4401,7 +4401,7 @@ Periodic_2_triangulation_2::load(std::istream& is) { for(int j = 0; j < 3; ++j) { - if (is_ascii(is)) is >> index; + if (IO::is_ascii(is)) is >> index; else read(is, index); if (index >= F.size()) { std::cout << __FILE__ << ", " << __FUNCTION__ << ", l:" << __LINE__ << " f=" @@ -4419,7 +4419,7 @@ Periodic_2_triangulation_2::load(std::istream& is) int off[3] = {0, 0, 0}; for (std::size_t j = 0 ; j < m; j++) { - if (is_ascii(is)) + if (IO::is_ascii(is)) is >> off[0] >> off[1] >> off[2]; else { diff --git a/Periodic_2_triangulation_2/test/Periodic_2_triangulation_2/include/interface_test.h b/Periodic_2_triangulation_2/test/Periodic_2_triangulation_2/include/interface_test.h index 4975d0456b6..30cae39bae1 100644 --- a/Periodic_2_triangulation_2/test/Periodic_2_triangulation_2/include/interface_test.h +++ b/Periodic_2_triangulation_2/test/Periodic_2_triangulation_2/include/interface_test.h @@ -496,7 +496,7 @@ void test_io(T &pt1, bool ex) T pt1r; ss1 >> pt1r; - assert(CGAL::is_ascii(ss1)); + assert(CGAL::IO::is_ascii(ss1)); if (!ex) { assert(pt1 == pt1r); @@ -508,11 +508,11 @@ void test_io(T &pt1, bool ex) if (!ex) { std::stringstream ss1b; - CGAL::set_binary_mode(ss1b); + CGAL::IO::set_binary_mode(ss1b); ss1b << pt1; ss1b >> pt1r; - assert(CGAL::is_binary(ss1b)); + assert(CGAL::IO::is_binary(ss1b)); assert(pt1 == pt1r); } @@ -521,10 +521,10 @@ void test_io(T &pt1, bool ex) pt1r.clear(); std::stringstream ss1p; - CGAL::set_pretty_mode(ss1p); + CGAL::IO::set_pretty_mode(ss1p); ss1p << pt1; - assert(CGAL::is_pretty(ss1p)); + assert(CGAL::IO::is_pretty(ss1p)); } template diff --git a/Periodic_3_mesh_3/include/CGAL/Periodic_3_mesh_3/Protect_edges_sizing_field.h b/Periodic_3_mesh_3/include/CGAL/Periodic_3_mesh_3/Protect_edges_sizing_field.h index 978af85fb67..842abf61081 100644 --- a/Periodic_3_mesh_3/include/CGAL/Periodic_3_mesh_3/Protect_edges_sizing_field.h +++ b/Periodic_3_mesh_3/include/CGAL/Periodic_3_mesh_3/Protect_edges_sizing_field.h @@ -756,7 +756,7 @@ get_positions_with_vertex_at_extremity(const Bare_point& known_point, { #if CGAL_MESH_3_PROTECTION_DEBUG & 2 std::cerr << "get_positions_with_vertex_at_extremity()" << std::endl - << "known_point: " << known_point << " on curve " << CGAL::oformat(curve_index) + << "known_point: " << known_point << " on curve " << CGAL::IO::oformat(curve_index) << " orientation: " << orientation << " inverted order ? " << std::boolalpha << inverted_return_order << std::endl; #endif @@ -1391,7 +1391,7 @@ insert_corners() Index p_index = domain_.index_from_corner_index(corner_index); #if CGAL_MESH_3_PROTECTION_DEBUG & 1 - std::cerr << "** treat corner #" << CGAL::oformat(p_index) << std::endl; + std::cerr << "** treat corner #" << CGAL::IO::oformat(p_index) << std::endl; #endif // Get weight (the ball radius is given by the 'query_size' function) @@ -1476,7 +1476,7 @@ insert_point(const Bare_point& p, const Weight& w, int dim, const Index& index, #if CGAL_MESH_3_PROTECTION_DEBUG & 1 std::cerr << "insert_point()" << std::endl; std::cerr << "pos: " << p << " weight: " << w - << " dim: " << dim << " index: " << CGAL::oformat(index) << std::endl; + << " dim: " << dim << " index: " << CGAL::IO::oformat(index) << std::endl; #endif using CGAL::Mesh_3::internal::weight_modifier; @@ -1540,7 +1540,7 @@ insert_point(const Bare_point& p, const Weight& w, int dim, const Index& index, std::cerr << " ERROR dim=" << dim << " index="; } - std::cerr << CGAL::oformat(index) << std::endl; + std::cerr << CGAL::IO::oformat(index) << std::endl; if(v == Vertex_handle()) std::cerr << " HIDDEN!\n"; std::cerr << "The weight was " << w << std::endl; @@ -1569,7 +1569,7 @@ smart_insert_point(const Bare_point& p, Weight w, int dim, const Index& index, std::cerr << "smart_insert_point((" << p << "), w=" << w << ", dim=" << dim - << ", index=" << CGAL::oformat(index) << ")\n"; + << ", index=" << CGAL::IO::oformat(index) << ")\n"; #endif const Tr& tr = c3t3_.triangulation(); @@ -2452,7 +2452,7 @@ change_ball_size(Vertex_handle& v, const FT squared_size, const bool special_bal #if CGAL_MESH_3_PROTECTION_DEBUG & 1 std::cerr << "change_ball_size(v=" << disp_vert(v) << " dim=" << c3t3_.in_dimension(v) - << " index=" << CGAL::oformat(c3t3_.index(v)) + << " index=" << CGAL::IO::oformat(c3t3_.index(v)) << " ,\n" << " (squared) size=" << w << ", special_ball=" << std::boolalpha << special_ball << std::endl; @@ -2622,7 +2622,7 @@ check_and_fix_vertex_along_edge(const Vertex_handle& v, ErasedVeOutIt out) std::cerr << "check_and_fix_vertex_along_edge(" << disp_vert(v) << " dim=" << get_dimension(v) - << " index=" << CGAL::oformat(c3t3_.index(v)) + << " index=" << CGAL::IO::oformat(c3t3_.index(v)) << " special=" << std::boolalpha << is_special(v) << ")\n"; #endif @@ -2930,7 +2930,7 @@ repopulate(InputIterator begin, InputIterator last, std::cerr << "repopulate(begin=" << disp_vert(*begin) << "\n" << " last=" << disp_vert(*last) << "\n" << " distance(begin, last)=" << std::distance(begin, last) << ",\n" - << " curve_index=" << CGAL::oformat(curve_index) << ",\n" + << " curve_index=" << CGAL::IO::oformat(curve_index) << ",\n" << " orientation=" << orientation << ")\n"; #endif CGAL_assertion(std::distance(begin,last) >= 0); @@ -2972,7 +2972,7 @@ repopulate(InputIterator begin, InputIterator last, default: std::cerr << " ERROR dim=" << get_dimension(*current) << " curve_index="; } - std::cerr << CGAL::oformat(c3t3_.index(*current)) << std::endl; + std::cerr << CGAL::IO::oformat(c3t3_.index(*current)) << std::endl; #endif // CGAL_MESH_3_PROTECTION_DEBUG *out++ = *current; remove_from_correspondence_map(*current, curve_index); @@ -2997,7 +2997,7 @@ analyze_and_repopulate(InputIterator begin, InputIterator last, std::cerr << "analyze_and_repopulate(begin=" << disp_vert(*begin) << "\n" << " last=" << disp_vert(*last) << "\n" << " distance(begin, last)=" << std::distance(begin, last) << ",\n" - << " curve_index=" << CGAL::oformat(curve_index) << ",\n" + << " curve_index=" << CGAL::IO::oformat(curve_index) << ",\n" << " orientation=" << orientation << ")\n"; #endif CGAL_assertion(std::distance(begin,last) >= 0); diff --git a/Periodic_3_triangulation_3/include/CGAL/Periodic_3_offset_3.h b/Periodic_3_triangulation_3/include/CGAL/Periodic_3_offset_3.h index ed1560c74c3..ca7124d8688 100644 --- a/Periodic_3_triangulation_3/include/CGAL/Periodic_3_offset_3.h +++ b/Periodic_3_triangulation_3/include/CGAL/Periodic_3_offset_3.h @@ -108,7 +108,7 @@ inline Point_3 operator+(const Point_3 &p, const Periodic_3_offset_3 &off) inline std::ostream &operator<<(std::ostream &os, const Periodic_3_offset_3 &off) { - if (is_ascii(os)) + if (IO::is_ascii(os)) os << off.x() << " " << off.y() << " " << off.z(); else { write(os,off.x()); @@ -121,7 +121,7 @@ inline std::ostream inline std::istream &operator>>(std::istream &is, Periodic_3_offset_3 &off) { int x=0,y=0,z=0; - if (is_ascii(is)) + if (IO::is_ascii(is)) is >> x >> y >> z; else { read(is,x); diff --git a/Periodic_3_triangulation_3/include/CGAL/Periodic_3_triangulation_3.h b/Periodic_3_triangulation_3/include/CGAL/Periodic_3_triangulation_3.h index 380e9b70f86..631603f092e 100644 --- a/Periodic_3_triangulation_3/include/CGAL/Periodic_3_triangulation_3.h +++ b/Periodic_3_triangulation_3/include/CGAL/Periodic_3_triangulation_3.h @@ -4023,7 +4023,7 @@ operator>> (std::istream& is, Periodic_3_triangulation_3& tr) int cx=0, cy=0, cz=0; size_type n=0; - if(is_ascii(is)) { + if(IO::is_ascii(is)) { is >> domain; is >> cx >> cy >> cz; is >> n; @@ -4079,7 +4079,7 @@ operator>> (std::istream& is, Periodic_3_triangulation_3& tr) // read offsets int off[4] = {0,0,0,0}; for(std::size_t j=0; j < m; j++) { - if(is_ascii(is)) + if(IO::is_ascii(is)) is >> off[0] >> off[1] >> off[2] >> off[3]; else { read(is,off[0]); @@ -4130,7 +4130,7 @@ operator<< (std::ostream& os,const Periodic_3_triangulation_3& tr) Covering_sheets cover = tr.number_of_sheets(); size_type n = tr.number_of_vertices(); - if(is_ascii(os)) + if(IO::is_ascii(os)) os << domain << std::endl << cover[0] << " " << cover[1] << " " << cover[2] << std::endl << n*cover[0]*cover[1]*cover[2] << std::endl; @@ -4152,7 +4152,7 @@ operator<< (std::ostream& os,const Periodic_3_triangulation_3& tr) for(Vertex_iterator it=tr.vertices_begin(); it!=tr.vertices_end(); ++it) { V[it] = i++; os << it->point(); - if(is_ascii(os)) + if(IO::is_ascii(os)) os << std::endl; } } else { @@ -4164,7 +4164,7 @@ operator<< (std::ostream& os,const Periodic_3_triangulation_3& tr) continue; V[it]=i++; - if(is_ascii(os)) + if(IO::is_ascii(os)) os << it->point() << std::endl << Offset(0,0,0) << std::endl; else os << it->point() << Offset(0,0,0); @@ -4176,7 +4176,7 @@ operator<< (std::ostream& os,const Periodic_3_triangulation_3& tr) vvit = tr.virtual_vertices.find(vv[j]); CGAL_triangulation_assertion(vvit != tr.virtual_vertices.end()); V[vv[j]] = i++; - if(is_ascii(os)) + if(IO::is_ascii(os)) os << vv[j]->point() << std::endl << vvit->second.second << std::endl; else os << vv[j]->point() << vvit->second.second; @@ -4196,7 +4196,7 @@ operator<< (std::ostream& os,const Periodic_3_triangulation_3& tr) //Cell_handle ch = std::find(tr.cells_begin(), tr.cells_end(), i); Cell_handle ch(it); for(int j=0; j<4; j++) { - if(is_ascii(os)) { + if(IO::is_ascii(os)) { os << ch->offset(j); if( j==3 ) os << std::endl; @@ -4214,7 +4214,7 @@ operator<< (std::ostream& os,const Periodic_3_triangulation_3& tr) if(tr.number_of_vertices() != 0) { for(Cell_iterator it=tr.cells_begin(); it != tr.cells_end(); ++it) { os << *it; // other information - if(is_ascii(os)) + if(IO::is_ascii(os)) os << std::endl; } } diff --git a/Periodic_3_triangulation_3/test/Periodic_3_triangulation_3/include/CGAL/_test_cls_periodic_3_alpha_shape_3.h b/Periodic_3_triangulation_3/test/Periodic_3_triangulation_3/include/CGAL/_test_cls_periodic_3_alpha_shape_3.h index 06b33577161..d018131f7c7 100644 --- a/Periodic_3_triangulation_3/test/Periodic_3_triangulation_3/include/CGAL/_test_cls_periodic_3_alpha_shape_3.h +++ b/Periodic_3_triangulation_3/test/Periodic_3_triangulation_3/include/CGAL/_test_cls_periodic_3_alpha_shape_3.h @@ -19,7 +19,7 @@ template bool file_input(std::ifstream& is, std::list& L, int nb=0) { - CGAL::set_ascii_mode(is); + CGAL::IO::set_ascii_mode(is); int n; is >> n; if(nb != 0 && nb <= n) n=nb; diff --git a/Periodic_3_triangulation_3/test/Periodic_3_triangulation_3/include/CGAL/_test_cls_periodic_3_triangulation_3.h b/Periodic_3_triangulation_3/test/Periodic_3_triangulation_3/include/CGAL/_test_cls_periodic_3_triangulation_3.h index 7534db8b4bc..ddac2399a7c 100644 --- a/Periodic_3_triangulation_3/test/Periodic_3_triangulation_3/include/CGAL/_test_cls_periodic_3_triangulation_3.h +++ b/Periodic_3_triangulation_3/test/Periodic_3_triangulation_3/include/CGAL/_test_cls_periodic_3_triangulation_3.h @@ -647,8 +647,8 @@ _test_cls_periodic_3_triangulation_3(const PeriodicTriangulation &, ss1 >> PT1r; ss3 >> PT3r; - assert(CGAL::is_ascii(ss1)); - assert(CGAL::is_ascii(ss3)); + assert(CGAL::IO::is_ascii(ss1)); + assert(CGAL::IO::is_ascii(ss3)); if (!ex) assert(PT1 == PT1r); if (!ex) assert(PT3 == PT3r); @@ -659,15 +659,15 @@ _test_cls_periodic_3_triangulation_3(const PeriodicTriangulation &, if (!ex) { std::stringstream ss1b; std::stringstream ss3b; - CGAL::set_binary_mode(ss1b); - CGAL::set_binary_mode(ss3b); + CGAL::IO::set_binary_mode(ss1b); + CGAL::IO::set_binary_mode(ss3b); ss1b << PT1; ss3b << PT3; ss1b >> PT1r; ss3b >> PT3r; - assert(CGAL::is_binary(ss1b)); - assert(CGAL::is_binary(ss3b)); + assert(CGAL::IO::is_binary(ss1b)); + assert(CGAL::IO::is_binary(ss3b)); assert(PT1 == PT1r); assert(PT3 == PT3r); @@ -679,12 +679,12 @@ _test_cls_periodic_3_triangulation_3(const PeriodicTriangulation &, PT3r.clear(); std::stringstream ss1p; std::stringstream ss3p; - CGAL::set_pretty_mode(ss1p); - CGAL::set_pretty_mode(ss3p); + CGAL::IO::set_pretty_mode(ss1p); + CGAL::IO::set_pretty_mode(ss3p); ss1p << PT1; ss3p << PT3; - assert(CGAL::is_pretty(ss1p)); - assert(CGAL::is_pretty(ss3p)); + assert(CGAL::IO::is_pretty(ss1p)); + assert(CGAL::IO::is_pretty(ss3p)); } } diff --git a/Point_set_3/include/CGAL/Point_set_3/IO/LAS.h b/Point_set_3/include/CGAL/Point_set_3/IO/LAS.h index 4f32c2e6376..b68091e5fbb 100644 --- a/Point_set_3/include/CGAL/Point_set_3/IO/LAS.h +++ b/Point_set_3/include/CGAL/Point_set_3/IO/LAS.h @@ -160,7 +160,7 @@ template bool read_LAS(const std::string& fname, CGAL::Point_set_3& point_set) { std::ifstream is(fname, std::ios::binary); - CGAL::set_mode(is, CGAL::IO::BINARY); + CGAL::IO::set_mode(is, CGAL::IO::BINARY); return read_LAS(is, point_set); } @@ -396,7 +396,7 @@ bool write_LAS(const std::string& fname, CGAL::Point_set_3& point_set) { std::ofstream os(fname, std::ios::binary); - CGAL::set_mode(os, CGAL::IO::BINARY); + CGAL::IO::set_mode(os, CGAL::IO::BINARY); return write_LAS(os, point_set); } diff --git a/Point_set_3/include/CGAL/Point_set_3/IO/PLY.h b/Point_set_3/include/CGAL/Point_set_3/IO/PLY.h index b773b87e0e7..fafccda8376 100644 --- a/Point_set_3/include/CGAL/Point_set_3/IO/PLY.h +++ b/Point_set_3/include/CGAL/Point_set_3/IO/PLY.h @@ -349,13 +349,13 @@ bool read_PLY(const std::string& fname, if(binary) { std::ifstream is(fname, std::ios::binary); - CGAL::set_mode(is, CGAL::IO::BINARY); + CGAL::IO::set_mode(is, CGAL::IO::BINARY); return read_PLY(is, point_set, comments); } else { std::ifstream is(fname); - CGAL::set_mode(is, CGAL::IO::ASCII); + CGAL::IO::set_mode(is, CGAL::IO::ASCII); return read_PLY(is, point_set, comments); } } @@ -498,7 +498,7 @@ bool write_PLY(std::ostream& os, set_stream_precision_from_NP(os, np); os << "ply" << std::endl - << ((CGAL::get_mode(os) == CGAL::IO::BINARY) ? "format binary_little_endian 1.0" : "format ascii 1.0") << std::endl + << ((CGAL::IO::get_mode(os) == CGAL::IO::BINARY) ? "format binary_little_endian 1.0" : "format ascii 1.0") << std::endl << "comment Generated by the CGAL library" << std::endl; if(comments != std::string()) @@ -750,13 +750,13 @@ bool write_PLY(const std::string& fname, if(binary) { std::ofstream os(fname, std::ios::binary); - CGAL::set_mode(os, BINARY); + CGAL::IO::set_mode(os, BINARY); return write_PLY(os, point_set, comments, np); } else { std::ofstream os(fname); - CGAL::set_mode(os, ASCII); + CGAL::IO::set_mode(os, ASCII); return write_PLY(os, point_set, comments, np); } } diff --git a/Point_set_processing_3/examples/Point_set_processing_3/clustering_example.cpp b/Point_set_processing_3/examples/Point_set_processing_3/clustering_example.cpp index eddf432eddf..6e058e1b1fe 100644 --- a/Point_set_processing_3/examples/Point_set_processing_3/clustering_example.cpp +++ b/Point_set_processing_3/examples/Point_set_processing_3/clustering_example.cpp @@ -56,7 +56,7 @@ int main (int argc, char** argv) } std::ofstream ofile("out.ply", std::ios_base::binary); - CGAL::set_binary_mode(ofile); + CGAL::IO::set_binary_mode(ofile); ofile << points; return EXIT_SUCCESS; diff --git a/Point_set_processing_3/examples/Point_set_processing_3/orient_scanlines_example.cpp b/Point_set_processing_3/examples/Point_set_processing_3/orient_scanlines_example.cpp index f537390a6be..642da49d893 100644 --- a/Point_set_processing_3/examples/Point_set_processing_3/orient_scanlines_example.cpp +++ b/Point_set_processing_3/examples/Point_set_processing_3/orient_scanlines_example.cpp @@ -16,7 +16,7 @@ using Scanline_id_map = CGAL::Nth_of_tuple_property_map<3, Point_with_info>; void dump (const char* filename, const std::vector& points) { std::ofstream ofile (filename, std::ios::binary); - CGAL::set_binary_mode(ofile); + CGAL::IO::set_binary_mode(ofile); CGAL::IO::write_PLY (ofile, points, CGAL::parameters::point_map (Point_map()). diff --git a/Point_set_processing_3/examples/Point_set_processing_3/property_map.cpp b/Point_set_processing_3/examples/Point_set_processing_3/property_map.cpp index 56a131c35e3..2b940185cc3 100644 --- a/Point_set_processing_3/examples/Point_set_processing_3/property_map.cpp +++ b/Point_set_processing_3/examples/Point_set_processing_3/property_map.cpp @@ -82,7 +82,7 @@ void orient_normals(Iterator beg, Iterator end, OrientationPMap orient_pmap, Nor int main() { - CGAL::set_pretty_mode(std::cout); + CGAL::IO::set_pretty_mode(std::cout); // Here we run it on plain points. No need for a property map { diff --git a/Point_set_processing_3/examples/Point_set_processing_3/write_ply_points_example.cpp b/Point_set_processing_3/examples/Point_set_processing_3/write_ply_points_example.cpp index a0397cb22ba..ab9451d1e9d 100644 --- a/Point_set_processing_3/examples/Point_set_processing_3/write_ply_points_example.cpp +++ b/Point_set_processing_3/examples/Point_set_processing_3/write_ply_points_example.cpp @@ -31,7 +31,7 @@ struct Output_rep< ::Color, F > { { } std::ostream& operator() (std::ostream& out) const { - if (is_ascii(out)) + if (IO::is_ascii(out)) out << int(c[0]) << " " << int(c[1]) << " " << int(c[2]) << " " << int(c[3]); else out.write(reinterpret_cast(&c), sizeof(c)); @@ -54,7 +54,7 @@ int main(int, char**) i)); std::ofstream f("out.ply", std::ios::binary); - CGAL::set_binary_mode(f); // The PLY file will be written in the binary format + CGAL::IO::set_binary_mode(f); // The PLY file will be written in the binary format CGAL::IO::write_PLY_with_properties(f, points, CGAL::make_ply_point_writer (Point_map()), diff --git a/Point_set_processing_3/include/CGAL/IO/read_las_points.h b/Point_set_processing_3/include/CGAL/IO/read_las_points.h index 16147ef98a2..5e9e127d0f8 100644 --- a/Point_set_processing_3/include/CGAL/IO/read_las_points.h +++ b/Point_set_processing_3/include/CGAL/IO/read_las_points.h @@ -546,7 +546,7 @@ bool read_LAS(const std::string& filename, const CGAL_BGL_NP_CLASS& np) { std::ifstream is(filename, std::ios::binary); - CGAL::set_mode(is, CGAL::IO::BINARY); + CGAL::IO::set_mode(is, CGAL::IO::BINARY); return read_LAS(is, output, np); } @@ -556,7 +556,7 @@ template bool read_LAS(const std::string& fname, OutputIterator output, const CGAL_BGL_NP_CLASS& np) { std::ifstream is(fname, std::ios::binary); - CGAL::set_mode(is, CGAL::IO::BINARY); + CGAL::IO::set_mode(is, CGAL::IO::BINARY); return read_LAS::type>(is, output, np); } diff --git a/Point_set_processing_3/include/CGAL/IO/read_off_points.h b/Point_set_processing_3/include/CGAL/IO/read_off_points.h index dacf2b41693..8fee80ba6bf 100644 --- a/Point_set_processing_3/include/CGAL/IO/read_off_points.h +++ b/Point_set_processing_3/include/CGAL/IO/read_off_points.h @@ -168,16 +168,16 @@ bool read_OFF(std::istream& is, // Reads position + normal... double x,y,z; double nx,ny,nz; - if (iss >> iformat(x) >> iformat(y) >> iformat(z)) + if (iss >> IO::iformat(x) >> IO::iformat(y) >> IO::iformat(z)) { //the extra `()` seem to fix a very strange bug. Without them, the put() won't compile. Point point((FT(x)), (FT(y)), (FT(z))); Vector normal = CGAL::NULL_VECTOR; // ... + normal... - if (iss >> iformat(nx)) + if (iss >> IO::iformat(nx)) { // In case we could read one number, we expect that there are two more - if(iss >> iformat(ny) >> iformat(nz)){ + if(iss >> IO::iformat(ny) >> IO::iformat(nz)){ normal = Vector(FT(nx),FT(ny),FT(nz)); } else { std::cerr << "Error line " << lineNumber << " of file" << std::endl; diff --git a/Point_set_processing_3/include/CGAL/IO/read_ply_points.h b/Point_set_processing_3/include/CGAL/IO/read_ply_points.h index 76d88a2129c..53fad444a93 100644 --- a/Point_set_processing_3/include/CGAL/IO/read_ply_points.h +++ b/Point_set_processing_3/include/CGAL/IO/read_ply_points.h @@ -340,13 +340,13 @@ bool read_PLY(const std::string& fname, if(binary) { std::ifstream is(fname, std::ios::binary); - CGAL::set_mode(is, CGAL::IO::BINARY); + CGAL::IO::set_mode(is, CGAL::IO::BINARY); return read_PLY(is, output, np); } else { std::ifstream is(fname); - CGAL::set_mode(is, CGAL::IO::ASCII); + CGAL::IO::set_mode(is, CGAL::IO::ASCII); return read_PLY(is, output, np); } } diff --git a/Point_set_processing_3/include/CGAL/IO/write_las_points.h b/Point_set_processing_3/include/CGAL/IO/write_las_points.h index 2640843a169..14679ca570a 100644 --- a/Point_set_processing_3/include/CGAL/IO/write_las_points.h +++ b/Point_set_processing_3/include/CGAL/IO/write_las_points.h @@ -348,7 +348,7 @@ bool write_LAS(const std::string& filename, ) { std::ofstream os(filename, std::ios::binary); - CGAL::set_mode(os, CGAL::IO::BINARY); + CGAL::IO::set_mode(os, CGAL::IO::BINARY); return write_LAS(os, points, np); } @@ -367,7 +367,7 @@ bool write_LAS(const std::string& filename, const PointRange& points, typename boost::enable_if >::type* = nullptr) { std::ofstream os(filename, std::ios::binary); - CGAL::set_mode(os, CGAL::IO::BINARY); + CGAL::IO::set_mode(os, CGAL::IO::BINARY); return write_LAS(os, points, parameters::all_default()); } diff --git a/Point_set_processing_3/include/CGAL/IO/write_ply_points.h b/Point_set_processing_3/include/CGAL/IO/write_ply_points.h index 881585449e1..33c1b8da3b5 100644 --- a/Point_set_processing_3/include/CGAL/IO/write_ply_points.h +++ b/Point_set_processing_3/include/CGAL/IO/write_ply_points.h @@ -94,7 +94,7 @@ namespace IO { user wants to write a complex object as several %PLY properties. In that case, a specialization of `Output_rep` must be provided for `PropertyMap::value_type` that handles both ASCII - and binary output (see `CGAL::get_mode()`). + and binary output (see `CGAL::IO::get_mode()`). \attention When writing to a binary file, the flag `std::ios::binary` flag must be set during the creation of the `ofstream`. @@ -298,13 +298,13 @@ bool write_PLY(const std::string& filename, if(binary) { std::ofstream os(filename, std::ios::binary); - CGAL::set_mode(os, CGAL::IO::BINARY); + CGAL::IO::set_mode(os, CGAL::IO::BINARY); return write_PLY(os, points, np); } else { std::ofstream os(filename); - CGAL::set_mode(os, CGAL::IO::ASCII); + CGAL::IO::set_mode(os, CGAL::IO::ASCII); return write_PLY(os, points, np); } } diff --git a/Point_set_processing_3/test/Point_set_processing_3/test_read_write_point_set.cpp b/Point_set_processing_3/test/Point_set_processing_3/test_read_write_point_set.cpp index 102a45aac3a..0dd90f9623d 100644 --- a/Point_set_processing_3/test/Point_set_processing_3/test_read_write_point_set.cpp +++ b/Point_set_processing_3/test/Point_set_processing_3/test_read_write_point_set.cpp @@ -169,7 +169,7 @@ void test_LAS(const std::string& s) assert(ok); ps.clear(); std::ifstream in(s, std::ios::binary); - CGAL::set_mode(in, CGAL::IO::BINARY); + CGAL::IO::set_mode(in, CGAL::IO::BINARY); ok = CGAL::IO::read_LAS(in, ps); assert(ok); const char* ext = "las"; @@ -180,13 +180,13 @@ void test_LAS(const std::string& s) ok = CGAL::IO::write_LAS(fname.c_str(), ps); assert(ok); std::ofstream out(fname, std::ios::binary); - CGAL::set_mode(out, CGAL::IO::BINARY); + CGAL::IO::set_mode(out, CGAL::IO::BINARY); ok = CGAL::IO::write_LAS(out, ps); assert(ok); CGAL::Point_set_3 ps2; std::ifstream is(fname, std::ios::binary); - CGAL::set_mode(is, CGAL::IO::BINARY); + CGAL::IO::set_mode(is, CGAL::IO::BINARY); ok = CGAL::IO::read_LAS(is, ps2); assert(ok); assert(ps_are_equal(ps, ps2)); diff --git a/Poisson_surface_reconstruction_3/examples/Poisson_surface_reconstruction_3/tutorial_example.cpp b/Poisson_surface_reconstruction_3/examples/Poisson_surface_reconstruction_3/tutorial_example.cpp index 53fa20806e5..183e8beddfa 100644 --- a/Poisson_surface_reconstruction_3/examples/Poisson_surface_reconstruction_3/tutorial_example.cpp +++ b/Poisson_surface_reconstruction_3/examples/Poisson_surface_reconstruction_3/tutorial_example.cpp @@ -140,7 +140,7 @@ int main(int argc, char*argv[]) //! [Output poisson] std::ofstream f ("out.ply", std::ios_base::binary); - CGAL::set_binary_mode (f); + CGAL::IO::set_binary_mode (f); CGAL::IO::write_PLY(f, output_mesh); f.close (); diff --git a/Polygon/examples/Polygon/Example.cpp b/Polygon/examples/Polygon/Example.cpp index 82b384cd296..2801aa03d42 100644 --- a/Polygon/examples/Polygon/Example.cpp +++ b/Polygon/examples/Polygon/Example.cpp @@ -21,7 +21,7 @@ int main() p.push_back(Point(2,2)); p.push_back(Point(0,4)); - CGAL::set_pretty_mode(std::cout); + CGAL::IO::set_pretty_mode(std::cout); std::cout << "created the polygon p:" << std::endl; std::cout << p << std::endl; std::cout << std::endl; diff --git a/Polygon/include/CGAL/General_polygon_with_holes_2.h b/Polygon/include/CGAL/General_polygon_with_holes_2.h index 9d086d4c485..ade90e4f77d 100644 --- a/Polygon/include/CGAL/General_polygon_with_holes_2.h +++ b/Polygon/include/CGAL/General_polygon_with_holes_2.h @@ -184,7 +184,7 @@ std::ostream { typename General_polygon_with_holes_2::Hole_const_iterator hit; - switch(get_mode(os)) { + switch(IO::get_mode(os)) { case IO::ASCII : os << p.outer_boundary() << ' ' << p.number_of_holes()<< ' '; for (hit = p.holes_begin(); hit != p.holes_end(); ++hit) { diff --git a/Polygon/include/CGAL/Polygon_2/Polygon_2_impl.h b/Polygon/include/CGAL/Polygon_2/Polygon_2_impl.h index c519e2e12e1..ce0714af873 100644 --- a/Polygon/include/CGAL/Polygon_2/Polygon_2_impl.h +++ b/Polygon/include/CGAL/Polygon_2/Polygon_2_impl.h @@ -112,7 +112,7 @@ operator<<(std::ostream &os, const Polygon_2& p) { typename Polygon_2::Vertex_const_iterator i; - switch(get_mode(os)) { + switch(IO::get_mode(os)) { case IO::ASCII : os << p.size() << ' '; for (i = p.vertices_begin(); i != p.vertices_end(); ++i) { diff --git a/Polygon/include/CGAL/Polygon_with_holes_2.h b/Polygon/include/CGAL/Polygon_with_holes_2.h index 561c64eefa6..d2796b9e8d8 100644 --- a/Polygon/include/CGAL/Polygon_with_holes_2.h +++ b/Polygon/include/CGAL/Polygon_with_holes_2.h @@ -103,7 +103,7 @@ std::ostream& operator<<(std::ostream &os, { typename Polygon_with_holes_2::Hole_const_iterator i; - switch(get_mode(os)) { + switch(IO::get_mode(os)) { case IO::ASCII : os << p.outer_boundary() << ' ' << p.number_of_holes()<<' '; for (i = p.holes_begin(); i != p.holes_end(); ++i) { diff --git a/Polygon/test/Polygon/AlgorithmTest.cpp b/Polygon/test/Polygon/AlgorithmTest.cpp index 481506f1b4b..0d52b61b998 100644 --- a/Polygon/test/Polygon/AlgorithmTest.cpp +++ b/Polygon/test/Polygon/AlgorithmTest.cpp @@ -23,7 +23,7 @@ void test_collinear_point_filtering(const R&, const char* FileName) std::cerr << "Could not open file " << FileName << "!" << endl; std::exit(1); } - CGAL::set_ascii_mode(from); + CGAL::IO::set_ascii_mode(from); std::vector polygon; std::copy(std::istream_iterator(from), std::istream_iterator(), @@ -82,7 +82,7 @@ void test_polygon(const R&, const Point&, const char* FileName) std::cerr << "could not open file " << FileName << "!" << endl; std::exit(1); } - CGAL::set_ascii_mode(from); + CGAL::IO::set_ascii_mode(from); Point point; std::vector polygon; @@ -185,7 +185,7 @@ void test_polygon(const R&, const Point&, const char* FileName) int main() { - CGAL::set_pretty_mode(cout); + CGAL::IO::set_pretty_mode(cout); cout << endl; cout << "--------------------------------------------------------" << endl; diff --git a/Polygon/test/Polygon/PolygonTest.cpp b/Polygon/test/Polygon/PolygonTest.cpp index 77fd6058eed..8b1cebe50ab 100644 --- a/Polygon/test/Polygon/PolygonTest.cpp +++ b/Polygon/test/Polygon/PolygonTest.cpp @@ -91,7 +91,7 @@ void test_iterators(ListPolygon& p, const ListPolygon& q) typedef ListPolygon::Edge_const_circulator EC; typedef ListPolygon::Edge_const_iterator EI; - CGAL::set_ascii_mode(cout); + CGAL::IO::set_ascii_mode(cout); { VC v = p.vertices_circulator(); @@ -165,28 +165,28 @@ void test_stream_operators(ListPolygon& p) { { std::ofstream to("polytest.ascii"); - CGAL::set_ascii_mode(to); + CGAL::IO::set_ascii_mode(to); to << p; to.close(); ListPolygon p_copy; std::ifstream from("polytest.ascii"); - CGAL::set_ascii_mode(from); + CGAL::IO::set_ascii_mode(from); from >> p_copy; assert(p == p_copy); } { std::ofstream to("polytest.pretty"); - CGAL::set_pretty_mode(to); + CGAL::IO::set_pretty_mode(to); to << p; } { std::ofstream to("polytest.binary"); - CGAL::set_binary_mode(to); + CGAL::IO::set_binary_mode(to); to << p; } - CGAL::set_pretty_mode(cout); + CGAL::IO::set_pretty_mode(cout); } //-----------------------------------------------------------------------// diff --git a/Polygon/test/Polygon/SimplicityTest.cpp b/Polygon/test/Polygon/SimplicityTest.cpp index 527450802b7..269392a1615 100644 --- a/Polygon/test/Polygon/SimplicityTest.cpp +++ b/Polygon/test/Polygon/SimplicityTest.cpp @@ -34,7 +34,7 @@ bool TestSimplicity(const char* FileName) int n; // number of points std::vector polygon; - CGAL::set_ascii_mode(from); + CGAL::IO::set_ascii_mode(from); from >> answer >> n; cout << " polygon has " << n << " points" << endl; for (int i=0; i 1) path = std::string(argv[1]); path += "4464_" + file_name + ".off"; std::ofstream out(path.c_str(), std::ios_base::out); - CGAL::set_ascii_mode(out); + CGAL::IO::set_ascii_mode(out); CGAL::IO::write_OFF(out, pmesh); out.close(); std::cout << "* finished writing the file" << std::endl; diff --git a/Polyhedron/demo/Polyhedron/Plugins/IO/PLY_io_plugin.cpp b/Polyhedron/demo/Polyhedron/Plugins/IO/PLY_io_plugin.cpp index 92a452b3184..fe4120c5919 100644 --- a/Polyhedron/demo/Polyhedron/Plugins/IO/PLY_io_plugin.cpp +++ b/Polyhedron/demo/Polyhedron/Plugins/IO/PLY_io_plugin.cpp @@ -205,7 +205,7 @@ save(QFileInfo fileinfo,QList& items) std::ofstream out(fileinfo.filePath().toUtf8().data(), std::ios::binary); if (choice == tr("Binary")) - CGAL::set_binary_mode(out); + CGAL::IO::set_binary_mode(out); else out.precision (std::numeric_limits::digits10 + 2); diff --git a/Polyhedron/demo/Polyhedron/Plugins/IO/STL_io_plugin.cpp b/Polyhedron/demo/Polyhedron/Plugins/IO/STL_io_plugin.cpp index e144d24db4d..20fa2f36ca1 100644 --- a/Polyhedron/demo/Polyhedron/Plugins/IO/STL_io_plugin.cpp +++ b/Polyhedron/demo/Polyhedron/Plugins/IO/STL_io_plugin.cpp @@ -147,10 +147,10 @@ save(QFileInfo fileinfo,QList& items) std::ofstream out(fileinfo.filePath().toUtf8(), std::ios::out | std::ios::binary); if ( choice == tr("Binary") ) - CGAL::set_mode(out, CGAL::IO::BINARY); + CGAL::IO::set_mode(out, CGAL::IO::BINARY); else { - CGAL::set_mode(out, CGAL::IO::ASCII); + CGAL::IO::set_mode(out, CGAL::IO::ASCII); out.precision (std::numeric_limits::digits10 + 2); } diff --git a/Polyhedron/demo/Polyhedron/Plugins/Mesh_3/C3t3_io_plugin.cpp b/Polyhedron/demo/Polyhedron/Plugins/Mesh_3/C3t3_io_plugin.cpp index 4955f52c498..e2e77c8faff 100644 --- a/Polyhedron/demo/Polyhedron/Plugins/Mesh_3/C3t3_io_plugin.cpp +++ b/Polyhedron/demo/Polyhedron/Plugins/Mesh_3/C3t3_io_plugin.cpp @@ -302,7 +302,7 @@ operator>>( std::istream& is, Fake_CDT_3_vertex_base& v) { is >> static_cast::Base&>(v); char s; - if( CGAL::is_ascii(is) ) { + if( CGAL::IO::is_ascii(is) ) { is >> s; if( s == 'S' ) { v.steiner = true; @@ -359,13 +359,13 @@ std::istream& operator>>( std::istream& is, Fake_CDT_3_cell_base& c) { char s; for( int li = 0; li < 4; ++li ) { - if( CGAL::is_ascii(is) ) + if( CGAL::IO::is_ascii(is) ) is >> c.constrained_facet[li]; else CGAL::read( is, c.constrained_facet[li] ); } - if( CGAL::is_ascii(is) ) { + if( CGAL::IO::is_ascii(is) ) { is >> s; CGAL_assertion(s == '-'); } @@ -510,7 +510,7 @@ try_load_a_cdt_3(std::istream& is, C3t3& c3t3) return false; } } - if(binary) CGAL::set_binary_mode(is); + if(binary) CGAL::IO::set_binary_mode(is); if(c3t3.triangulation().file_input< Fake_CDT_3, Update_vertex_from_CDT_3, @@ -529,7 +529,7 @@ bool Polyhedron_demo_c3t3_binary_io_plugin:: try_load_other_binary_format(std::istream& is, C3t3& c3t3) { - CGAL::set_ascii_mode(is); + CGAL::IO::set_ascii_mode(is); std::string s; if(!(is >> s)) return false; bool binary = false; @@ -552,8 +552,8 @@ try_load_other_binary_format(std::istream& is, C3t3& c3t3) return false; } } - if(binary) CGAL::set_binary_mode(is); - else CGAL::set_ascii_mode(is); + if(binary) CGAL::IO::set_binary_mode(is); + else CGAL::IO::set_ascii_mode(is); std::istream& f_is = c3t3.triangulation().file_input< Fake_c3t3::Triangulation, Update_vertex, diff --git a/Polyhedron/demo/Polyhedron/Scene_c3t3_item.h b/Polyhedron/demo/Polyhedron/Scene_c3t3_item.h index fa32e1119cf..c34951335b6 100644 --- a/Polyhedron/demo/Polyhedron/Scene_c3t3_item.h +++ b/Polyhedron/demo/Polyhedron/Scene_c3t3_item.h @@ -52,7 +52,7 @@ public: bool save_ascii(std::ostream& os) const { os << "ascii CGAL c3t3 " << CGAL::Get_io_signature()() << "\n"; - CGAL::set_ascii_mode(os); + CGAL::IO::set_ascii_mode(os); return !!(os << c3t3()); } diff --git a/Polyhedron/demo/Polyhedron/Scene_points_with_normal_item.cpp b/Polyhedron/demo/Polyhedron/Scene_points_with_normal_item.cpp index 3af64ff323c..63707001765 100644 --- a/Polyhedron/demo/Polyhedron/Scene_points_with_normal_item.cpp +++ b/Polyhedron/demo/Polyhedron/Scene_points_with_normal_item.cpp @@ -586,7 +586,7 @@ bool Scene_points_with_normal_item::write_ply_point_set(std::ostream& stream, bo return false; if (binary) - CGAL::set_binary_mode (stream); + CGAL::IO::set_binary_mode (stream); return CGAL::IO::write_PLY(stream, *(d->m_points), d->m_comments); } diff --git a/Polyhedron/demo/Polyhedron/include/CGAL/IO/read_surf_trianglemesh.h b/Polyhedron/demo/Polyhedron/include/CGAL/IO/read_surf_trianglemesh.h index adbec646b3c..fc2ac29aeb3 100644 --- a/Polyhedron/demo/Polyhedron/include/CGAL/IO/read_surf_trianglemesh.h +++ b/Polyhedron/demo/Polyhedron/include/CGAL/IO/read_surf_trianglemesh.h @@ -138,7 +138,7 @@ void treat_surf_vertices(std::istream& input, double x(0),y(0),z(0); iss.clear(); iss.str(line); - iss >> CGAL::iformat(x) >> CGAL::iformat(y) >> CGAL::iformat(z); + iss >> CGAL::IO::iformat(x) >> CGAL::IO::iformat(y) >> CGAL::IO::iformat(z); points.push_back(Point_3(x,y,z)); } } diff --git a/Polyhedron/examples/Polyhedron/polyhedron_copy.cpp b/Polyhedron/examples/Polyhedron/polyhedron_copy.cpp index eedf5d0c3e4..a110a0da229 100644 --- a/Polyhedron/examples/Polyhedron/polyhedron_copy.cpp +++ b/Polyhedron/examples/Polyhedron/polyhedron_copy.cpp @@ -97,14 +97,14 @@ int main( int argc, char **argv) { } if ( binary) { - vout << "CGAL::set_binary_mode( ofstream(" << name << "))" << endl; - CGAL::set_binary_mode( *p_out); + vout << "CGAL::IO::set_binary_mode( ofstream(" << name << "))" << endl; + CGAL::IO::set_binary_mode( *p_out); } else if ( noc) { - vout << "CGAL::set_ascii_mode( ofstream(" << name << "))" << endl; - CGAL::set_ascii_mode( *p_out); + vout << "CGAL::IO::set_ascii_mode( ofstream(" << name << "))" << endl; + CGAL::IO::set_ascii_mode( *p_out); } else { - vout << "CGAL::set_pretty_mode( ofstream(" << name << "))" << endl; - CGAL::set_pretty_mode( *p_out); + vout << "CGAL::IO::set_pretty_mode( ofstream(" << name << "))" << endl; + CGAL::IO::set_pretty_mode( *p_out); } vout << "ofstream(" << name << ") << CGAL::Polyhedron_3 ..." << endl; diff --git a/Polyhedron/examples/Polyhedron/polyhedron_prog_normals.cpp b/Polyhedron/examples/Polyhedron/polyhedron_prog_normals.cpp index 15f044a9e97..2cfebd9696d 100644 --- a/Polyhedron/examples/Polyhedron/polyhedron_prog_normals.cpp +++ b/Polyhedron/examples/Polyhedron/polyhedron_prog_normals.cpp @@ -31,7 +31,7 @@ int main() { P.make_tetrahedron( p, q, r, s); std::transform( P.facets_begin(), P.facets_end(), P.planes_begin(), Normal_vector()); - CGAL::set_pretty_mode( std::cout); + CGAL::IO::set_pretty_mode( std::cout); std::copy( P.planes_begin(), P.planes_end(), std::ostream_iterator( std::cout, "\n")); return 0; diff --git a/Polyhedron/examples/Polyhedron/polyhedron_prog_off.cpp b/Polyhedron/examples/Polyhedron/polyhedron_prog_off.cpp index cecca0428e8..d1fdd179c41 100644 --- a/Polyhedron/examples/Polyhedron/polyhedron_prog_off.cpp +++ b/Polyhedron/examples/Polyhedron/polyhedron_prog_off.cpp @@ -18,7 +18,7 @@ int main() { P.make_tetrahedron( p, q, r, s); // Write polyhedron in Object File Format (OFF). - CGAL::set_ascii_mode( std::cout); + CGAL::IO::set_ascii_mode( std::cout); std::cout << "OFF" << std::endl << P.size_of_vertices() << ' ' << P.size_of_facets() << " 0" << std::endl; std::copy( P.points_begin(), P.points_end(), diff --git a/Polyhedron/examples/Polyhedron/polyhedron_prog_planes.cpp b/Polyhedron/examples/Polyhedron/polyhedron_prog_planes.cpp index 08c009acc85..02cc825cda3 100644 --- a/Polyhedron/examples/Polyhedron/polyhedron_prog_planes.cpp +++ b/Polyhedron/examples/Polyhedron/polyhedron_prog_planes.cpp @@ -28,7 +28,7 @@ int main() { P.make_tetrahedron( p, q, r, s); std::transform( P.facets_begin(), P.facets_end(), P.planes_begin(), Plane_equation()); - CGAL::set_pretty_mode( std::cout); + CGAL::IO::set_pretty_mode( std::cout); std::copy( P.planes_begin(), P.planes_end(), std::ostream_iterator( std::cout, "\n")); return 0; diff --git a/Polyhedron/examples/Polyhedron/polyhedron_prog_tetra.cpp b/Polyhedron/examples/Polyhedron/polyhedron_prog_tetra.cpp index d610ded2099..15a72a60b03 100644 --- a/Polyhedron/examples/Polyhedron/polyhedron_prog_tetra.cpp +++ b/Polyhedron/examples/Polyhedron/polyhedron_prog_tetra.cpp @@ -15,7 +15,7 @@ int main() { Polyhedron P; P.make_tetrahedron( p, q, r, s); - CGAL::set_ascii_mode( std::cout); + CGAL::IO::set_ascii_mode( std::cout); for ( Vertex_iterator v = P.vertices_begin(); v != P.vertices_end(); ++v) std::cout << v->point() << std::endl; return 0; diff --git a/Polyhedron/examples/Polyhedron/polyhedron_prog_vector.cpp b/Polyhedron/examples/Polyhedron/polyhedron_prog_vector.cpp index c36b1aecaf0..9c4190a8e1e 100644 --- a/Polyhedron/examples/Polyhedron/polyhedron_prog_vector.cpp +++ b/Polyhedron/examples/Polyhedron/polyhedron_prog_vector.cpp @@ -17,7 +17,7 @@ int main() { Polyhedron P; // alternative constructor: Polyhedron P(4,12,4); P.make_tetrahedron( p, q, r, s); - CGAL::set_ascii_mode( std::cout); + CGAL::IO::set_ascii_mode( std::cout); std::copy( P.points_begin(), P.points_end(), std::ostream_iterator( std::cout, "\n")); return 0; diff --git a/Polyhedron/examples/Polyhedron/polyhedron_prog_vertex_normal.cpp b/Polyhedron/examples/Polyhedron/polyhedron_prog_vertex_normal.cpp index f39c08ed009..58d41655c40 100644 --- a/Polyhedron/examples/Polyhedron/polyhedron_prog_vertex_normal.cpp +++ b/Polyhedron/examples/Polyhedron/polyhedron_prog_vertex_normal.cpp @@ -101,7 +101,7 @@ int main() { P.make_tetrahedron( p, q, r, s); std::for_each( P.facets_begin(), P.facets_end(), Facet_normal()); std::for_each( P.vertices_begin(), P.vertices_end(), Vertex_normal()); - CGAL::set_pretty_mode( std::cout); + CGAL::IO::set_pretty_mode( std::cout); for ( Vertex_iterator i = P.vertices_begin(); i != P.vertices_end(); ++i) std::cout << i->normal() << std::endl; return 0; diff --git a/Polyhedron/include/CGAL/IO/print_OFF.h b/Polyhedron/include/CGAL/IO/print_OFF.h index 9e3e9a6e291..845539e0f8d 100644 --- a/Polyhedron/include/CGAL/IO/print_OFF.h +++ b/Polyhedron/include/CGAL/IO/print_OFF.h @@ -55,8 +55,8 @@ bool print_polyhedron_OFF(std::ostream& out, bool verbose = false) { File_header_OFF header(verbose); - header.set_binary(is_binary(out)); - header.set_no_comments(!is_pretty(out)); + header.set_binary(IO::is_binary(out)); + header.set_no_comments(!IO::is_pretty(out)); return print_polyhedron_with_header_OFF(out, P, header); } diff --git a/Polynomial/archive/test/Polynomial/Polynomial_traits_d.cpp b/Polynomial/archive/test/Polynomial/Polynomial_traits_d.cpp index 0a866b15a59..832f98579ee 100644 --- a/Polynomial/archive/test/Polynomial/Polynomial_traits_d.cpp +++ b/Polynomial/archive/test/Polynomial/Polynomial_traits_d.cpp @@ -17,8 +17,8 @@ template < typename AK> void test_AK_1(){ - CGAL::set_pretty_mode(std::cout); - CGAL::set_pretty_mode(std::cerr); + CGAL::IO::set_pretty_mode(std::cout); + CGAL::IO::set_pretty_mode(std::cerr); typedef typename AK::Integer Integer; typedef typename AK::Rational Rational; @@ -37,8 +37,8 @@ void test_AK_1(){ template < typename AK> void test_AK_2(){ - CGAL::set_pretty_mode(std::cout); - CGAL::set_pretty_mode(std::cerr); + CGAL::IO::set_pretty_mode(std::cout); + CGAL::IO::set_pretty_mode(std::cerr); typedef typename AK::Integer Integer; typedef typename AK::Rational Rational; @@ -57,8 +57,8 @@ void test_AK_2(){ template < typename AK> void test_AK_4(){ - CGAL::set_pretty_mode(std::cout); - CGAL::set_pretty_mode(std::cerr); + CGAL::IO::set_pretty_mode(std::cout); + CGAL::IO::set_pretty_mode(std::cerr); typedef typename AK::Integer Integer; typedef typename AK::Rational Rational; @@ -78,8 +78,8 @@ void test_AK_4(){ template < typename AK> void test_AK_5(){ - CGAL::set_pretty_mode(std::cout); - CGAL::set_pretty_mode(std::cerr); + CGAL::IO::set_pretty_mode(std::cout); + CGAL::IO::set_pretty_mode(std::cerr); typedef typename AK::Integer Integer; typedef typename AK::Rational Rational; @@ -101,8 +101,8 @@ void test_AK_5(){ template < typename AK> void test_AK_6(){ - CGAL::set_pretty_mode(std::cout); - CGAL::set_pretty_mode(std::cerr); + CGAL::IO::set_pretty_mode(std::cout); + CGAL::IO::set_pretty_mode(std::cerr); typedef typename AK::Integer Integer; typedef typename AK::Rational Rational; diff --git a/Polynomial/examples/Polynomial/coefficient_access.cpp b/Polynomial/examples/Polynomial/coefficient_access.cpp index 0ca295a45f9..97f3dae76df 100644 --- a/Polynomial/examples/Polynomial/coefficient_access.cpp +++ b/Polynomial/examples/Polynomial/coefficient_access.cpp @@ -3,7 +3,7 @@ #include int main(){ - CGAL::set_pretty_mode(std::cout); + CGAL::IO::set_pretty_mode(std::cout); typedef CGAL::Polynomial_type_generator::Type Poly_2; typedef CGAL::Polynomial_traits_d PT_2; diff --git a/Polynomial/examples/Polynomial/construction.cpp b/Polynomial/examples/Polynomial/construction.cpp index 020d23ad8b4..9c21fc55bf4 100644 --- a/Polynomial/examples/Polynomial/construction.cpp +++ b/Polynomial/examples/Polynomial/construction.cpp @@ -3,7 +3,7 @@ #include int main(){ - CGAL::set_pretty_mode(std::cout); + CGAL::IO::set_pretty_mode(std::cout); typedef CGAL::Polynomial_type_generator::Type Poly_2; typedef CGAL::Polynomial_traits_d PT_2; diff --git a/Polynomial/examples/Polynomial/degree.cpp b/Polynomial/examples/Polynomial/degree.cpp index c86516fe44c..c4fadac65c2 100644 --- a/Polynomial/examples/Polynomial/degree.cpp +++ b/Polynomial/examples/Polynomial/degree.cpp @@ -3,7 +3,7 @@ #include int main(){ - CGAL::set_pretty_mode(std::cout); + CGAL::IO::set_pretty_mode(std::cout); typedef CGAL::Polynomial_type_generator::Type Poly_2; typedef CGAL::Polynomial_traits_d PT_2; diff --git a/Polynomial/examples/Polynomial/gcd_up_to_constant_factor.cpp b/Polynomial/examples/Polynomial/gcd_up_to_constant_factor.cpp index 1314ed41f5c..674b5aeb615 100644 --- a/Polynomial/examples/Polynomial/gcd_up_to_constant_factor.cpp +++ b/Polynomial/examples/Polynomial/gcd_up_to_constant_factor.cpp @@ -3,7 +3,7 @@ #include int main(){ - CGAL::set_pretty_mode(std::cout); + CGAL::IO::set_pretty_mode(std::cout); typedef CGAL::Polynomial_type_generator::Type Poly_1; typedef CGAL::Polynomial_traits_d PT_1; diff --git a/Polynomial/examples/Polynomial/subresultants.cpp b/Polynomial/examples/Polynomial/subresultants.cpp index 69dfda7c15c..339a5baa154 100644 --- a/Polynomial/examples/Polynomial/subresultants.cpp +++ b/Polynomial/examples/Polynomial/subresultants.cpp @@ -5,7 +5,7 @@ #include int main(){ - CGAL::set_pretty_mode(std::cout); + CGAL::IO::set_pretty_mode(std::cout); typedef CGAL::Exact_integer Int; diff --git a/Polynomial/examples/Polynomial/substitute.cpp b/Polynomial/examples/Polynomial/substitute.cpp index 4b5ca70cf34..6f0c47217d3 100644 --- a/Polynomial/examples/Polynomial/substitute.cpp +++ b/Polynomial/examples/Polynomial/substitute.cpp @@ -3,7 +3,7 @@ #include int main(){ - CGAL::set_pretty_mode(std::cout); + CGAL::IO::set_pretty_mode(std::cout); typedef CGAL::Polynomial_type_generator::Type Poly_2; typedef CGAL::Polynomial_traits_d PT_2; diff --git a/Polynomial/examples/Polynomial/swap_move.cpp b/Polynomial/examples/Polynomial/swap_move.cpp index bcfb9210ae9..e6479c717ab 100644 --- a/Polynomial/examples/Polynomial/swap_move.cpp +++ b/Polynomial/examples/Polynomial/swap_move.cpp @@ -3,7 +3,7 @@ #include int main(){ - CGAL::set_pretty_mode(std::cout); + CGAL::IO::set_pretty_mode(std::cout); typedef CGAL::Polynomial_type_generator::Type Poly_3; typedef CGAL::Polynomial_traits_d PT_3; diff --git a/Polynomial/include/CGAL/Polynomial/Polynomial_type.h b/Polynomial/include/CGAL/Polynomial/Polynomial_type.h index 9f4316aa3eb..fc08c137347 100644 --- a/Polynomial/include/CGAL/Polynomial/Polynomial_type.h +++ b/Polynomial/include/CGAL/Polynomial/Polynomial_type.h @@ -829,7 +829,7 @@ public: * of xi. Missing coefficients are set to zero. * Whitespace is ignored. * The format of the coefficients must be understandable for - * is >> iformat(ai) . + * is >> IO::iformat(ai) . * * Example: A \c CGAL::Polynomial with a value of * 4x2 - 1 has to be written as @@ -1223,7 +1223,7 @@ Polynomial division(const Polynomial& p1, */ template std::ostream& operator << (std::ostream& os, const Polynomial& p) { - switch(CGAL::get_mode(os)) { + switch(CGAL::IO::get_mode(os)) { case CGAL::IO::PRETTY: p.output_maple(os); break; default: @@ -1242,7 +1242,7 @@ std::ostream& operator << (std::ostream& os, const Polynomial& p) { */ template std::istream& operator >> (std::istream& is, Polynomial& p) { - CGAL_precondition(!CGAL::is_pretty(is)); + CGAL_precondition(!CGAL::IO::is_pretty(is)); p = Polynomial::input_ascii(is); return is; } @@ -1253,12 +1253,12 @@ void print_maple_monomial(std::ostream& os, const NT& coeff, const std::string& var, int expn) { if (expn == 0 || coeff != NT(1)) { - os << CGAL::oformat(coeff, Parens_as_product_tag()); + os << CGAL::IO::oformat(coeff, Parens_as_product_tag()); if (expn >= 1) os << "*"; } if (expn >= 1) { os << var; - if (expn > 1) os << "^" << CGAL::oformat(expn); + if (expn > 1) os << "^" << CGAL::IO::oformat(expn); } } @@ -1291,12 +1291,12 @@ void Polynomial::output_maple(std::ostream& os) const { template void Polynomial::output_ascii(std::ostream &os) const { const Polynomial &p = *this; - if (p.is_zero()) { os << "P[0 (0," << oformat(NT(0)) << ")]"; return; } + if (p.is_zero()) { os << "P[0 (0," << IO::oformat(NT(0)) << ")]"; return; } - os << "P[" << oformat(p.degree()); + os << "P[" << IO::oformat(p.degree()); for (int i = 0; i <= p.degree(); i++) { - if (p[i] != NT(0)) os << "(" << CGAL::oformat(i) << "," - << CGAL::oformat(p[i]) << ")"; + if (p[i] != NT(0)) os << "(" << CGAL::IO::oformat(i) << "," + << CGAL::IO::oformat(p[i]) << ")"; } os << "]"; } @@ -1371,7 +1371,7 @@ Polynomial Polynomial::input_ascii(std::istream &is) { internal::swallow(is, 'P'); internal::swallow(is, '['); - is >> CGAL::iformat(degr); + is >> CGAL::IO::iformat(degr); if (degr < 0) { CGAL_error_msg( "input error: negative degree of polynomial specified"); } @@ -1381,12 +1381,12 @@ Polynomial Polynomial::input_ascii(std::istream &is) { do is.get(c); while (isspace(c)); do { if (c != '(') CGAL_error_msg( "input error: ( expected"); - is >> CGAL::iformat(i); + is >> CGAL::IO::iformat(i); if (!(i >= 0 && i <= degr && p[i] == NT(0))) { CGAL_error_msg( "input error: invalid exponent in polynomial"); }; internal::swallow(is, ','); - is >> CGAL::iformat(p.coeff(i)); + is >> CGAL::IO::iformat(p.coeff(i)); internal::swallow(is, ')'); do is.get(c); while (isspace(c)); } while (c != ']'); diff --git a/Polynomial/test/Polynomial/Interpolator.cpp b/Polynomial/test/Polynomial/Interpolator.cpp index 54d18be0db3..8f4c3a4351e 100644 --- a/Polynomial/test/Polynomial/Interpolator.cpp +++ b/Polynomial/test/Polynomial/Interpolator.cpp @@ -54,7 +54,7 @@ void test_interpolator(){ int main(){ - CGAL::set_pretty_mode(std::cout); + CGAL::IO::set_pretty_mode(std::cout); typedef CGAL::Arithmetic_kernel AK; typedef AK::Integer Integer; diff --git a/Polynomial/test/Polynomial/Polynomial_using_core.cpp b/Polynomial/test/Polynomial/Polynomial_using_core.cpp index ff19c6474d6..50c93fc7b19 100644 --- a/Polynomial/test/Polynomial/Polynomial_using_core.cpp +++ b/Polynomial/test/Polynomial/Polynomial_using_core.cpp @@ -7,7 +7,7 @@ int main() { // Set wrong rounding mode to test modular arithmetic CGAL::Protect_FPU_rounding pfr(CGAL_FE_UPWARD); - CGAL::set_pretty_mode(std::cout); + CGAL::IO::set_pretty_mode(std::cout); #ifdef CGAL_USE_CORE { diff --git a/Polynomial/test/Polynomial/Polynomial_using_leda.cpp b/Polynomial/test/Polynomial/Polynomial_using_leda.cpp index 2437bc1a36f..379f5ab37f6 100644 --- a/Polynomial/test/Polynomial/Polynomial_using_leda.cpp +++ b/Polynomial/test/Polynomial/Polynomial_using_leda.cpp @@ -6,7 +6,7 @@ int main() { // Set wrong rounding mode to test modular arithmetic CGAL::Protect_FPU_rounding pfr(CGAL_FE_UPWARD); - CGAL::set_pretty_mode(std::cout); + CGAL::IO::set_pretty_mode(std::cout); #ifdef CGAL_USE_LEDA { diff --git a/Polynomial/test/Polynomial/include/CGAL/test_modular_gcd.h b/Polynomial/test/Polynomial/include/CGAL/test_modular_gcd.h index 108f89cd655..9e013d7e18c 100644 --- a/Polynomial/test/Polynomial/include/CGAL/test_modular_gcd.h +++ b/Polynomial/test/Polynomial/include/CGAL/test_modular_gcd.h @@ -35,7 +35,7 @@ void gcd_utcf_test(const NT& f, const NT& g, const NT& d) { template void test_modular_gcd(Unique_factorization_domain_tag) { - ::CGAL::set_pretty_mode(std::cout); + ::CGAL::IO::set_pretty_mode(std::cout); typedef typename AT::Integer Integer; typedef Integer NT; @@ -100,7 +100,7 @@ void test_modular_gcd(Integral_domain_tag) { test_special_polynomials(Integral_domain_tag()); - ::CGAL::set_pretty_mode(std::cout); + ::CGAL::IO::set_pretty_mode(std::cout); typedef typename AT::Integer Integer; typedef CGAL::Sqrt_extension int_EXT_1; @@ -222,7 +222,7 @@ template void test_special_polynomials(Integral_domain_tag) { - ::CGAL::set_pretty_mode(std::cout); + ::CGAL::IO::set_pretty_mode(std::cout); typedef typename AT::Integer Integer; typedef CGAL::Sqrt_extension int_EXT_1; diff --git a/Polynomial/test/Polynomial/modular_gcd_utils.cpp b/Polynomial/test/Polynomial/modular_gcd_utils.cpp index a10dcabb7d8..c89923614ef 100644 --- a/Polynomial/test/Polynomial/modular_gcd_utils.cpp +++ b/Polynomial/test/Polynomial/modular_gcd_utils.cpp @@ -43,7 +43,7 @@ void test_modular_gcd_utils() { CGAL_USE_TYPE(Field_with_sqrt); CGAL::Random my_random(4711); - ::CGAL::set_pretty_mode(std::cout); + ::CGAL::IO::set_pretty_mode(std::cout); typedef typename AT::Integer Integer; typedef Integer NT; diff --git a/Polynomial/test/Polynomial/polynomial_gcd.cpp b/Polynomial/test/Polynomial/polynomial_gcd.cpp index 9f8b9c6d76b..aca5a767228 100644 --- a/Polynomial/test/Polynomial/polynomial_gcd.cpp +++ b/Polynomial/test/Polynomial/polynomial_gcd.cpp @@ -42,7 +42,7 @@ template void gcd_test(const POLY& f, const POLY& g, const POLY& d) { POLY tmp = CGAL::gcd(f, g); #ifdef WITH_OUTPUT - ::CGAL::set_pretty_mode(std::cout); + ::CGAL::IO::set_pretty_mode(std::cout); std::cout << "\ngcd: "; std::cout << "\nf(x) = " << f; std::cout << "\ng(x) = " << g; @@ -734,7 +734,7 @@ void trivariate_polynomial_test() { template void polynomial_gcd_test() { - ::CGAL::set_pretty_mode(std::cout); + ::CGAL::IO::set_pretty_mode(std::cout); std::cout<<" univariate "<(); std::cout<<" bivariate "< void test_polynomial_utils(){ - //CGAL::set_pretty_mode(std::cout); + //CGAL::IO::set_pretty_mode(std::cout); typedef typename AK::Integer Integer; typedef typename AK::Rational Rational; diff --git a/Polynomial/test/Polynomial/resultant.cpp b/Polynomial/test/Polynomial/resultant.cpp index 61491583631..cf704773ae0 100644 --- a/Polynomial/test/Polynomial/resultant.cpp +++ b/Polynomial/test/Polynomial/resultant.cpp @@ -70,7 +70,7 @@ int main(){ // Set wrong rounding mode to test modular arithmetic CGAL::Protect_FPU_rounding pfr(CGAL_FE_UPWARD); - CGAL::set_pretty_mode(std::cout); + CGAL::IO::set_pretty_mode(std::cout); typedef CGAL::Arithmetic_kernel AK; typedef AK::Integer Integer; diff --git a/Polynomial/test/Polynomial/test_polynomial.h b/Polynomial/test/Polynomial/test_polynomial.h index f962a34e20e..646057c636b 100644 --- a/Polynomial/test/Polynomial/test_polynomial.h +++ b/Polynomial/test/Polynomial/test_polynomial.h @@ -297,32 +297,32 @@ void io() { assert( p == q ); }{ std::ostringstream os; - CGAL::set_pretty_mode(os); - os << oformat(POLY(NT(3))); + CGAL::IO::set_pretty_mode(os); + os << CGAL::IO::oformat(POLY(NT(3))); //std::cout <::d == 1) assert( os.str() == "4*x + (-3)" ); else assert( os.str() == "4*y + (-3)" ); }{ std::ostringstream os; - CGAL::set_pretty_mode(os); - os << oformat(POLY(NT(-3),NT(4)), CGAL::Parens_as_product_tag()); + CGAL::IO::set_pretty_mode(os); + os << CGAL::IO::oformat(POLY(NT(-3),NT(4)), CGAL::Parens_as_product_tag()); if( CGAL::Polynomial_traits_d::d == 1) assert( os.str() == "(4*x + (-3))" ); diff --git a/Polynomial/test/Polynomial/test_polynomial_Coercion_traits.cpp b/Polynomial/test/Polynomial/test_polynomial_Coercion_traits.cpp index 86a39477003..8ba6939b0d0 100644 --- a/Polynomial/test/Polynomial/test_polynomial_Coercion_traits.cpp +++ b/Polynomial/test/Polynomial/test_polynomial_Coercion_traits.cpp @@ -15,7 +15,7 @@ template void test_coercion_from_to(A, B){ template void test_coercion_traits(){ - //CGAL::set_pretty_mode(std::cout); + //CGAL::IO::set_pretty_mode(std::cout); typedef typename AK::Integer Integer; typedef typename AK::Rational Rational; diff --git a/Polynomial/test/Polynomial/test_subresultants.cpp b/Polynomial/test/Polynomial/test_subresultants.cpp index cc8b392d049..a9dd531777f 100644 --- a/Polynomial/test/Polynomial/test_subresultants.cpp +++ b/Polynomial/test/Polynomial/test_subresultants.cpp @@ -491,7 +491,7 @@ void test_routine() { assert(sres[2]==coP[2]*f + coQ[2]*g); assert(sres[1]==coP[1]*f + coQ[1]*g); assert(sres[0]==coP[0]*f + coQ[0]*g); - CGAL::set_pretty_mode(std::cout); + CGAL::IO::set_pretty_mode(std::cout); assert(sres[2]==sres_check[2]); assert(sres[1]==sres_check[1]); assert(sres[0]==sres_check[0]); @@ -508,7 +508,7 @@ void test_routine() { std::back_inserter(sres), std::back_inserter(coP), std::back_inserter(coQ)); - CGAL::set_pretty_mode(std::cout); + CGAL::IO::set_pretty_mode(std::cout); for(int i=static_cast(sres.size()-1);i>=0;i--) { assert(sres[i]==coP[i]*f + coQ[i]*g); assert(sres_check[i]==sres[i]); @@ -532,7 +532,7 @@ void test_routine() { std::back_inserter(sres), std::back_inserter(coP), std::back_inserter(coQ)); - CGAL::set_pretty_mode(std::cout); + CGAL::IO::set_pretty_mode(std::cout); for(int i=static_cast(sres.size()-1);i>=0;i--) { assert(sres[i]==coP[i]*f + coQ[i]*g); assert(sres_check[i]==sres[i]); @@ -556,7 +556,7 @@ void test_routine() { std::back_inserter(sres), std::back_inserter(coP), std::back_inserter(coQ)); - CGAL::set_pretty_mode(std::cout); + CGAL::IO::set_pretty_mode(std::cout); for(int i=static_cast(sres.size()-1);i>=0;i--) { assert(sres[i]==coP[i]*f + coQ[i]*g); assert(sres_check[i]==sres[i]); diff --git a/Polytope_distance_d/include/CGAL/Polytope_distance_d.h b/Polytope_distance_d/include/CGAL/Polytope_distance_d.h index b52d1ca7219..ede3b47aa92 100644 --- a/Polytope_distance_d/include/CGAL/Polytope_distance_d.h +++ b/Polytope_distance_d/include/CGAL/Polytope_distance_d.h @@ -849,7 +849,7 @@ operator << ( std::ostream& os, typedef typename Traits_::ET ET; typedef ostream_iterator Et_it; - switch ( CGAL::get_mode( os)) { + switch ( CGAL::IO::get_mode( os)) { case CGAL::IO::PRETTY: os << "CGAL::Polytope_distance_d( |P+Q| = " @@ -918,7 +918,7 @@ operator << ( std::ostream& os, default: CGAL_optimisation_assertion_msg( false, - "CGAL::get_mode( os) invalid!"); + "CGAL::IO::get_mode( os) invalid!"); break; } return( os); diff --git a/Polytope_distance_d/test/Polytope_distance_d/test_Polytope_distance_d.h b/Polytope_distance_d/test/Polytope_distance_d/test_Polytope_distance_d.h index 1f7f293fa5b..d0122d83486 100644 --- a/Polytope_distance_d/test/Polytope_distance_d/test_Polytope_distance_d.h +++ b/Polytope_distance_d/test/Polytope_distance_d/test_Polytope_distance_d.h @@ -55,7 +55,7 @@ test_Polytope_distance_d( ForwardIterator p_first, ForwardIterator p_last, CGAL::Verbose_ostream verr0( verbose == 0); CGAL::Verbose_ostream verr1( verbose == 1); CGAL::Verbose_ostream verrX( verbose == 2); - CGAL::set_pretty_mode( verr.out()); + CGAL::IO::set_pretty_mode( verr.out()); bool is_valid_verbose = ( verbose > 1); diff --git a/QP_solver/include/CGAL/QP_models.h b/QP_solver/include/CGAL/QP_models.h index 500a4350d2a..c2c19285096 100644 --- a/QP_solver/include/CGAL/QP_models.h +++ b/QP_solver/include/CGAL/QP_models.h @@ -1061,7 +1061,7 @@ private: template bool number(NumberType& entry) { // whitespace(); the following >> should care for this - from >> CGAL::iformat(entry); + from >> CGAL::IO::iformat(entry); return from.good(); } diff --git a/STL_Extension/include/CGAL/algorithm.h b/STL_Extension/include/CGAL/algorithm.h index d55a6d01b87..34ca7c58cf5 100644 --- a/STL_Extension/include/CGAL/algorithm.h +++ b/STL_Extension/include/CGAL/algorithm.h @@ -22,6 +22,7 @@ #include #include #include +#include #include #include #include @@ -280,8 +281,8 @@ output_range(std::ostream& os, { InputIterator it = first; if (it != beyond) { - os << pre << oformat(*it) << post; - while (++it != beyond) os << sep << pre << oformat(*it) << post; + os << pre << CGAL::IO::oformat(*it) << post; + while (++it != beyond) os << sep << pre << CGAL::IO::oformat(*it) << post; } return os; } diff --git a/STL_Extension/test/STL_Extension/test_lexcompare_outputrange.cpp b/STL_Extension/test/STL_Extension/test_lexcompare_outputrange.cpp index 2ec6be68f18..7e316f70bbc 100644 --- a/STL_Extension/test/STL_Extension/test_lexcompare_outputrange.cpp +++ b/STL_Extension/test/STL_Extension/test_lexcompare_outputrange.cpp @@ -45,7 +45,7 @@ void test_lex_compare() { void test_output_range() { std::ostringstream os; std::ostream* sp; - CGAL::set_ascii_mode(os); + CGAL::IO::set_ascii_mode(os); assert(os.str() == ""); diff --git a/Segment_Delaunay_graph_2/include/CGAL/Segment_Delaunay_graph_2/Segment_Delaunay_graph_2_impl.h b/Segment_Delaunay_graph_2/include/CGAL/Segment_Delaunay_graph_2/Segment_Delaunay_graph_2_impl.h index 846e4ad80a2..43c1ca7b1ef 100644 --- a/Segment_Delaunay_graph_2/include/CGAL/Segment_Delaunay_graph_2/Segment_Delaunay_graph_2_impl.h +++ b/Segment_Delaunay_graph_2/include/CGAL/Segment_Delaunay_graph_2/Segment_Delaunay_graph_2_impl.h @@ -2975,71 +2975,71 @@ file_output(std::ostream& os, const Storage_site_2& t, if ( t.is_point() ) { // 0 for point os << 0; - if ( is_ascii(os) ) { os << ' '; } + if ( IO::is_ascii(os) ) { os << ' '; } if ( t.is_input() ) { // 0 for input os << 0; - if ( is_ascii(os) ) { os << ' '; } + if ( IO::is_ascii(os) ) { os << ' '; } os << P[t.point()]; } else { // 1 for non-input os << 1; - if ( is_ascii(os) ) { os << ' '; } + if ( IO::is_ascii(os) ) { os << ' '; } os << P[t.source_of_supporting_site(0)]; - if ( is_ascii(os) ) { os << ' '; } + if ( IO::is_ascii(os) ) { os << ' '; } os << P[t.target_of_supporting_site(0)]; - if ( is_ascii(os) ) { os << ' '; } + if ( IO::is_ascii(os) ) { os << ' '; } os << P[t.source_of_supporting_site(1)]; - if ( is_ascii(os) ) { os << ' '; } + if ( IO::is_ascii(os) ) { os << ' '; } os << P[t.target_of_supporting_site(1)]; } } else { // t is a segment // 1 for segment os << 1; - if ( is_ascii(os) ) { os << ' '; } + if ( IO::is_ascii(os) ) { os << ' '; } if ( t.is_input() ) { // 0 for input os << 0; - if ( is_ascii(os) ) { os << ' '; } + if ( IO::is_ascii(os) ) { os << ' '; } os << P[t.source_of_supporting_site()]; - if ( is_ascii(os) ) { os << ' '; } + if ( IO::is_ascii(os) ) { os << ' '; } os << P[t.target_of_supporting_site()]; } else if ( t.is_input(0) ) { // 1 for input source os << 1; - if ( is_ascii(os) ) { os << ' '; } + if ( IO::is_ascii(os) ) { os << ' '; } os << P[t.source_of_supporting_site()]; - if ( is_ascii(os) ) { os << ' '; } + if ( IO::is_ascii(os) ) { os << ' '; } os << P[t.target_of_supporting_site()]; - if ( is_ascii(os) ) { os << ' '; } + if ( IO::is_ascii(os) ) { os << ' '; } os << P[t.source_of_crossing_site(1)]; - if ( is_ascii(os) ) { os << ' '; } + if ( IO::is_ascii(os) ) { os << ' '; } os << P[t.target_of_crossing_site(1)]; } else if ( t.is_input(1) ) { // 2 for input target os << 2; - if ( is_ascii(os) ) { os << ' '; } + if ( IO::is_ascii(os) ) { os << ' '; } os << P[t.source_of_supporting_site()]; - if ( is_ascii(os) ) { os << ' '; } + if ( IO::is_ascii(os) ) { os << ' '; } os << P[t.target_of_supporting_site()]; - if ( is_ascii(os) ) { os << ' '; } + if ( IO::is_ascii(os) ) { os << ' '; } os << P[t.source_of_crossing_site(0)]; - if ( is_ascii(os) ) { os << ' '; } + if ( IO::is_ascii(os) ) { os << ' '; } os << P[t.target_of_crossing_site(0)]; } else { // 3 for non-input src & trg os << 3; - if ( is_ascii(os) ) { os << ' '; } + if ( IO::is_ascii(os) ) { os << ' '; } os << P[t.source_of_supporting_site()]; - if ( is_ascii(os) ) { os << ' '; } + if ( IO::is_ascii(os) ) { os << ' '; } os << P[t.target_of_supporting_site()]; - if ( is_ascii(os) ) { os << ' '; } + if ( IO::is_ascii(os) ) { os << ' '; } os << P[t.source_of_crossing_site(0)]; - if ( is_ascii(os) ) { os << ' '; } + if ( IO::is_ascii(os) ) { os << ' '; } os << P[t.target_of_crossing_site(0)]; - if ( is_ascii(os) ) { os << ' '; } + if ( IO::is_ascii(os) ) { os << ' '; } os << P[t.source_of_crossing_site(1)]; - if ( is_ascii(os) ) { os << ' '; } + if ( IO::is_ascii(os) ) { os << ' '; } os << P[t.target_of_crossing_site(1)]; } } @@ -3133,7 +3133,7 @@ file_output(std::ostream& os, Point_handle_mapper& P, CGAL_assertion( n >= 1 ); - if( is_ascii(os) ) { + if( IO::is_ascii(os) ) { os << n << ' ' << m << ' ' << dimension() << std::endl; } else { os << n << m << dimension(); @@ -3141,24 +3141,24 @@ file_output(std::ostream& os, Point_handle_mapper& P, // points in point container and input sites container if ( print_point_container ) { - if ( is_ascii(os) ) { os << std::endl; } + if ( IO::is_ascii(os) ) { os << std::endl; } os << pc_.size(); - if ( is_ascii(os) ) { os << std::endl; } + if ( IO::is_ascii(os) ) { os << std::endl; } for (const_Point_handle ph = pc_.begin(); ph != pc_.end(); ++ph) { os << *ph; - if ( is_ascii(os) ) { os << std::endl; } + if ( IO::is_ascii(os) ) { os << std::endl; } } // print the input sites container - if ( is_ascii(os) ) { os << std::endl; } + if ( IO::is_ascii(os) ) { os << std::endl; } os << isc_.size(); - if ( is_ascii(os) ) { os << std::endl; } + if ( IO::is_ascii(os) ) { os << std::endl; } for (typename Input_sites_container::const_iterator it = isc_.begin(); it != isc_.end(); ++it) { os << P[boost::tuples::get<0>(*it)]; - if ( is_ascii(os) ) { os << " "; } + if ( IO::is_ascii(os) ) { os << " "; } os << P[boost::tuples::get<1>(*it)]; - if ( is_ascii(os) ) { os << std::endl; } + if ( IO::is_ascii(os) ) { os << std::endl; } } } @@ -3170,7 +3170,7 @@ file_output(std::ostream& os, Point_handle_mapper& P, V[infinite_vertex()] = inum++; // finite vertices - if (is_ascii(os)) os << std::endl; + if (IO::is_ascii(os)) os << std::endl; for (Finite_vertices_iterator vit = finite_vertices_begin(); vit != finite_vertices_end(); ++vit) { V[vit] = inum++; @@ -3178,9 +3178,9 @@ file_output(std::ostream& os, Point_handle_mapper& P, file_output(os, vit->storage_site(), P); // write non-combinatorial info of the vertex // os << *vit ; - if ( is_ascii(os) ) { os << std::endl; } + if ( IO::is_ascii(os) ) { os << std::endl; } } - if ( is_ascii(os) ) { os << std::endl; } + if ( IO::is_ascii(os) ) { os << std::endl; } // vertices of the faces inum = 0; @@ -3190,25 +3190,25 @@ file_output(std::ostream& os, Point_handle_mapper& P, F[fit] = inum++; for(int j = 0; j < dim ; ++j) { os << V[ fit->vertex(j) ]; - if( is_ascii(os) ) { os << ' '; } + if( IO::is_ascii(os) ) { os << ' '; } } // write non-combinatorial info of the face // os << *fit ; - if( is_ascii(os) ) { os << std::endl; } + if( IO::is_ascii(os) ) { os << std::endl; } } - if( is_ascii(os) ) { os << std::endl; } + if( IO::is_ascii(os) ) { os << std::endl; } // neighbor pointers of the faces for( All_faces_iterator it = all_faces_begin(); it != all_faces_end(); ++it) { for(int j = 0; j < dimension()+1; ++j){ os << F[ it->neighbor(j) ]; - if( is_ascii(os) ) { os << ' '; } + if( IO::is_ascii(os) ) { os << ' '; } } - if( is_ascii(os) ) { os << std::endl; } + if( IO::is_ascii(os) ) { os << std::endl; } } - if ( is_ascii(os) ) { os << std::endl; } + if ( IO::is_ascii(os) ) { os << std::endl; } } diff --git a/Segment_Delaunay_graph_2/include/CGAL/Segment_Delaunay_graph_2/Segment_Delaunay_graph_hierarchy_2_impl.h b/Segment_Delaunay_graph_2/include/CGAL/Segment_Delaunay_graph_2/Segment_Delaunay_graph_hierarchy_2_impl.h index b145c0b2b7f..14697569e3c 100644 --- a/Segment_Delaunay_graph_2/include/CGAL/Segment_Delaunay_graph_2/Segment_Delaunay_graph_hierarchy_2_impl.h +++ b/Segment_Delaunay_graph_2/include/CGAL/Segment_Delaunay_graph_2/Segment_Delaunay_graph_hierarchy_2_impl.h @@ -1031,10 +1031,10 @@ file_output(std::ostream& os) const // write each level of the hierarchy hierarchy[0]->file_output(os, P, true); - if ( is_ascii(os) ) { os << std::endl << std::endl; } + if ( IO::is_ascii(os) ) { os << std::endl << std::endl; } for (unsigned int i = 1; i < sdg_hierarchy_2__maxlevel; ++i) { hierarchy[i]->file_output(os, P, false); - if ( is_ascii(os) ) { os << std::endl << std::endl; } + if ( IO::is_ascii(os) ) { os << std::endl << std::endl; } } Vertex_map* V = new Vertex_map[sdg_hierarchy_2__maxlevel]; @@ -1070,22 +1070,22 @@ file_output(std::ostream& os) const } // write up and down pointer info - if ( is_ascii(os) ) { os << std::endl << std::endl; } + if ( IO::is_ascii(os) ) { os << std::endl << std::endl; } for (unsigned int i = 0; i < sdg_hierarchy_2__maxlevel; ++i) { os << i; - if ( is_ascii(os) ) { os << " "; } + if ( IO::is_ascii(os) ) { os << " "; } os << hierarchy[i]->number_of_vertices(); - if ( is_ascii(os) ) { os << std::endl; } + if ( IO::is_ascii(os) ) { os << std::endl; } for (Finite_vertices_iterator vit = hierarchy[i]->finite_vertices_begin(); vit != hierarchy[i]->finite_vertices_end(); ++vit) { os << V[i][vit]; - if ( is_ascii(os) ) { os << " "; } + if ( IO::is_ascii(os) ) { os << " "; } os << V_down[i][vit]; - if ( is_ascii(os) ) { os << " "; } + if ( IO::is_ascii(os) ) { os << " "; } os << V_up[i][vit]; - if ( is_ascii(os) ) { os << std::endl; } + if ( IO::is_ascii(os) ) { os << std::endl; } } - if ( is_ascii(os) ) { os << std::endl << std::endl; } + if ( IO::is_ascii(os) ) { os << std::endl << std::endl; } } delete[] V; diff --git a/Segment_Delaunay_graph_Linf_2/include/CGAL/Polychain_2.h b/Segment_Delaunay_graph_Linf_2/include/CGAL/Polychain_2.h index 97c79b448ff..ad110495054 100644 --- a/Segment_Delaunay_graph_Linf_2/include/CGAL/Polychain_2.h +++ b/Segment_Delaunay_graph_Linf_2/include/CGAL/Polychain_2.h @@ -97,7 +97,7 @@ operator<<(std::ostream &os, ::Vertex_const_iterator i; - switch(get_mode(os)) { + switch(IO::get_mode(os)) { case IO::ASCII : os << p.size() << ' '; for (i = p.vertices_begin(); i != p.vertices_end(); ++i) { @@ -268,7 +268,7 @@ operator<<(std::ostream &os, { typename Polychainray_2::Vertex_const_iterator i; - switch(get_mode(os)) { + switch(IO::get_mode(os)) { case IO::ASCII : os << p.size() << ' '; for (i = p.vertices_begin(); i != p.vertices_end(); ++i) { @@ -779,7 +779,7 @@ operator<<(std::ostream &os, { typename Polychainline_2::Vertex_const_iterator i; - switch(get_mode(os)) { + switch(IO::get_mode(os)) { case IO::ASCII : os << p.size() << ' '; os << ", dinc=" << p.get_incoming() << ", "; diff --git a/Segment_Delaunay_graph_Linf_2/include/CGAL/Segment_Delaunay_graph_Linf_2/Segment_Delaunay_graph_Linf_hierarchy_2_impl.h b/Segment_Delaunay_graph_Linf_2/include/CGAL/Segment_Delaunay_graph_Linf_2/Segment_Delaunay_graph_Linf_hierarchy_2_impl.h index 38fbec9d6ab..2dcc22dc739 100644 --- a/Segment_Delaunay_graph_Linf_2/include/CGAL/Segment_Delaunay_graph_Linf_2/Segment_Delaunay_graph_Linf_hierarchy_2_impl.h +++ b/Segment_Delaunay_graph_Linf_2/include/CGAL/Segment_Delaunay_graph_Linf_2/Segment_Delaunay_graph_Linf_hierarchy_2_impl.h @@ -1097,10 +1097,10 @@ file_output(std::ostream& os) const // write each level of the hierarchy hierarchy[0]->file_output(os, P, true); - if ( is_ascii(os) ) { os << std::endl << std::endl; } + if ( IO::is_ascii(os) ) { os << std::endl << std::endl; } for (unsigned int i = 1; i < sdg_hierarchy_2__maxlevel; ++i) { hierarchy[i]->file_output(os, P, false); - if ( is_ascii(os) ) { os << std::endl << std::endl; } + if ( IO::is_ascii(os) ) { os << std::endl << std::endl; } } Vertex_map* V = new Vertex_map[sdg_hierarchy_2__maxlevel]; @@ -1136,22 +1136,22 @@ file_output(std::ostream& os) const } // write up and down pointer info - if ( is_ascii(os) ) { os << std::endl << std::endl; } + if ( IO::is_ascii(os) ) { os << std::endl << std::endl; } for (unsigned int i = 0; i < sdg_hierarchy_2__maxlevel; ++i) { os << i; - if ( is_ascii(os) ) { os << " "; } + if ( IO::is_ascii(os) ) { os << " "; } os << hierarchy[i]->number_of_vertices(); - if ( is_ascii(os) ) { os << std::endl; } + if ( IO::is_ascii(os) ) { os << std::endl; } for (Finite_vertices_iterator vit = hierarchy[i]->finite_vertices_begin(); vit != hierarchy[i]->finite_vertices_end(); ++vit) { os << V[i][vit]; - if ( is_ascii(os) ) { os << " "; } + if ( IO::is_ascii(os) ) { os << " "; } os << V_down[i][vit]; - if ( is_ascii(os) ) { os << " "; } + if ( IO::is_ascii(os) ) { os << " "; } os << V_up[i][vit]; - if ( is_ascii(os) ) { os << std::endl; } + if ( IO::is_ascii(os) ) { os << std::endl; } } - if ( is_ascii(os) ) { os << std::endl << std::endl; } + if ( IO::is_ascii(os) ) { os << std::endl << std::endl; } } delete[] V; diff --git a/Shape_detection/benchmark/Shape_detection/benchmark_region_growing_on_point_set_2.cpp b/Shape_detection/benchmark/Shape_detection/benchmark_region_growing_on_point_set_2.cpp index f6e20bd24fe..f1886f0d286 100644 --- a/Shape_detection/benchmark/Shape_detection/benchmark_region_growing_on_point_set_2.cpp +++ b/Shape_detection/benchmark/Shape_detection/benchmark_region_growing_on_point_set_2.cpp @@ -90,7 +90,7 @@ int main(int argc, char *argv[]) { // Load xyz data either from a local folder or a user-provided file. std::ifstream in(argc > 1 ? argv[1] : "data/point_set_2.xyz"); - CGAL::set_ascii_mode(in); + CGAL::IO::set_ascii_mode(in); if (!in) { std::cout << diff --git a/Shape_detection/benchmark/Shape_detection/benchmark_region_growing_on_point_set_3.cpp b/Shape_detection/benchmark/Shape_detection/benchmark_region_growing_on_point_set_3.cpp index 8ab4ef6e56d..2660463dbc0 100644 --- a/Shape_detection/benchmark/Shape_detection/benchmark_region_growing_on_point_set_3.cpp +++ b/Shape_detection/benchmark/Shape_detection/benchmark_region_growing_on_point_set_3.cpp @@ -126,7 +126,7 @@ int main(int argc, char *argv[]) { // Load xyz data either from a local folder or a user-provided file. std::ifstream in(argc > 1 ? argv[1] : "data/point_set_3.xyz"); - CGAL::set_ascii_mode(in); + CGAL::IO::set_ascii_mode(in); if (!in) { std::cout << diff --git a/Shape_detection/examples/Shape_detection/region_growing_on_point_set_2.cpp b/Shape_detection/examples/Shape_detection/region_growing_on_point_set_2.cpp index a98ed11da0d..a5c34a74897 100644 --- a/Shape_detection/examples/Shape_detection/region_growing_on_point_set_2.cpp +++ b/Shape_detection/examples/Shape_detection/region_growing_on_point_set_2.cpp @@ -55,7 +55,7 @@ namespace CGAL { std::ostream& operator()(std::ostream& out) const { - if (is_ascii(out)) + if (IO::is_ascii(out)) out << int(c[0]) << " " << int(c[1]) << " " << int(c[2]); else out.write(reinterpret_cast(&c), sizeof(c)); @@ -78,7 +78,7 @@ int main(int argc, char *argv[]) { // Load xyz data either from a local folder or a user-provided file. std::ifstream in(argc > 1 ? argv[1] : "data/point_set_2.xyz"); - CGAL::set_ascii_mode(in); + CGAL::IO::set_ascii_mode(in); if (!in) { std::cout << @@ -161,7 +161,7 @@ int main(int argc, char *argv[]) { std::ofstream out(fullpath); - CGAL::set_ascii_mode(out); + CGAL::IO::set_ascii_mode(out); CGAL::IO::write_PLY_with_properties( out, pwc, CGAL::make_ply_point_writer(PLY_Point_map()), diff --git a/Shape_detection/examples/Shape_detection/region_growing_on_point_set_3.cpp b/Shape_detection/examples/Shape_detection/region_growing_on_point_set_3.cpp index 10b6a9ab006..cea02376e11 100644 --- a/Shape_detection/examples/Shape_detection/region_growing_on_point_set_3.cpp +++ b/Shape_detection/examples/Shape_detection/region_growing_on_point_set_3.cpp @@ -109,7 +109,7 @@ int main(int argc, char *argv[]) { // Load xyz data either from a local folder or a user-provided file. std::ifstream in(argc > 1 ? argv[1] : "data/point_set_3.xyz"); - CGAL::set_ascii_mode(in); + CGAL::IO::set_ascii_mode(in); if (!in) { std::cout << diff --git a/Shape_detection/examples/Shape_detection/region_growing_on_polygon_mesh.cpp b/Shape_detection/examples/Shape_detection/region_growing_on_polygon_mesh.cpp index 63002bea13d..152b8826889 100644 --- a/Shape_detection/examples/Shape_detection/region_growing_on_polygon_mesh.cpp +++ b/Shape_detection/examples/Shape_detection/region_growing_on_polygon_mesh.cpp @@ -65,7 +65,7 @@ int main(int argc, char *argv[]) { // Load off data either from a local folder or a user-provided file. std::ifstream in(argc > 1 ? argv[1] : "data/polygon_mesh.off"); - CGAL::set_ascii_mode(in); + CGAL::IO::set_ascii_mode(in); if (!in) { std::cout << diff --git a/Shape_detection/test/Shape_detection/test_region_growing_basic.cpp b/Shape_detection/test/Shape_detection/test_region_growing_basic.cpp index ddb88052d49..0a91ffefc76 100644 --- a/Shape_detection/test/Shape_detection/test_region_growing_basic.cpp +++ b/Shape_detection/test/Shape_detection/test_region_growing_basic.cpp @@ -35,7 +35,7 @@ int main(int argc, char *argv[]) { // Load data. std::ifstream in(argc > 1 ? argv[1] : "data/point_set_2.xyz"); - CGAL::set_ascii_mode(in); + CGAL::IO::set_ascii_mode(in); if (!in) { std::cout << diff --git a/Shape_detection/test/Shape_detection/test_region_growing_on_cube.cpp b/Shape_detection/test/Shape_detection/test_region_growing_on_cube.cpp index b91d80fdaec..e3ea45870ad 100644 --- a/Shape_detection/test/Shape_detection/test_region_growing_on_cube.cpp +++ b/Shape_detection/test/Shape_detection/test_region_growing_on_cube.cpp @@ -40,7 +40,7 @@ bool test_region_growing_on_cube(int argc, char *argv[]) { // Load data. std::ifstream in(argc > 1 ? argv[1] : "data/cube.off"); - CGAL::set_ascii_mode(in); + CGAL::IO::set_ascii_mode(in); if (!in) { std::cout << diff --git a/Shape_detection/test/Shape_detection/test_region_growing_on_degenerated_mesh.cpp b/Shape_detection/test/Shape_detection/test_region_growing_on_degenerated_mesh.cpp index 70fddd80347..155db88d445 100644 --- a/Shape_detection/test/Shape_detection/test_region_growing_on_degenerated_mesh.cpp +++ b/Shape_detection/test/Shape_detection/test_region_growing_on_degenerated_mesh.cpp @@ -39,7 +39,7 @@ bool test_region_growing_on_degenerated_mesh(int argc, char *argv[]) { // Load data. std::ifstream in(argc > 1 ? argv[1] : "data/degenerated.off"); - CGAL::set_ascii_mode(in); + CGAL::IO::set_ascii_mode(in); if (!in) { std::cout << diff --git a/Shape_detection/test/Shape_detection/test_region_growing_on_point_set_2.cpp b/Shape_detection/test/Shape_detection/test_region_growing_on_point_set_2.cpp index e43ec1d60d0..ec1061d85cd 100644 --- a/Shape_detection/test/Shape_detection/test_region_growing_on_point_set_2.cpp +++ b/Shape_detection/test/Shape_detection/test_region_growing_on_point_set_2.cpp @@ -44,7 +44,7 @@ bool test_region_growing_on_point_set_2(int argc, char *argv[]) { // Load data. std::ifstream in(argc > 1 ? argv[1] : "data/point_set_2.xyz"); - CGAL::set_ascii_mode(in); + CGAL::IO::set_ascii_mode(in); if (!in) { std::cout << diff --git a/Shape_detection/test/Shape_detection/test_region_growing_on_point_set_2_with_sorting.cpp b/Shape_detection/test/Shape_detection/test_region_growing_on_point_set_2_with_sorting.cpp index 27bf5584907..902e3f9b9a0 100644 --- a/Shape_detection/test/Shape_detection/test_region_growing_on_point_set_2_with_sorting.cpp +++ b/Shape_detection/test/Shape_detection/test_region_growing_on_point_set_2_with_sorting.cpp @@ -39,7 +39,7 @@ int main(int argc, char *argv[]) { // Load data. std::ifstream in(argc > 1 ? argv[1] : "data/point_set_2.xyz"); - CGAL::set_ascii_mode(in); + CGAL::IO::set_ascii_mode(in); if (!in) { std::cout << diff --git a/Shape_detection/test/Shape_detection/test_region_growing_on_point_set_3.cpp b/Shape_detection/test/Shape_detection/test_region_growing_on_point_set_3.cpp index 95a49104927..b8b2e804b9a 100644 --- a/Shape_detection/test/Shape_detection/test_region_growing_on_point_set_3.cpp +++ b/Shape_detection/test/Shape_detection/test_region_growing_on_point_set_3.cpp @@ -43,7 +43,7 @@ bool test_region_growing_on_point_set_3(int argc, char *argv[]) { // Load data. std::ifstream in(argc > 1 ? argv[1] : "data/point_set_3.xyz"); - CGAL::set_ascii_mode(in); + CGAL::IO::set_ascii_mode(in); if (!in) { std::cout << diff --git a/Shape_detection/test/Shape_detection/test_region_growing_on_point_set_3_with_sorting.cpp b/Shape_detection/test/Shape_detection/test_region_growing_on_point_set_3_with_sorting.cpp index 8b23d9acc50..029a7072dd7 100644 --- a/Shape_detection/test/Shape_detection/test_region_growing_on_point_set_3_with_sorting.cpp +++ b/Shape_detection/test/Shape_detection/test_region_growing_on_point_set_3_with_sorting.cpp @@ -39,7 +39,7 @@ int main(int argc, char *argv[]) { // Load data. std::ifstream in(argc > 1 ? argv[1] : "data/point_set_3.xyz"); - CGAL::set_ascii_mode(in); + CGAL::IO::set_ascii_mode(in); if (!in) { std::cout << diff --git a/Shape_detection/test/Shape_detection/test_region_growing_on_polygon_mesh.cpp b/Shape_detection/test/Shape_detection/test_region_growing_on_polygon_mesh.cpp index c3e6142f6f9..e7cf528ef18 100644 --- a/Shape_detection/test/Shape_detection/test_region_growing_on_polygon_mesh.cpp +++ b/Shape_detection/test/Shape_detection/test_region_growing_on_polygon_mesh.cpp @@ -38,7 +38,7 @@ bool test_region_growing_on_polygon_mesh(int argc, char *argv[]) { // Load data. std::ifstream in(argc > 1 ? argv[1] : "data/polygon_mesh.off"); - CGAL::set_ascii_mode(in); + CGAL::IO::set_ascii_mode(in); if (!in) { std::cout << diff --git a/Shape_detection/test/Shape_detection/test_region_growing_on_polygon_mesh_with_sorting.cpp b/Shape_detection/test/Shape_detection/test_region_growing_on_polygon_mesh_with_sorting.cpp index 44e457460af..ff8b20ccae9 100644 --- a/Shape_detection/test/Shape_detection/test_region_growing_on_polygon_mesh_with_sorting.cpp +++ b/Shape_detection/test/Shape_detection/test_region_growing_on_polygon_mesh_with_sorting.cpp @@ -36,7 +36,7 @@ int main(int argc, char *argv[]) { // Load data. std::ifstream in(argc > 1 ? argv[1] : "data/polygon_mesh.off"); - CGAL::set_ascii_mode(in); + CGAL::IO::set_ascii_mode(in); if (!in) { std::cout << diff --git a/Spatial_searching/benchmark/Spatial_searching/binary.cpp b/Spatial_searching/benchmark/Spatial_searching/binary.cpp index 00ec5cc97ad..fa04ed04b2c 100644 --- a/Spatial_searching/benchmark/Spatial_searching/binary.cpp +++ b/Spatial_searching/benchmark/Spatial_searching/binary.cpp @@ -20,7 +20,7 @@ int main(int argc, char* argv[]) std::ifstream ascii(argv[1]); ascii >> d >> N; std::ofstream binary(argv[2], std::ios::out | std::ios::binary); - CGAL::set_binary_mode(binary); + CGAL::IO::set_binary_mode(binary); CGAL::write(binary, d); CGAL::write(binary, N); for(int i=0; i < N; i++){ @@ -36,8 +36,8 @@ int main(int argc, char* argv[]) std::ifstream binary(argv[1], std::ios::in | std::ios::binary); std::ofstream bbox(argv[2], std::ios::out | std::ios::binary); - CGAL::set_binary_mode(binary); - CGAL::set_binary_mode(bbox); + CGAL::IO::set_binary_mode(binary); + CGAL::IO::set_binary_mode(bbox); CGAL::read(binary,d); CGAL::read(binary,N); CGAL::write(bbox, d); @@ -74,7 +74,7 @@ int main(int argc, char* argv[]) std::ifstream binary(argv[1], std::ios::in | std::ios::binary); std::ofstream ascii(argv[2]); - CGAL::set_binary_mode(binary); + CGAL::IO::set_binary_mode(binary); CGAL::read(binary,d); CGAL::read(binary,N); ascii << d << std::endl << N << std::endl; diff --git a/Spatial_searching/benchmark/Spatial_searching/nn3cgal.cpp b/Spatial_searching/benchmark/Spatial_searching/nn3cgal.cpp index 5df37fe8632..58fba65de4d 100644 --- a/Spatial_searching/benchmark/Spatial_searching/nn3cgal.cpp +++ b/Spatial_searching/benchmark/Spatial_searching/nn3cgal.cpp @@ -39,7 +39,7 @@ void read(Points& points, char* argv) #else std::ifstream data(argv, std::ios::in | std::ios::binary); - CGAL::set_binary_mode(data); + CGAL::IO::set_binary_mode(data); CGAL::read(data,d); CGAL::read(data,n); diff --git a/Spatial_searching/benchmark/Spatial_searching/nn3nanoflan.cpp b/Spatial_searching/benchmark/Spatial_searching/nn3nanoflan.cpp index a2510e2187b..63da87f0128 100644 --- a/Spatial_searching/benchmark/Spatial_searching/nn3nanoflan.cpp +++ b/Spatial_searching/benchmark/Spatial_searching/nn3nanoflan.cpp @@ -90,7 +90,7 @@ void kdtree_demo(int argc, char** argv) // Generate points: std::ifstream input(argv[1], std::ios::in | std::ios::binary); - CGAL::set_binary_mode(input); + CGAL::IO::set_binary_mode(input); // input >> n >> n; // dimension and # of points CGAL::read(input,n); CGAL::read(input,n); @@ -98,7 +98,7 @@ void kdtree_demo(int argc, char** argv) std::vector > queries; std::ifstream queries_stream(argv[2], std::ios::in | std::ios::binary); - CGAL::set_binary_mode(queries_stream); + CGAL::IO::set_binary_mode(queries_stream); CGAL::read(queries_stream,n); CGAL::read(queries_stream,n); // queries_stream >> n >> n; diff --git a/Straight_skeleton_2/test/Straight_skeleton_2/test_sls.cpp b/Straight_skeleton_2/test/Straight_skeleton_2/test_sls.cpp index c3e87ac3cfe..709158ffbc2 100644 --- a/Straight_skeleton_2/test/Straight_skeleton_2/test_sls.cpp +++ b/Straight_skeleton_2/test/Straight_skeleton_2/test_sls.cpp @@ -223,7 +223,7 @@ IRegionPtr load_region( string file, int aShift, int& rStatus ) ifstream in(file.c_str()); if ( in ) { - CGAL::set_ascii_mode(in); + CGAL::IO::set_ascii_mode(in); rRegion = IRegionPtr( new IRegion() ) ; diff --git a/Straight_skeleton_2/test/Straight_skeleton_2/test_sls_offset.cpp b/Straight_skeleton_2/test/Straight_skeleton_2/test_sls_offset.cpp index 240bc06ab49..0bbfd140895 100644 --- a/Straight_skeleton_2/test/Straight_skeleton_2/test_sls_offset.cpp +++ b/Straight_skeleton_2/test/Straight_skeleton_2/test_sls_offset.cpp @@ -833,7 +833,7 @@ void test_offset(const char* filename) std::ifstream in(filename); assert(in); - CGAL::set_ascii_mode(in); + CGAL::IO::set_ascii_mode(in); std::vector points; std::vector polys; diff --git a/Straight_skeleton_2/test/Straight_skeleton_2/test_sls_simple.cpp b/Straight_skeleton_2/test/Straight_skeleton_2/test_sls_simple.cpp index 3153eae74e4..4bddf279d39 100644 --- a/Straight_skeleton_2/test/Straight_skeleton_2/test_sls_simple.cpp +++ b/Straight_skeleton_2/test/Straight_skeleton_2/test_sls_simple.cpp @@ -141,7 +141,7 @@ void test_skeleton(const char* filename, std::ifstream in(filename); assert(in); - CGAL::set_ascii_mode(in); + CGAL::IO::set_ascii_mode(in); std::vector polys; diff --git a/Stream_support/benchmark/Stream_support/read_doubles.cpp b/Stream_support/benchmark/Stream_support/read_doubles.cpp index ce14a76f97e..52014f67637 100644 --- a/Stream_support/benchmark/Stream_support/read_doubles.cpp +++ b/Stream_support/benchmark/Stream_support/read_doubles.cpp @@ -76,7 +76,7 @@ int main(int argc, char* argv[]) std::cerr << "iformat"<< std::endl; t.start(); for(int i=0; i> CGAL::iformat(d); + in >> CGAL::IO::iformat(d); sum+= d; } t.stop(); diff --git a/Stream_support/doc/Stream_support/IOstream.txt b/Stream_support/doc/Stream_support/IOstream.txt index 111305a7583..5571d483637 100644 --- a/Stream_support/doc/Stream_support/IOstream.txt +++ b/Stream_support/doc/Stream_support/IOstream.txt @@ -78,9 +78,9 @@ is in Ascii mode. \code{.cpp} IO::Mode set_mode(std::ios& s, IO::Mode m); -IO::Mode set_ascii_mode(std::ios& s); -IO::Mode set_binary_mode(std::ios& s); -IO::Mode set_pretty_mode(std::ios& s); +IO::Mode IO::set_ascii_mode(std::ios& s); +IO::Mode IO::set_binary_mode(std::ios& s); +IO::Mode IO::set_pretty_mode(std::ios& s); \endcode The following functions enable testing whether a stream is in a certain mode: @@ -120,11 +120,11 @@ main() Point p, q; Segment s; - CGAL::set_ascii_mode(std::cin); + CGAL::IO::set_ascii_mode(std::cin); std::cin >> p >> q; std::ifstream f("data.txt"); - CGAL::set_binary_mode(f); + CGAL::IO::set_binary_mode(f); f >> s >> p; return 1; @@ -161,11 +161,11 @@ int main() Point p(0,1), q(2,2); Segment s(p,q); - CGAL::set_pretty_mode(std::cout); + CGAL::IO::set_pretty_mode(std::cout); std::cout << p << std::endl << q << std::endl; std::ofstream f("data.txt"); - CGAL::set_binary_mode(f); + CGAL::IO::set_binary_mode(f); f << s << p ; return 1; @@ -181,12 +181,12 @@ For types with a `Output_rep` specialization, the respective output routine of ` will be called by `oformat()`. Otherwise, the stream output operator will be called. \code{.cpp} -std::cout << CGAL::oformat( myobject ); +std::cout << CGAL::IO::oformat( myobject ); \endcode Optionally, you can provide a second template parameter `F` as a formatting tag: \code{.cpp} -std::cout << CGAL::oformat( myobject, My_formatting_tag() ); +std::cout << CGAL::IO::oformat( myobject, My_formatting_tag() ); \endcode For a list of formatting tags supported by the type `T`, please diff --git a/Stream_support/doc/Stream_support/PackageDescription.txt b/Stream_support/doc/Stream_support/PackageDescription.txt index 7306ef0bd2c..cb40fcd8607 100644 --- a/Stream_support/doc/Stream_support/PackageDescription.txt +++ b/Stream_support/doc/Stream_support/PackageDescription.txt @@ -75,18 +75,18 @@ the printing mode. - `CGAL::Output_rep` \cgalCRPSection{Functions} -- `CGAL::get_mode()` -- `CGAL::is_ascii()` -- `CGAL::is_binary()` -- `CGAL::is_pretty()` -- `CGAL::set_mode()` -- `CGAL::set_ascii_mode()` -- `CGAL::set_binary_mode()` -- `CGAL::set_pretty_mode()` +- `CGAL::IO::get_mode()` +- `CGAL::IO::is_ascii()` +- `CGAL::IO::is_binary()` +- `CGAL::IO::is_pretty()` +- `CGAL::IO::set_mode()` +- `CGAL::IO::set_ascii_mode()` +- `CGAL::IO::set_binary_mode()` +- `CGAL::IO::set_pretty_mode()` - \link IOstreamOperators `CGAL::operator>>()` \endlink - \link IOstreamOperators `CGAL::operator<<()` \endlink -- `CGAL::iformat()` -- `CGAL::oformat()` +- `CGAL::IO::iformat()` +- `CGAL::IO::oformat()` \cgalCRPSection{I/O Functions} - `CGAL::IO::read_polygon_soup()` diff --git a/Stream_support/examples/Stream_support/iv2off.cpp b/Stream_support/examples/Stream_support/iv2off.cpp index 91e89957d55..231c7cff65d 100644 --- a/Stream_support/examples/Stream_support/iv2off.cpp +++ b/Stream_support/examples/Stream_support/iv2off.cpp @@ -276,8 +276,8 @@ int main( int argc, char **argv) { exit( 1); } - CGAL::set_ascii_mode(* p_in); - CGAL::set_ascii_mode(* p_out); + CGAL::IO::set_ascii_mode(* p_in); + CGAL::IO::set_ascii_mode(* p_out); vout << "Scanning Inventor file `" << iname << "' ....\n--------" << endl; iv_file_scanner( *p_in); diff --git a/Stream_support/include/CGAL/IO/GOCAD.h b/Stream_support/include/CGAL/IO/GOCAD.h index b4eca5aa3b4..bf5af235cb3 100644 --- a/Stream_support/include/CGAL/IO/GOCAD.h +++ b/Stream_support/include/CGAL/IO/GOCAD.h @@ -256,7 +256,7 @@ bool read_GOCAD(const std::string& fname, ) { std::ifstream is(fname); - CGAL::set_mode(is, CGAL::IO::ASCII); + CGAL::IO::set_mode(is, CGAL::IO::ASCII); std::pair dummy; return read_GOCAD(is, dummy, points, polygons, np); } @@ -428,7 +428,7 @@ bool write_GOCAD(const std::string& fname, ) { std::ofstream os(fname); - CGAL::set_mode(os, CGAL::IO::ASCII); + CGAL::IO::set_mode(os, CGAL::IO::ASCII); return internal::write_GOCAD(os, fname.c_str(), points, polygons, np); } diff --git a/Stream_support/include/CGAL/IO/OBJ.h b/Stream_support/include/CGAL/IO/OBJ.h index f8467ade4e3..c886fd69c9a 100644 --- a/Stream_support/include/CGAL/IO/OBJ.h +++ b/Stream_support/include/CGAL/IO/OBJ.h @@ -278,7 +278,7 @@ bool read_OBJ(const std::string& fname, ) { std::ifstream is(fname); - CGAL::set_mode(is, CGAL::IO::ASCII); + CGAL::IO::set_mode(is, CGAL::IO::ASCII); return read_OBJ(is, points, polygons, np); } @@ -392,7 +392,7 @@ bool write_OBJ(const std::string& fname, ) { std::ofstream os(fname); - CGAL::set_mode(os, CGAL::IO::ASCII); + CGAL::IO::set_mode(os, CGAL::IO::ASCII); return write_OBJ(os, points, polygons, np); } diff --git a/Stream_support/include/CGAL/IO/OBJ/File_writer_wavefront.h b/Stream_support/include/CGAL/IO/OBJ/File_writer_wavefront.h index 4736a201753..941fc1d9eae 100644 --- a/Stream_support/include/CGAL/IO/OBJ/File_writer_wavefront.h +++ b/Stream_support/include/CGAL/IO/OBJ/File_writer_wavefront.h @@ -56,11 +56,11 @@ public: void write_footer() const { out() << "\n# End of Wavefront obj format #" << std::endl; } void write_vertex(const double x, const double y, const double z) { - out() << "v " << oformat(x) << ' ' << oformat(y) << ' ' << oformat(z) << '\n'; + out() << "v " << IO::oformat(x) << ' ' << IO::oformat(y) << ' ' << IO::oformat(z) << '\n'; } void write_vertex_normal(const double x, const double y, const double z) { - out() << "vn " << oformat(x) << ' ' << oformat(y) << ' ' << oformat(z) << '\n'; + out() << "vn " << IO::oformat(x) << ' ' << IO::oformat(y) << ' ' << IO::oformat(z) << '\n'; } void write_vertex_color(const double, const double, const double) { } diff --git a/Stream_support/include/CGAL/IO/OFF/File_scanner_OFF.h b/Stream_support/include/CGAL/IO/OFF/File_scanner_OFF.h index 81a50722ba1..90c1ed4305f 100644 --- a/Stream_support/include/CGAL/IO/OFF/File_scanner_OFF.h +++ b/Stream_support/include/CGAL/IO/OFF/File_scanner_OFF.h @@ -90,7 +90,7 @@ public: std::istringstream issline(line); entries.clear(); double d; - while(issline >> iformat(d)){ + while(issline >> IO::iformat(d)){ entries.push_back(d); } @@ -704,7 +704,7 @@ public: std::istringstream issline(line); entries.clear(); double d; - while(issline >> iformat(d)){ + while(issline >> IO::iformat(d)){ entries.push_back(d); } if(entries.empty()) diff --git a/Stream_support/include/CGAL/IO/OFF/File_writer_OFF.h b/Stream_support/include/CGAL/IO/OFF/File_writer_OFF.h index 56edbf80fdf..91860254f47 100644 --- a/Stream_support/include/CGAL/IO/OFF/File_writer_OFF.h +++ b/Stream_support/include/CGAL/IO/OFF/File_writer_OFF.h @@ -73,7 +73,7 @@ public: } else { - out() << '\n' << oformat(x) << ' ' << oformat(y) << ' ' << oformat(z); + out() << '\n' << IO::oformat(x) << ' ' << IO::oformat(y) << ' ' << IO::oformat(z); } } @@ -87,7 +87,7 @@ public: } else { - out() << ' ' << ' ' << oformat(x) << ' ' << oformat(y) << ' ' << oformat(z); + out() << ' ' << ' ' << IO::oformat(x) << ' ' << IO::oformat(y) << ' ' << IO::oformat(z); } } @@ -101,7 +101,7 @@ public: } else { - out() << ' ' << ' ' << oformat(r) << ' ' << oformat(g) << ' ' << oformat(b); + out() << ' ' << ' ' << IO::oformat(r) << ' ' << IO::oformat(g) << ' ' << IO::oformat(b); } } @@ -114,7 +114,7 @@ public: } else { - out() << ' ' << ' ' << oformat(tx) << ' ' << oformat(ty); + out() << ' ' << ' ' << IO::oformat(tx) << ' ' << IO::oformat(ty); } } diff --git a/Stream_support/include/CGAL/IO/OI/File_writer_inventor.h b/Stream_support/include/CGAL/IO/OI/File_writer_inventor.h index 587e4f14800..c10a9b7df9a 100644 --- a/Stream_support/include/CGAL/IO/OI/File_writer_inventor.h +++ b/Stream_support/include/CGAL/IO/OI/File_writer_inventor.h @@ -60,7 +60,7 @@ public: void write_vertex( const double x, const double y, const double z) { - out() << " " << oformat(x) << ' ' << oformat(y) << ' ' << oformat(z) << ',' <<'\n'; + out() << " " << IO::oformat(x) << ' ' << IO::oformat(y) << ' ' << IO::oformat(z) << ',' <<'\n'; } void write_vertex_normal(const double, const double, const double) { } diff --git a/Stream_support/include/CGAL/IO/PLY.h b/Stream_support/include/CGAL/IO/PLY.h index 692525675e5..6c38859388d 100644 --- a/Stream_support/include/CGAL/IO/PLY.h +++ b/Stream_support/include/CGAL/IO/PLY.h @@ -393,13 +393,13 @@ bool read_PLY(const std::string& fname, if(binary) { std::ifstream is(fname, std::ios::binary); - CGAL::set_mode(is, CGAL::IO::BINARY); + CGAL::IO::set_mode(is, CGAL::IO::BINARY); return read_PLY(is, points, polygons, np); } else { std::ifstream is(fname); - CGAL::set_mode(is, CGAL::IO::ASCII); + CGAL::IO::set_mode(is, CGAL::IO::ASCII); return read_PLY(is, points, polygons, np); } } @@ -555,13 +555,13 @@ bool write_PLY(const std::string& fname, if(binary) { std::ofstream os(fname, std::ios::binary); - CGAL::set_mode(os, CGAL::IO::BINARY); + CGAL::IO::set_mode(os, CGAL::IO::BINARY); return write_PLY(os, points, polygons, np); } else { std::ofstream os(fname); - CGAL::set_mode(os, CGAL::IO::ASCII); + CGAL::IO::set_mode(os, CGAL::IO::ASCII); return write_PLY(os, points, polygons, np); } } diff --git a/Stream_support/include/CGAL/IO/PLY/PLY_reader.h b/Stream_support/include/CGAL/IO/PLY/PLY_reader.h index 6d144761842..98c2fc0268d 100644 --- a/Stream_support/include/CGAL/IO/PLY/PLY_reader.h +++ b/Stream_support/include/CGAL/IO/PLY/PLY_reader.h @@ -195,7 +195,7 @@ public: void read_ascii(std::istream& stream, float& t) const { - if(!(stream >> iformat(t))) + if(!(stream >> IO::iformat(t))) stream.clear(std::ios::badbit); } diff --git a/Stream_support/include/CGAL/IO/PLY/PLY_writer.h b/Stream_support/include/CGAL/IO/PLY/PLY_writer.h index 901fdd63044..225aa740a3f 100644 --- a/Stream_support/include/CGAL/IO/PLY/PLY_writer.h +++ b/Stream_support/include/CGAL/IO/PLY/PLY_writer.h @@ -116,7 +116,7 @@ template void property_write(std::ostream& stream, ForwardIterator it, PropertyMap map) { - stream << CGAL::oformat(get(map, *it)); + stream << CGAL::IO::oformat(get(map, *it)); } template @@ -132,7 +132,7 @@ void simple_property_write(std::ostream& stream, ForwardIterator it, std::pair > map) { - if(CGAL::get_mode(stream) == CGAL::IO::ASCII) + if(CGAL::IO::get_mode(stream) == CGAL::IO::ASCII) stream << no_char_character(get(map.first, *it)); else { @@ -150,7 +150,7 @@ void simple_property_write(std::ostream& stream, { const typename PropertyMap::reference value = get(map.first, *it); - if(CGAL::get_mode(stream) == CGAL::IO::ASCII) + if(CGAL::IO::get_mode(stream) == CGAL::IO::ASCII) { stream << value.size(); for(std::size_t i = 0; i < value.size(); ++ i) @@ -176,7 +176,7 @@ void output_properties(std::ostream& stream, std::tuple... >&& current) { property_write(stream, it, std::get<0>(current)); - if(get_mode(stream) == CGAL::IO::ASCII) + if(CGAL::IO::get_mode(stream) == CGAL::IO::ASCII) stream << std::endl; } diff --git a/Stream_support/include/CGAL/IO/STL.h b/Stream_support/include/CGAL/IO/STL.h index 0d045451f61..52507655d33 100644 --- a/Stream_support/include/CGAL/IO/STL.h +++ b/Stream_support/include/CGAL/IO/STL.h @@ -234,7 +234,7 @@ bool read_STL(const std::string& fname, if(binary) { std::ifstream is(fname, std::ios::binary); - CGAL::set_mode(is, BINARY); + CGAL::IO::set_mode(is, BINARY); if(read_STL(is, points, facets, np)) { return true; @@ -243,7 +243,7 @@ bool read_STL(const std::string& fname, facets.clear(); } std::ifstream is(fname); - CGAL::set_mode(is, CGAL::IO::ASCII); + CGAL::IO::set_mode(is, CGAL::IO::ASCII); bool v = choose_parameter(get_parameter(np, internal_np::verbose), false); return read_STL(is, points, facets, CGAL::parameters::verbose(v).use_binary_mode(false)); @@ -427,13 +427,13 @@ bool write_STL(const std::string& fname, if(binary) { std::ofstream os(fname, std::ios::binary); - CGAL::set_mode(os, CGAL::IO::BINARY); + CGAL::IO::set_mode(os, CGAL::IO::BINARY); return write_STL(os, points, facets, np); } else { std::ofstream os(fname); - CGAL::set_mode(os, CGAL::IO::ASCII); + CGAL::IO::set_mode(os, CGAL::IO::ASCII); return write_STL(os, points, facets, np); } } diff --git a/Stream_support/include/CGAL/IO/VRML/File_writer_VRML_2.h b/Stream_support/include/CGAL/IO/VRML/File_writer_VRML_2.h index 48e58fa64ec..e95c5c2467d 100644 --- a/Stream_support/include/CGAL/IO/VRML/File_writer_VRML_2.h +++ b/Stream_support/include/CGAL/IO/VRML/File_writer_VRML_2.h @@ -74,7 +74,7 @@ public: void write_vertex( const double x, const double y, const double z) { out() << " " - << oformat(x) << ' ' << oformat(y) << ' ' << oformat(z) << ',' << '\n'; + << IO::oformat(x) << ' ' << IO::oformat(y) << ' ' << IO::oformat(z) << ',' << '\n'; } void write_vertex_normal(const double, const double, const double) { } void write_vertex_color(const double, const double, const double) { } diff --git a/Stream_support/include/CGAL/IO/VTK.h b/Stream_support/include/CGAL/IO/VTK.h index fcd541de756..68fed07bef2 100644 --- a/Stream_support/include/CGAL/IO/VTK.h +++ b/Stream_support/include/CGAL/IO/VTK.h @@ -485,13 +485,13 @@ bool write_VTP(const std::string& fname, if(binary) { std::ofstream os(fname, std::ios::binary); - CGAL::set_mode(os, CGAL::IO::BINARY); + CGAL::IO::set_mode(os, CGAL::IO::BINARY); return write_VTP(os, points, polygons, np); } else { std::ofstream os(fname); - CGAL::set_mode(os, CGAL::IO::ASCII); + CGAL::IO::set_mode(os, CGAL::IO::ASCII); return write_VTP(os, points, polygons, np); } } diff --git a/Stream_support/include/CGAL/IO/io.h b/Stream_support/include/CGAL/IO/io.h index f3d25edbd5f..7b103f9b9cf 100644 --- a/Stream_support/include/CGAL/IO/io.h +++ b/Stream_support/include/CGAL/IO/io.h @@ -70,14 +70,14 @@ would be `PointC2(0.0, 0.0)`. At the moment \cgal does not provide input operations for pretty printed data. By default a stream is in Ascii mode. -\sa `CGAL::set_mode()` -\sa `CGAL::set_ascii_mode()` -\sa `CGAL::set_binary_mode()` -\sa `CGAL::set_pretty_mode()` -\sa `CGAL::get_mode()` -\sa `CGAL::is_ascii()` -\sa `CGAL::is_binary()` -\sa `CGAL::is_pretty()` +\sa `CGAL::IO::set_mode()` +\sa `CGAL::IO::set_ascii_mode()` +\sa `CGAL::IO::set_binary_mode()` +\sa `CGAL::IO::set_pretty_mode()` +\sa `CGAL::IO::get_mode()` +\sa `CGAL::IO::is_ascii()` +\sa `CGAL::IO::is_binary()` +\sa `CGAL::IO::is_pretty()` */ enum Mode {ASCII = 0, PRETTY, BINARY}; @@ -94,14 +94,14 @@ as `cout` or `cerr`, as well as to `std::ostringstream` and `std::ofstream`. The output operator is defined for all classes in the \cgal `Kernel` and for the class `Color` as well. -\sa `CGAL::set_mode()` -\sa `CGAL::set_ascii_mode()` -\sa `CGAL::set_binary_mode()` -\sa `CGAL::set_pretty_mode()` -\sa `CGAL::get_mode()` -\sa `CGAL::is_ascii()` -\sa `CGAL::is_binary()` -\sa `CGAL::is_pretty()` +\sa `CGAL::IO::set_mode()` +\sa `CGAL::IO::set_ascii_mode()` +\sa `CGAL::IO::set_binary_mode()` +\sa `CGAL::IO::set_pretty_mode()` +\sa `CGAL::IO::get_mode()` +\sa `CGAL::IO::is_ascii()` +\sa `CGAL::IO::is_binary()` +\sa `CGAL::IO::is_pretty()` */ ostream& operator<<(ostream& os, Class c); @@ -113,14 +113,14 @@ from the class `istream`. This allows to read from istreams as `std::cin`, as well as from `std::istringstream` and `std::ifstream`. The input operator is defined for all classes in the \cgal `Kernel`. -\sa `CGAL::set_mode()` -\sa `CGAL::set_ascii_mode()` -\sa `CGAL::set_binary_mode()` -\sa `CGAL::set_pretty_mode()` -\sa `CGAL::get_mode()` -\sa `CGAL::is_ascii()` -\sa `CGAL::is_binary()` -\sa `CGAL::is_pretty()` +\sa `CGAL::IO::set_mode()` +\sa `CGAL::IO::set_ascii_mode()` +\sa `CGAL::IO::set_binary_mode()` +\sa `CGAL::IO::set_pretty_mode()` +\sa `CGAL::IO::get_mode()` +\sa `CGAL::IO::is_ascii()` +\sa `CGAL::IO::is_binary()` +\sa `CGAL::IO::is_pretty()` */ istream& operator>>(istream& is, Class c); #endif @@ -199,6 +199,8 @@ public: template std::ostream& operator<<( std::ostream& out, Output_rep rep) { return rep( out); } +namespace IO { + /*! \ingroup PkgStreamSupportRef @@ -219,6 +221,8 @@ Generic IO for type `T` with formatting tag. template Output_rep oformat( const T& t, F) { return Output_rep(t); } +} // namespace IO + /*! \ingroup PkgStreamSupportRef @@ -394,6 +398,8 @@ The input operator is defined for all classes in the \cgal `Kernel`. template std::istream& operator>>( std::istream& in, Input_rep rep) { return rep(in); } +namespace IO { + /*! \ingroup PkgStreamSupportRef @@ -402,6 +408,8 @@ The definition of this function is completely symmetric to `oformat()`. template Input_rep iformat( T& t) { return Input_rep(t); } +} // namespace IO + template class Benchmark_rep { @@ -420,6 +428,8 @@ public: template std::ostream& operator<<( std::ostream& out, Benchmark_rep rep) { return rep( out); } +namespace IO { + template Benchmark_rep bmformat( const T& t) { return Benchmark_rep(t); } @@ -432,82 +442,82 @@ Benchmark_rep bmformat( const T& t, F) { return Benchmark_rep(t); } returns the printing mode of the %IO stream `s`. \link PkgStreamSupportEnumRef `CGAL::IO::Mode`\endlink -\sa `CGAL::set_mode()` -\sa `CGAL::set_ascii_mode()` -\sa `CGAL::set_binary_mode()` -\sa `CGAL::set_pretty_mode()` -\sa `CGAL::is_ascii()` -\sa `CGAL::is_binary()` -\sa `CGAL::is_pretty()` +\sa `CGAL::IO::set_mode()` +\sa `CGAL::IO::set_ascii_mode()` +\sa `CGAL::IO::set_binary_mode()` +\sa `CGAL::IO::set_pretty_mode()` +\sa `CGAL::IO::is_ascii()` +\sa `CGAL::IO::is_binary()` +\sa `CGAL::IO::is_pretty()` */ -inline IO::Mode get_mode(std::ios& i) +inline Mode get_mode(std::ios& i) { - return static_cast(i.iword(IO::Static::get_mode())); + return static_cast(i.iword(Static::get_mode())); } /*! \ingroup PkgStreamSupportRef -sets the mode of the %IO stream `s` to be the `IO::ASCII` mode. +sets the mode of the %IO stream `s` to be the `ASCII` mode. Returns the previous mode of `s`. \link PkgStreamSupportEnumRef `CGAL::IO::Mode`\endlink -\sa `CGAL::set_mode()` -\sa `CGAL::set_binary_mode()` -\sa `CGAL::set_pretty_mode()` -\sa `CGAL::get_mode()` -\sa `CGAL::is_ascii()` -\sa `CGAL::is_binary()` -\sa `CGAL::is_pretty()` +\sa `CGAL::IO::set_mode()` +\sa `CGAL::IO::set_binary_mode()` +\sa `CGAL::IO::set_pretty_mode()` +\sa `CGAL::IO::get_mode()` +\sa `CGAL::IO::is_ascii()` +\sa `CGAL::IO::is_binary()` +\sa `CGAL::IO::is_pretty()` */ -inline IO::Mode set_ascii_mode(std::ios& i) +inline Mode set_ascii_mode(std::ios& i) { - IO::Mode m = get_mode(i); - i.iword(IO::Static::get_mode()) = IO::ASCII; + Mode m = get_mode(i); + i.iword(Static::get_mode()) = ASCII; return m; } /*! \ingroup PkgStreamSupportRef -sets the mode of the %IO stream `s` to be the `IO::BINARY` mode. +sets the mode of the %IO stream `s` to be the `BINARY` mode. Returns the previous mode of `s`. \link PkgStreamSupportEnumRef `CGAL::IO::Mode`\endlink -\sa `CGAL::set_mode()` -\sa `CGAL::set_ascii_mode()` -\sa `CGAL::set_pretty_mode()` -\sa `CGAL::get_mode()` -\sa `CGAL::is_ascii()` -\sa `CGAL::is_binary()` -\sa `CGAL::is_pretty()` +\sa `CGAL::IO::set_mode()` +\sa `CGAL::IO::set_ascii_mode()` +\sa `CGAL::IO::set_pretty_mode()` +\sa `CGAL::IO::get_mode()` +\sa `CGAL::IO::is_ascii()` +\sa `CGAL::IO::is_binary()` +\sa `CGAL::IO::is_pretty()` */ -inline IO::Mode set_binary_mode(std::ios& i) +inline Mode set_binary_mode(std::ios& i) { - IO::Mode m = get_mode(i); - i.iword(IO::Static::get_mode()) = IO::BINARY; + Mode m = get_mode(i); + i.iword(Static::get_mode()) = BINARY; return m; } /*! \ingroup PkgStreamSupportRef -sets the mode of the %IO stream `s` to be the `IO::PRETTY` mode. +sets the mode of the %IO stream `s` to be the `PRETTY` mode. Returns the previous mode of `s`. \link PkgStreamSupportEnumRef `CGAL::IO::Mode`\endlink -\sa `CGAL::set_mode()` -\sa `CGAL::set_ascii_mode()` -\sa `CGAL::set_binary_mode()` -\sa `CGAL::get_mode()` -\sa `CGAL::is_ascii()` -\sa `CGAL::is_binary()` -\sa `CGAL::is_pretty()` +\sa `CGAL::IO::set_mode()` +\sa `CGAL::IO::set_ascii_mode()` +\sa `CGAL::IO::set_binary_mode()` +\sa `CGAL::IO::get_mode()` +\sa `CGAL::IO::is_ascii()` +\sa `CGAL::IO::is_binary()` +\sa `CGAL::IO::is_pretty()` */ -inline IO::Mode set_pretty_mode(std::ios& i) +inline Mode set_pretty_mode(std::ios& i) { - IO::Mode m = get_mode(i); - i.iword(IO::Static::get_mode()) = IO::PRETTY; + Mode m = get_mode(i); + i.iword(Static::get_mode()) = PRETTY; return m; } @@ -517,68 +527,70 @@ inline IO::Mode set_pretty_mode(std::ios& i) sets the printing mode of the %IO stream `s`. \link PkgStreamSupportEnumRef `CGAL::IO::Mode`\endlink -\sa `CGAL::set_ascii_mode()` -\sa `CGAL::set_binary_mode()` -\sa `CGAL::set_pretty_mode()` -\sa `CGAL::get_mode()` -\sa `CGAL::is_ascii()` -\sa `CGAL::is_binary()` -\sa `CGAL::is_pretty()` +\sa `CGAL::IO::set_ascii_mode()` +\sa `CGAL::IO::set_binary_mode()` +\sa `CGAL::IO::set_pretty_mode()` +\sa `CGAL::IO::get_mode()` +\sa `CGAL::IO::is_ascii()` +\sa `CGAL::IO::is_binary()` +\sa `CGAL::IO::is_pretty()` */ -inline IO::Mode set_mode(std::ios& i, IO::Mode m) +inline Mode set_mode(std::ios& i, Mode m) { - IO::Mode old = get_mode(i); - i.iword(IO::Static::get_mode()) = m; + Mode old = get_mode(i); + i.iword(Static::get_mode()) = m; return old; } /*! \ingroup PkgStreamSupportRef -checks if the %IO stream `s` is in `IO::PRETTY` mode. +checks if the %IO stream `s` is in `PRETTY` mode. \link PkgStreamSupportEnumRef `CGAL::IO::Mode`\endlink -\sa `CGAL::set_mode()` -\sa `CGAL::set_ascii_mode()` -\sa `CGAL::set_binary_mode()` -\sa `CGAL::set_pretty_mode()` -\sa `CGAL::get_mode()` -\sa `CGAL::is_ascii()` -\sa `CGAL::is_binary()` +\sa `CGAL::IO::set_mode()` +\sa `CGAL::IO::set_ascii_mode()` +\sa `CGAL::IO::set_binary_mode()` +\sa `CGAL::IO::set_pretty_mode()` +\sa `CGAL::IO::get_mode()` +\sa `CGAL::IO::is_ascii()` +\sa `CGAL::IO::is_binary()` */ -inline bool is_pretty(std::ios& i) { return i.iword(IO::Static::get_mode()) == IO::PRETTY; } +inline bool is_pretty(std::ios& i) { return i.iword(Static::get_mode()) == PRETTY; } /*! \ingroup PkgStreamSupportRef -checks if the %IO stream `s` is in `IO::ASCII` mode. +checks if the %IO stream `s` is in `ASCII` mode. \link PkgStreamSupportEnumRef `CGAL::IO::Mode`\endlink -\sa `CGAL::set_mode()` -\sa `CGAL::set_ascii_mode()` -\sa `CGAL::set_binary_mode()` -\sa `CGAL::set_pretty_mode()` -\sa `CGAL::get_mode()` -\sa `CGAL::is_binary()` -\sa `CGAL::is_pretty()` +\sa `CGAL::IO::set_mode()` +\sa `CGAL::IO::set_ascii_mode()` +\sa `CGAL::IO::set_binary_mode()` +\sa `CGAL::IO::set_pretty_mode()` +\sa `CGAL::IO::get_mode()` +\sa `CGAL::IO::is_binary()` +\sa `CGAL::IO::is_pretty()` */ -inline bool is_ascii(std::ios& i) { return i.iword(IO::Static::get_mode()) == IO::ASCII; } +inline bool is_ascii(std::ios& i) { return i.iword(Static::get_mode()) == ASCII; } /*! \ingroup PkgStreamSupportRef -checks if the %IO stream `s` is in `IO::BINARY` mode. +checks if the %IO stream `s` is in `BINARY` mode. \link PkgStreamSupportEnumRef `CGAL::IO::Mode`\endlink -\sa `CGAL::set_mode()` -\sa `CGAL::set_ascii_mode()` -\sa `CGAL::set_binary_mode()` -\sa `CGAL::set_pretty_mode()` -\sa `CGAL::get_mode()` -\sa `CGAL::is_ascii()` -\sa `CGAL::is_pretty()` +\sa `CGAL::IO::set_mode()` +\sa `CGAL::IO::set_ascii_mode()` +\sa `CGAL::IO::set_binary_mode()` +\sa `CGAL::IO::set_pretty_mode()` +\sa `CGAL::IO::get_mode()` +\sa `CGAL::IO::is_ascii()` +\sa `CGAL::IO::is_pretty()` */ -inline bool is_binary(std::ios& i) { return i.iword(IO::Static::get_mode()) == IO::BINARY; } +inline bool is_binary(std::ios& i) { return i.iword(Static::get_mode()) == BINARY; } + +} // namespace IO template < class T > inline void write(std::ostream& os, const T& t, const io_Read_write&) @@ -589,7 +601,7 @@ inline void write(std::ostream& os, const T& t, const io_Read_write&) template < class T > inline void write(std::ostream& os, const T& t, const io_Operator&) { - os << oformat(t); + os << IO::oformat(t); } template < class T > @@ -613,7 +625,7 @@ inline void read(std::istream& is, T& t, const io_Read_write&) template < class T > inline void read(std::istream& is, T& t, const io_Operator&) { - is >> iformat(t); + is >> IO::iformat(t); } template < class T > @@ -628,16 +640,18 @@ inline void read(std::istream& is, T& t) read(is, t, typename Io_traits::Io_tag()); } -inline std::ostream& operator<<( std::ostream& out, const IO::Color& col) +namespace IO { + +inline std::ostream& operator<<( std::ostream& out, const Color& col) { switch(get_mode(out)) { - case IO::ASCII : + case ASCII : return out << static_cast(col.red()) << ' ' << static_cast(col.green()) << ' ' << static_cast(col.blue()) << ' ' << static_cast(col.alpha()); - case IO::BINARY : + case BINARY : out.write(reinterpret_cast(col.to_rgba().data()), 4); return out; default: @@ -648,21 +662,21 @@ inline std::ostream& operator<<( std::ostream& out, const IO::Color& col) } } -inline std::istream &operator>>(std::istream &is, IO::Color& col) +inline std::istream &operator>>(std::istream &is, Color& col) { unsigned char r = 0, g = 0, b = 0, a = 0; int ir = 0, ig = 0, ib = 0, ia = 0; switch(get_mode(is)) { - case IO::ASCII : + case ASCII : is >> ir >> ig >> ib >> ia; r = (unsigned char)ir; g = (unsigned char)ig; b = (unsigned char)ib; a = (unsigned char)ia; break; - case IO::BINARY : + case BINARY : read(is, r); read(is, g); read(is, b); @@ -674,7 +688,7 @@ inline std::istream &operator>>(std::istream &is, IO::Color& col) break; } - col = IO::Color(r,g,b,a); + col = Color(r,g,b,a); return is; } @@ -685,6 +699,23 @@ inline const char* mode_name( IO::Mode m ) return names[m]; } +} // IO namespace + +#ifndef CGAL_NO_DEPRECATED_CODE +using IO::oformat; +using IO::iformat; +using IO::bmformat; +using IO::get_mode; +using IO::set_ascii_mode; +using IO::set_binary_mode; +using IO::set_pretty_mode; +using IO::set_mode; +using IO::is_pretty; +using IO::is_ascii; +using IO::is_binary; +using IO::mode_name; +#endif + // From polynomial.h TODO: Where to put this? inline void swallow(std::istream &is, char d) { diff --git a/Stream_support/test/Stream_support/test_PLY.cpp b/Stream_support/test/Stream_support/test_PLY.cpp index c5d32139a68..6a727f2dbbb 100644 --- a/Stream_support/test/Stream_support/test_PLY.cpp +++ b/Stream_support/test/Stream_support/test_PLY.cpp @@ -53,7 +53,7 @@ int main(int argc, char** argv) assert(ok); std::ofstream os("tmp.ply"); - CGAL::set_binary_mode(os); + CGAL::IO::set_binary_mode(os); ok = CGAL::IO::write_PLY(os, points, polygons); assert(ok); os.close(); diff --git a/Stream_support/test/Stream_support/test_STL.cpp b/Stream_support/test/Stream_support/test_STL.cpp index c696b3af860..9fd3dffe5f0 100644 --- a/Stream_support/test/Stream_support/test_STL.cpp +++ b/Stream_support/test/Stream_support/test_STL.cpp @@ -108,7 +108,7 @@ int main(int argc, char** argv) assert(ok); std::ofstream os("tmp.stl"); - CGAL::set_binary_mode(os); + CGAL::IO::set_binary_mode(os); ok = CGAL::IO::write_STL(os, points, polygons); assert(ok); os.close(); diff --git a/Stream_support/test/Stream_support/test_ioformat.cpp b/Stream_support/test/Stream_support/test_ioformat.cpp index 6c4ba850e80..e4e4e13e67e 100644 --- a/Stream_support/test/Stream_support/test_ioformat.cpp +++ b/Stream_support/test/Stream_support/test_ioformat.cpp @@ -36,9 +36,9 @@ void test_io(const NT& x){ assert( x == tmp ); }{ std::ostringstream os; - os << ::CGAL::oformat(x); + os << ::CGAL::IO::oformat(x); std::istringstream is(os.str()); - is >> ::CGAL::iformat(tmp); + is >> ::CGAL::IO::iformat(tmp); assert( x == tmp ); }{ std::ostringstream os; diff --git a/Stream_support/test/Stream_support/test_support.cpp b/Stream_support/test/Stream_support/test_support.cpp index 46fe0e01560..95548ee2d5e 100644 --- a/Stream_support/test/Stream_support/test_support.cpp +++ b/Stream_support/test/Stream_support/test_support.cpp @@ -38,24 +38,24 @@ int main() typedef CGAL::Istream_iterator IteratorI; { std::ostringstream out; - CGAL::set_ascii_mode( out); - assert( CGAL::is_ascii( out)); + CGAL::IO::set_ascii_mode( out); + assert( CGAL::IO::is_ascii( out)); out << Point( 1, 2) << '\0'; std::istringstream in( out.str() ); - CGAL::set_ascii_mode(in); - assert( CGAL::is_ascii(in)); + CGAL::IO::set_ascii_mode(in); + assert( CGAL::IO::is_ascii(in)); Point p; in >> p; assert( p == Point( 1, 2)); } { std::ostringstream out; - CGAL::set_ascii_mode( out); + CGAL::IO::set_ascii_mode( out); IteratorO o(out); *o = Point( 1, 2); out << '\0'; std::istringstream in( out.str() ); - CGAL::set_ascii_mode( in); + CGAL::IO::set_ascii_mode( in); IteratorI i(in); Point p = *i; assert( p == Point( 1, 2)); diff --git a/Surface_mesh/test/Surface_mesh/sm_ply_io.cpp b/Surface_mesh/test/Surface_mesh/sm_ply_io.cpp index 5c2d21fc595..d26aca67d68 100644 --- a/Surface_mesh/test/Surface_mesh/sm_ply_io.cpp +++ b/Surface_mesh/test/Surface_mesh/sm_ply_io.cpp @@ -40,7 +40,7 @@ int main() CGAL::IO::read_PLY(in2, mesh); std::ofstream out("out.ply"); -// CGAL::set_binary_mode(out); +// CGAL::IO::set_binary_mode(out); CGAL::IO::write_PLY(out, mesh); return 0; diff --git a/Surface_mesh_parameterization/test/Surface_mesh_parameterization/extensive_parameterization_test.cpp b/Surface_mesh_parameterization/test/Surface_mesh_parameterization/extensive_parameterization_test.cpp index 79187d8c4d7..d25e1b83954 100644 --- a/Surface_mesh_parameterization/test/Surface_mesh_parameterization/extensive_parameterization_test.cpp +++ b/Surface_mesh_parameterization/test/Surface_mesh_parameterization/extensive_parameterization_test.cpp @@ -79,7 +79,7 @@ typedef boost::graph_traits::halfedge_descriptor SM_SE_halfedge int main(int, char**) { std::cout.precision(17); - CGAL::set_pretty_mode(std::cout); + CGAL::IO::set_pretty_mode(std::cout); // *************************************************************************** // Default case diff --git a/Surface_mesher/include/CGAL/Complex_2_in_triangulation_cell_base_3.h b/Surface_mesher/include/CGAL/Complex_2_in_triangulation_cell_base_3.h index bf6d2c30049..af757f8365e 100644 --- a/Surface_mesher/include/CGAL/Complex_2_in_triangulation_cell_base_3.h +++ b/Surface_mesher/include/CGAL/Complex_2_in_triangulation_cell_base_3.h @@ -120,7 +120,7 @@ operator>>(std::istream &is, Complex_2_in_triangulation_cell_base_3 &c) is >> static_cast(c); for(int i = 0; i < 4; ++i) { - if(is_ascii(is)) + if(IO::is_ascii(is)) is >> b; else { @@ -142,7 +142,7 @@ operator<<(std::ostream &os, os << static_cast(c); for(int i = 0; i < 4; ++i) { - if(is_ascii(os)) + if(IO::is_ascii(os)) os << ' ' << c.is_facet_on_surface(i); else write(os, static_cast(c.is_facet_on_surface(i))); diff --git a/Surface_mesher/include/CGAL/Point_with_psc_localisation.h b/Surface_mesher/include/CGAL/Point_with_psc_localisation.h index 830ccae8b56..24122b515cc 100644 --- a/Surface_mesher/include/CGAL/Point_with_psc_localisation.h +++ b/Surface_mesher/include/CGAL/Point_with_psc_localisation.h @@ -116,7 +116,7 @@ std::ostream& operator<<(std::ostream &os, const Point_with_psc_localisation& p) { os << static_cast(p); - if(is_ascii(os)) + if(IO::is_ascii(os)) os << ' ' << p.dimension() << ' ' << p.element_index(); else { write(os, p.dimension()); @@ -131,7 +131,7 @@ operator>>(std::istream &is, Point_with_psc_localisation& p) { is >> static_cast(p); int index, dim; - if(is_ascii(is)) + if(IO::is_ascii(is)) is >> dim >> index; else { read(is, dim); diff --git a/Surface_mesher/include/CGAL/Point_with_surface_index.h b/Surface_mesher/include/CGAL/Point_with_surface_index.h index 7a9df119c60..a4adc974429 100644 --- a/Surface_mesher/include/CGAL/Point_with_surface_index.h +++ b/Surface_mesher/include/CGAL/Point_with_surface_index.h @@ -64,7 +64,7 @@ std::ostream& operator<<(std::ostream &os, const Point_with_surface_index& p) { os << static_cast(p); - if(is_ascii(os)) + if(IO::is_ascii(os)) os << ' ' << p.surface_index(); else write(os, p.surface_index()); @@ -77,7 +77,7 @@ operator>>(std::istream &is, Point_with_surface_index& p) { is >> static_cast(p); int index; - if(is_ascii(is)) + if(IO::is_ascii(is)) is >> index; else read(is, index); diff --git a/TDS_2/include/CGAL/Triangulation_data_structure_2.h b/TDS_2/include/CGAL/Triangulation_data_structure_2.h index 2d7dbc59261..6f32473c744 100644 --- a/TDS_2/include/CGAL/Triangulation_data_structure_2.h +++ b/TDS_2/include/CGAL/Triangulation_data_structure_2.h @@ -2113,7 +2113,7 @@ file_output( std::ostream& os, Vertex_handle v, bool skip_first) const size_type n = number_of_vertices(); size_type m = number_of_full_dim_faces(); - if(is_ascii(os)) os << n << ' ' << m << ' ' << dimension() << std::endl; + if(IO::is_ascii(os)) os << n << ' ' << m << ' ' << dimension() << std::endl; else os << n << m << dimension(); if (n==0) return; @@ -2128,7 +2128,7 @@ file_output( std::ostream& os, Vertex_handle v, bool skip_first) const if( ! skip_first){ // os << v->point(); os << *v ; - if(is_ascii(os)) os << std::endl; + if(IO::is_ascii(os)) os << std::endl; } } @@ -2138,10 +2138,10 @@ file_output( std::ostream& os, Vertex_handle v, bool skip_first) const V[vit] = inum++; // os << vit->point(); os << *vit; - if(is_ascii(os)) os << "\n"; + if(IO::is_ascii(os)) os << "\n"; } } - if(is_ascii(os)) os << "\n"; + if(IO::is_ascii(os)) os << "\n"; // vertices of the faces inum = 0; @@ -2151,21 +2151,21 @@ file_output( std::ostream& os, Vertex_handle v, bool skip_first) const F[ib] = inum++; for(int j = 0; j < dim ; ++j) { os << V[ib->vertex(j)]; - if(is_ascii(os)) os << " "; + if(IO::is_ascii(os)) os << " "; } os << *ib ; - if(is_ascii(os)) os << "\n"; + if(IO::is_ascii(os)) os << "\n"; } - if(is_ascii(os)) os << "\n"; + if(IO::is_ascii(os)) os << "\n"; // neighbor pointers of the faces for( Face_iterator it = face_iterator_base_begin(); it != face_iterator_base_end(); ++it) { for(int j = 0; j < dimension()+1; ++j){ os << F[it->neighbor(j)]; - if(is_ascii(os)) os << " "; + if(IO::is_ascii(os)) os << " "; } - if(is_ascii(os)) os << "\n"; + if(IO::is_ascii(os)) os << "\n"; } return ; diff --git a/TDS_2/test/TDS_2/include/CGAL/_test_cls_tds_2.h b/TDS_2/test/TDS_2/include/CGAL/_test_cls_tds_2.h index 619b959937e..0545aa79748 100644 --- a/TDS_2/test/TDS_2/include/CGAL/_test_cls_tds_2.h +++ b/TDS_2/test/TDS_2/include/CGAL/_test_cls_tds_2.h @@ -465,48 +465,48 @@ _test_cls_tds_2( const Tds &) std::cout << " output to a file" << std::endl; std::ofstream of0("file_tds0"); - CGAL::set_ascii_mode(of0); + CGAL::IO::set_ascii_mode(of0); of0 << tds0 ; of0.close(); std::ofstream of1("file_tds1"); - CGAL::set_ascii_mode(of1); + CGAL::IO::set_ascii_mode(of1); of1 << tds1 ; of1.close(); std::ofstream of2("file_tds2"); - CGAL::set_ascii_mode(of2); + CGAL::IO::set_ascii_mode(of2); of2 << tds2 ; of2.close(); std::ofstream of3("file_tds3"); - CGAL::set_ascii_mode(of3); + CGAL::IO::set_ascii_mode(of3); of3 << tds3 ; of3.close(); std::ofstream of4("file_tds4"); - CGAL::set_ascii_mode(of4); + CGAL::IO::set_ascii_mode(of4); of4 << tds4 ; of4.close(); std::cout << " input from a file" << std::endl; - std::ifstream if0("file_tds0"); CGAL::set_ascii_mode(if0); + std::ifstream if0("file_tds0"); CGAL::IO::set_ascii_mode(if0); Tds tds0f; if0 >> tds0f ; assert( tds0f.is_valid()); - std::ifstream if1("file_tds1"); CGAL::set_ascii_mode(if1); + std::ifstream if1("file_tds1"); CGAL::IO::set_ascii_mode(if1); Tds tds1f; if1 >> tds1f; assert( tds1f.is_valid()); std::ifstream if2("file_tds2"); - CGAL::set_ascii_mode(if2); + CGAL::IO::set_ascii_mode(if2); Tds tds2f; if2 >> tds2f ; assert( tds2f.is_valid()); std::ifstream if3("file_tds3"); - CGAL::set_ascii_mode(if3); + CGAL::IO::set_ascii_mode(if3); Tds tds3f; if3 >> tds3f ; assert( tds3f.is_valid()); std::ifstream if4("file_tds4"); - CGAL::set_ascii_mode(if4); + CGAL::IO::set_ascii_mode(if4); Tds tds4f; if4 >> tds4f ; assert( tds4f.is_valid()); // vrml input-output std::ofstream os("vrml_tds4"); - CGAL::set_ascii_mode(os); + CGAL::IO::set_ascii_mode(os); tds4.vrml_output(os); // test destructor and return diff --git a/TDS_3/include/CGAL/Triangulation_data_structure_3.h b/TDS_3/include/CGAL/Triangulation_data_structure_3.h index b3927cf03ae..e40a16ee90a 100644 --- a/TDS_3/include/CGAL/Triangulation_data_structure_3.h +++ b/TDS_3/include/CGAL/Triangulation_data_structure_3.h @@ -1626,7 +1626,7 @@ public: std::size_t n; int d; - if(is_ascii(is)) + if(IO::is_ascii(is)) is >> d >> n; else { read(is, d); @@ -1957,7 +1957,7 @@ operator>>(std::istream& is, Triangulation_data_structure_3& tds) std::size_t n; int d; - if(is_ascii(is)) + if(IO::is_ascii(is)) is >> d >> n; else { read(is, n); @@ -2008,7 +2008,7 @@ operator<<(std::ostream& os, const Triangulation_data_structure_3 &tds // outputs dimension and number of vertices size_type n = tds.number_of_vertices(); - if (is_ascii(os)) + if (IO::is_ascii(os)) os << tds.dimension() << std::endl << n << std::endl; else { @@ -2524,7 +2524,7 @@ read_cells(std::istream& is, const std::vector< Vertex_handle > &V, case 2: case 1: { - if(is_ascii(is)) + if(IO::is_ascii(is)) is >> m; else read(is, m); @@ -2535,7 +2535,7 @@ read_cells(std::istream& is, const std::vector< Vertex_handle > &V, Cell_handle c = create_cell(); for (int k=0; k<=dimension(); ++k) { std::size_t ik; - if(is_ascii(is)) + if(IO::is_ascii(is)) is >> ik; else read(is, ik); @@ -2548,7 +2548,7 @@ read_cells(std::istream& is, const std::vector< Vertex_handle > &V, Cell_handle c = C[j]; for (int k=0; k<=dimension(); ++k) { std::size_t ik; - if(is_ascii(is)) + if(IO::is_ascii(is)) is >> ik; else read(is, ik); @@ -2598,7 +2598,7 @@ print_cells(std::ostream& os, const Unique_hash_map case 3: { std::size_t m = number_of_cells(); - if(is_ascii(os)) + if(IO::is_ascii(os)) os << m << std::endl; else write(os, m); @@ -2608,7 +2608,7 @@ print_cells(std::ostream& os, const Unique_hash_map for(it = cells_begin(); it != cells_end(); ++it) { C[it] = i++; for(int j = 0; j < 4; j++){ - if(is_ascii(os)) { + if(IO::is_ascii(os)) { os << V[it->vertex(j)]; if ( j==3 ) os << '\n'; @@ -2624,7 +2624,7 @@ print_cells(std::ostream& os, const Unique_hash_map // write the neighbors for(it = cells_begin(); it != cells_end(); ++it) { for (int j = 0; j < 4; j++) { - if(is_ascii(os)){ + if(IO::is_ascii(os)){ os << C[it->neighbor(j)]; if(j==3) os << '\n'; @@ -2640,7 +2640,7 @@ print_cells(std::ostream& os, const Unique_hash_map case 2: { size_type m = number_of_facets(); - if(is_ascii(os)) + if(IO::is_ascii(os)) os << m << '\n'; else write(os, m); @@ -2650,7 +2650,7 @@ print_cells(std::ostream& os, const Unique_hash_map for(it = facets_begin(); it != facets_end(); ++it) { C[(*it).first] = i++; for(int j = 0; j < 3; j++){ - if(is_ascii(os)) { + if(IO::is_ascii(os)) { os << V[(*it).first->vertex(j)]; if ( j==2 ) os << '\n'; @@ -2667,7 +2667,7 @@ print_cells(std::ostream& os, const Unique_hash_map // write the neighbors for(it = facets_begin(); it != facets_end(); ++it) { for (int j = 0; j < 3; j++) { - if(is_ascii(os)){ + if(IO::is_ascii(os)){ os << C[(*it).first->neighbor(j)]; if(j==2) os << '\n'; @@ -2684,7 +2684,7 @@ print_cells(std::ostream& os, const Unique_hash_map case 1: { size_type m = number_of_edges(); - if(is_ascii(os)) + if(IO::is_ascii(os)) os << m << '\n'; else write(os, m); @@ -2693,7 +2693,7 @@ print_cells(std::ostream& os, const Unique_hash_map for(it = edges_begin(); it != edges_end(); ++it) { C[(*it).first] = i++; for(int j = 0; j < 2; j++){ - if(is_ascii(os)) { + if(IO::is_ascii(os)) { os << V[(*it).first->vertex(j)]; if ( j==1 ) os << '\n'; @@ -2710,7 +2710,7 @@ print_cells(std::ostream& os, const Unique_hash_map // write the neighbors for(it = edges_begin(); it != edges_end(); ++it) { for (int j = 0; j < 2; j++) { - if(is_ascii(os)){ + if(IO::is_ascii(os)){ os << C[(*it).first->neighbor(j)]; if(j==1) os << '\n'; diff --git a/Tetrahedral_remeshing/include/CGAL/Tetrahedral_remeshing/tetrahedral_remeshing_io.h b/Tetrahedral_remeshing/include/CGAL/Tetrahedral_remeshing/tetrahedral_remeshing_io.h index d09a0f42edf..3d3b7c142f1 100644 --- a/Tetrahedral_remeshing/include/CGAL/Tetrahedral_remeshing/tetrahedral_remeshing_io.h +++ b/Tetrahedral_remeshing/include/CGAL/Tetrahedral_remeshing/tetrahedral_remeshing_io.h @@ -35,8 +35,8 @@ bool load_triangulation(std::istream& is, T3& t3) return false; std::getline(is, s); - if (binary) CGAL::set_binary_mode(is); - else CGAL::set_ascii_mode(is); + if (binary) CGAL::IO::set_binary_mode(is); + else CGAL::IO::set_ascii_mode(is); is >> t3; return bool(is); } @@ -45,7 +45,7 @@ template bool save_binary_triangulation(std::ostream& os, const T3& t3) { os << "binary CGAL c3t3\n"; - CGAL::set_binary_mode(os); + CGAL::IO::set_binary_mode(os); return !!(os << t3); } @@ -53,7 +53,7 @@ template bool save_ascii_triangulation(std::ostream& os, const T3& t3) { os << "CGAL c3t3\n"; - CGAL::set_ascii_mode(os); + CGAL::IO::set_ascii_mode(os); return !!(os << t3); } diff --git a/Triangulation/include/CGAL/Triangulation.h b/Triangulation/include/CGAL/Triangulation.h index d59eba33c8c..dc3f062c16f 100644 --- a/Triangulation/include/CGAL/Triangulation.h +++ b/Triangulation/include/CGAL/Triangulation.h @@ -1336,7 +1336,7 @@ operator>>(std::istream & is, Triangulation & tr) // read current dimension and number of vertices size_t n; int cd; - if( is_ascii(is) ) + if( IO::is_ascii(is) ) is >> cd >> n; else { @@ -1388,7 +1388,7 @@ operator<<(std::ostream & os, const Triangulation & tr) // outputs dimensions and number of vertices size_t n = tr.number_of_vertices(); - if( is_ascii(os) ) + if( IO::is_ascii(os) ) os << tr.current_dimension() << std::endl << n << std::endl; else { @@ -1405,7 +1405,7 @@ operator<<(std::ostream & os, const Triangulation & tr) // infinite vertex has index 0 (among all the vertices) index_of_vertex[tr.infinite_vertex()] = i++; - if(is_ascii(os)) + if(IO::is_ascii(os)) os << *tr.infinite_vertex() <<"\n"; else write(os, *tr.infinite_vertex()); @@ -1414,7 +1414,7 @@ operator<<(std::ostream & os, const Triangulation & tr) { if( tr.is_infinite(it) ) continue; - if(is_ascii(os)) + if(IO::is_ascii(os)) os << *it <<"\n"; // write the vertex else write(os, *it); diff --git a/Triangulation/include/CGAL/Triangulation_data_structure.h b/Triangulation/include/CGAL/Triangulation_data_structure.h index 1a43794f47a..7dd775a42cf 100644 --- a/Triangulation/include/CGAL/Triangulation_data_structure.h +++ b/Triangulation/include/CGAL/Triangulation_data_structure.h @@ -1342,7 +1342,7 @@ Triangulation_data_structure std::size_t m; // number of full_cells int index; const int cd = current_dimension(); - if( is_ascii(is) ) + if( IO::is_ascii(is) ) is >> m; else read(is, m, io_Read_write()); @@ -1359,7 +1359,7 @@ Triangulation_data_structure full_cells.push_back(s); for( int j = 0; j <= cd; ++j ) { - if( is_ascii(is) ) + if( IO::is_ascii(is) ) is >> index; else read(is, index); @@ -1372,7 +1372,7 @@ Triangulation_data_structure // read the neighbors of each full_cell i = 0; - if( is_ascii(is) ) + if( IO::is_ascii(is) ) while( i < m ) { for( int j = 0; j <= cd; ++j ) @@ -1423,7 +1423,7 @@ Triangulation_data_structure std::size_t m = number_of_full_cells(); - if( is_ascii(os) ) + if( IO::is_ascii(os) ) os << std::endl << m; else write(os, m, io_Read_write()); @@ -1434,11 +1434,11 @@ Triangulation_data_structure for( Full_cell_const_iterator it = full_cells_begin(); it != full_cells_end(); ++it ) { index_of_full_cell[it] = i++; - if( is_ascii(os) ) + if( IO::is_ascii(os) ) os << std::endl; for( int j = 0; j <= cur_dim; ++j ) { - if( is_ascii(os) ) + if( IO::is_ascii(os) ) os << ' ' << index_of_vertex[it->vertex(j)]; else write(os, index_of_vertex[it->vertex(j)]); @@ -1450,7 +1450,7 @@ Triangulation_data_structure CGAL_assertion( (std::size_t) i == m ); // write the neighbors of each full_cell - if( is_ascii(os) ) + if( IO::is_ascii(os) ) for( Full_cell_const_iterator it = full_cells_begin(); it != full_cells_end(); ++it ) { os << std::endl; @@ -1489,7 +1489,7 @@ operator>>(std::istream & is, Triangulation_data_structure & tr) // read current dimension and number of vertices std::size_t n; int cd; - if( is_ascii(is) ) + if( IO::is_ascii(is) ) is >> cd >> n; else { @@ -1539,7 +1539,7 @@ operator<<(std::ostream & os, const Triangulation_data_structure // outputs dimension and number of vertices std::size_t n = tr.number_of_vertices(); - if( is_ascii(os) ) + if( IO::is_ascii(os) ) os << tr.current_dimension() << std::endl << n; else { @@ -1556,7 +1556,7 @@ operator<<(std::ostream & os, const Triangulation_data_structure for( Vertex_iterator it = tr.vertices_begin(); it != tr.vertices_end(); ++it, ++i ) { os << *it; // write the vertex - if (is_ascii(os)) + if (IO::is_ascii(os)) os << std::endl; index_of_vertex[it] = i; } diff --git a/Triangulation/include/CGAL/Triangulation_ds_full_cell.h b/Triangulation/include/CGAL/Triangulation_ds_full_cell.h index 83b48a441d5..cf897825b6e 100644 --- a/Triangulation/include/CGAL/Triangulation_ds_full_cell.h +++ b/Triangulation/include/CGAL/Triangulation_ds_full_cell.h @@ -259,7 +259,7 @@ template < typename TDS, typename SSP > std::ostream & operator<<(std::ostream & O, const Triangulation_ds_full_cell &) /* Concept */ { - /*if( is_ascii(O) ) + /*if( IO::is_ascii(O) ) { // os << '\n'; } @@ -271,7 +271,7 @@ template < typename TDS, typename SSP > std::istream & operator>>(std::istream & I, Triangulation_ds_full_cell &) /* Concept */ { - /*if( is_ascii(I) ) + /*if( IO::is_ascii(I) ) {} else {}*/ return I; diff --git a/Triangulation/include/CGAL/Triangulation_ds_vertex.h b/Triangulation/include/CGAL/Triangulation_ds_vertex.h index aaa1e2067fc..3ed1ef48786 100644 --- a/Triangulation/include/CGAL/Triangulation_ds_vertex.h +++ b/Triangulation/include/CGAL/Triangulation_ds_vertex.h @@ -112,7 +112,7 @@ template < class TDS > std::istream & operator>>(std::istream & is, Triangulation_ds_vertex &) /* Concept */ { - /*if( is_ascii(is) ) + /*if( IO::is_ascii(is) ) {} else {}*/ return is; @@ -122,7 +122,7 @@ template< class TDS > std::ostream & operator<<(std::ostream & os, const Triangulation_ds_vertex &) /* Concept */ { - /*if( is_ascii(os) ) + /*if( IO::is_ascii(os) ) { os << '\n'; } diff --git a/Triangulation/include/CGAL/Triangulation_full_cell.h b/Triangulation/include/CGAL/Triangulation_full_cell.h index b806ab6baf4..18792172ce3 100644 --- a/Triangulation/include/CGAL/Triangulation_full_cell.h +++ b/Triangulation/include/CGAL/Triangulation_full_cell.h @@ -119,7 +119,7 @@ template < typename TDS, typename Data, typename SSP > std::ostream & operator<<(std::ostream & O, const Triangulation_full_cell & s) { - /*if( is_ascii(O) ) + /*if( IO::is_ascii(O) ) { // os << '\n'; } @@ -132,7 +132,7 @@ template < typename TDS, typename Data, typename SSP > std::istream & operator>>(std::istream & I, Triangulation_full_cell & s) { - /*if( is_ascii(I) ) + /*if( IO::is_ascii(I) ) {} else {}*/ I >> s.data(); diff --git a/Triangulation/test/Triangulation/test_tds.cpp b/Triangulation/test/Triangulation/test_tds.cpp index 30774f94e5b..e1d4ceeb54b 100644 --- a/Triangulation/test/Triangulation/test_tds.cpp +++ b/Triangulation/test/Triangulation/test_tds.cpp @@ -95,13 +95,13 @@ void test(const int d, const string & type) // TEST File I/O std::ofstream fo((string("output-tds-")+type).c_str()); if( d % 2 ) - CGAL::set_binary_mode(fo); + CGAL::IO::set_binary_mode(fo); fo << tds; fo.close(); std::ifstream fi((string("output-tds-")+type).c_str()); if( d % 2 ) - CGAL::set_binary_mode(fi); + CGAL::IO::set_binary_mode(fi); TDS input_tds(d); fi >> input_tds; fi.close(); diff --git a/Triangulation_2/include/CGAL/Constrained_triangulation_2.h b/Triangulation_2/include/CGAL/Constrained_triangulation_2.h index 32317818174..00490b338a8 100644 --- a/Triangulation_2/include/CGAL/Constrained_triangulation_2.h +++ b/Triangulation_2/include/CGAL/Constrained_triangulation_2.h @@ -1544,7 +1544,7 @@ file_output(std::ostream& os) const for(int j = 0; j < 3; ++j){ if (ib->is_constrained(j)) { os << "C";} else { os << "N";} - if(is_ascii(os)){ + if(IO::is_ascii(os)){ if(j==2) { os << "\n"; } else { diff --git a/Triangulation_2/test/Triangulation_2/include/CGAL/_test_cls_constrained_triangulation_2.h b/Triangulation_2/test/Triangulation_2/include/CGAL/_test_cls_constrained_triangulation_2.h index fb62d70e19b..7aab8e70ff0 100644 --- a/Triangulation_2/test/Triangulation_2/include/CGAL/_test_cls_constrained_triangulation_2.h +++ b/Triangulation_2/test/Triangulation_2/include/CGAL/_test_cls_constrained_triangulation_2.h @@ -223,52 +223,52 @@ _test_cls_constrained_triangulation(const Triang &) std::cout << "output to a file" << std::endl; std::ofstream of0_1("T01.triangulation", std::ios::out); - CGAL::set_ascii_mode(of0_1); + CGAL::IO::set_ascii_mode(of0_1); of0_1 << T0_1; of0_1.close(); std::ofstream of0_2("T02.triangulation"); - CGAL::set_ascii_mode(of0_2); + CGAL::IO::set_ascii_mode(of0_2); of0_2 << T0_2; of0_2.close(); std::ofstream of1_1("T11.triangulation"); - CGAL::set_ascii_mode(of1_1); + CGAL::IO::set_ascii_mode(of1_1); of1_1 << T1_1; of1_1.close(); std::ofstream of1_2("T12.triangulation"); - CGAL::set_ascii_mode(of1_2); + CGAL::IO::set_ascii_mode(of1_2); of1_2 << T1_2; of1_2.close(); std::ofstream of2_1("T21.triangulation"); - CGAL::set_ascii_mode(of2_1); + CGAL::IO::set_ascii_mode(of2_1); of2_1 << T2_1; of2_1.close(); std::ofstream of2_2("T22.triangulation"); - CGAL::set_ascii_mode(of2_2); + CGAL::IO::set_ascii_mode(of2_2); of2_2 << T2_2; of2_2.close(); std::cout << "input from a file" << std::endl; - std::ifstream if0_1("T01.triangulation"); CGAL::set_ascii_mode(if0_1); + std::ifstream if0_1("T01.triangulation"); CGAL::IO::set_ascii_mode(if0_1); Triang T0_1_copy; if0_1 >> T0_1_copy; - std::ifstream if0_2("T02.triangulation"); CGAL::set_ascii_mode(if0_2); + std::ifstream if0_2("T02.triangulation"); CGAL::IO::set_ascii_mode(if0_2); Triang T0_2_copy; if0_2 >> T0_2_copy; - std::ifstream if1_1("T11.triangulation"); CGAL::set_ascii_mode(if1_1); + std::ifstream if1_1("T11.triangulation"); CGAL::IO::set_ascii_mode(if1_1); Triang T1_1_copy; if1_1 >> T1_1_copy; - std::ifstream if1_2("T12.triangulation"); CGAL::set_ascii_mode(if1_2); + std::ifstream if1_2("T12.triangulation"); CGAL::IO::set_ascii_mode(if1_2); Triang T1_2_copy; if1_2 >> T1_2_copy; - std::ifstream if2_1("T21.triangulation"); CGAL::set_ascii_mode(if2_1); + std::ifstream if2_1("T21.triangulation"); CGAL::IO::set_ascii_mode(if2_1); Triang T2_1_copy; if2_1 >> T2_1_copy; - std::ifstream if2_2("T22.triangulation"); CGAL::set_ascii_mode(if2_2); + std::ifstream if2_2("T22.triangulation"); CGAL::IO::set_ascii_mode(if2_2); Triang T2_2_copy; if2_2 >> T2_2_copy; // test copy of constrained Triangulation Triang T2_4(T2_2); std::ofstream of2_2_bis("T22.triangulation"); - CGAL::set_ascii_mode(of2_2_bis); + CGAL::IO::set_ascii_mode(of2_2_bis); of2_2_bis << T2_4; of2_2_bis.close(); All_faces_iterator fit2 = T2_2.all_faces_begin(); All_faces_iterator fit2_bis = T2_4.all_faces_begin(); diff --git a/Triangulation_2/test/Triangulation_2/include/CGAL/_test_cls_regular_hierarchy_2.h b/Triangulation_2/test/Triangulation_2/include/CGAL/_test_cls_regular_hierarchy_2.h index 3a60570bd00..16c98935104 100644 --- a/Triangulation_2/test/Triangulation_2/include/CGAL/_test_cls_regular_hierarchy_2.h +++ b/Triangulation_2/test/Triangulation_2/include/CGAL/_test_cls_regular_hierarchy_2.h @@ -20,7 +20,7 @@ _test_cls_regular_hierarchy_2( const Rh & ) Regular_hierarchy rh; CGAL::Random rand; - // std::ofstream output("data"); CGAL::set_binary_mode(output); + // std::ofstream output("data"); CGAL::IO::set_binary_mode(output); for(int i = 0; i < nn ; i++){ Bare_point p( rand.get_double(), rand.get_double()); Weighted_point wp(p, (rand.get_double())*100); @@ -32,7 +32,7 @@ _test_cls_regular_hierarchy_2( const Rh & ) std::cerr << std::endl; rh.is_valid(true); -// std::ifstream input("data"); CGAL::set_binary_mode(input); +// std::ifstream input("data"); CGAL::IO::set_binary_mode(input); // Weighted_point wp; // int inr = 0; // while(input) { diff --git a/Triangulation_2/test/Triangulation_2/include/CGAL/_test_cls_regular_triangulation_2.h b/Triangulation_2/test/Triangulation_2/include/CGAL/_test_cls_regular_triangulation_2.h index e189e4b8cb8..26c097e2f91 100644 --- a/Triangulation_2/test/Triangulation_2/include/CGAL/_test_cls_regular_triangulation_2.h +++ b/Triangulation_2/test/Triangulation_2/include/CGAL/_test_cls_regular_triangulation_2.h @@ -477,7 +477,7 @@ _test_cls_regular_triangulation_2( const Triangulation & ) // tr.clear(); // Cls tr; // Weighted_point wp; -// std::ifstream input("data"); CGAL::set_ascii_mode(input); +// std::ifstream input("data"); CGAL::IO::set_ascii_mode(input); // int in = 0; // while(input){ // in = in+1; @@ -750,22 +750,22 @@ _test_cls_regular_triangulation_2( const Triangulation & ) // so they do not input output hidden vertices std::cout << " output to a file" << std::endl; std::ofstream of1_5("T15.triangulation"); - CGAL::set_ascii_mode(of1_5); + CGAL::IO::set_ascii_mode(of1_5); of1_5 << T1_5; of1_5.close(); std::ofstream of2_3("T23.triangulation"); - CGAL::set_ascii_mode(of2_3); + CGAL::IO::set_ascii_mode(of2_3); of2_3 << T2_3; of2_3.close(); // std::cout << " input from a file" << std::endl; -// std::ifstream if1_5("T15.triangulation"); CGAL::set_ascii_mode(if1_5); +// std::ifstream if1_5("T15.triangulation"); CGAL::IO::set_ascii_mode(if1_5); // Cls T1_5_copy; if1_5 >> T1_5_copy; // assert( T1_5_copy.is_valid(verbose) && // T1_5_copy.number_of_vertices() == // T1_5.number_of_vertices() - T1_5.number_of_hidden_vertices()); -// std::ifstream if2_3("T23.triangulation"); CGAL::set_ascii_mode(if2_3); +// std::ifstream if2_3("T23.triangulation"); CGAL::IO::set_ascii_mode(if2_3); // Cls T2_3_copy; if2_3 >> T2_3_copy; // assert( T2_3_copy.is_valid(verbose) && // T2_3_copy.number_of_vertices() == diff --git a/Triangulation_2/test/Triangulation_2/include/CGAL/_test_cls_triangulation_2.h b/Triangulation_2/test/Triangulation_2/include/CGAL/_test_cls_triangulation_2.h index b14c998d5a9..c8c982b38bc 100644 --- a/Triangulation_2/test/Triangulation_2/include/CGAL/_test_cls_triangulation_2.h +++ b/Triangulation_2/test/Triangulation_2/include/CGAL/_test_cls_triangulation_2.h @@ -775,67 +775,67 @@ _test_cls_triangulation_2( const Triangul & ) /******** I/O *******/ std::cout << " output to a file" << std::endl; std::ofstream of0_0("T00.triangulation", std::ios::out); - CGAL::set_ascii_mode(of0_0); + CGAL::IO::set_ascii_mode(of0_0); of0_0 << T0_0; of0_0.close(); std::ofstream of0_1("T01.triangulation"); - CGAL::set_ascii_mode(of0_1); + CGAL::IO::set_ascii_mode(of0_1); of0_1 << T0_1; of0_1.close(); std::ofstream of1_2("T12.triangulation"); - CGAL::set_ascii_mode(of1_2); + CGAL::IO::set_ascii_mode(of1_2); of1_2 << T1_2; of1_2.close(); std::ofstream of1_5("T15.triangulation"); - CGAL::set_ascii_mode(of1_5); + CGAL::IO::set_ascii_mode(of1_5); of1_5 << T1_5; of1_5.close(); std::ofstream of1_6("T16.triangulation"); - CGAL::set_ascii_mode(of1_6); + CGAL::IO::set_ascii_mode(of1_6); of1_6 << T1_6; of1_6.close(); std::ofstream of2_1("T21.triangulation"); - CGAL::set_ascii_mode(of2_1); + CGAL::IO::set_ascii_mode(of2_1); of2_1 << T2_1; of2_1.close(); std::ofstream of2_3("T23.triangulation"); - CGAL::set_ascii_mode(of2_3); + CGAL::IO::set_ascii_mode(of2_3); of2_3 << T2_3; of2_3.close(); std::ofstream of2_5("T25.triangulation"); - CGAL::set_ascii_mode(of2_5); + CGAL::IO::set_ascii_mode(of2_5); of2_5 << T2_5; of2_5.close(); std::ofstream of2_6("T26.triangulation"); - CGAL::set_ascii_mode(of2_6); + CGAL::IO::set_ascii_mode(of2_6); of2_6 << T2_6; of2_6.close(); std::cout << " input from a file" << std::endl; - std::ifstream if0_0("T00.triangulation"); CGAL::set_ascii_mode(if0_0); + std::ifstream if0_0("T00.triangulation"); CGAL::IO::set_ascii_mode(if0_0); Triangul T0_0_copy; if0_0 >> T0_0_copy; assert( T0_0_copy.is_valid() && T0_0_copy.number_of_vertices() == T0_0.number_of_vertices() ); - std::ifstream if0_1("T01.triangulation"); CGAL::set_ascii_mode(if0_1); + std::ifstream if0_1("T01.triangulation"); CGAL::IO::set_ascii_mode(if0_1); Triangul T0_1_copy; if0_1 >> T0_1_copy; assert( T0_1_copy.is_valid() && T0_1_copy.number_of_vertices() == T0_1.number_of_vertices() ); - std::ifstream if1_2("T12.triangulation"); CGAL::set_ascii_mode(if1_2); + std::ifstream if1_2("T12.triangulation"); CGAL::IO::set_ascii_mode(if1_2); Triangul T1_2_copy; if1_2 >> T1_2_copy; assert( T1_2_copy.is_valid() && T1_2_copy.number_of_vertices() == T1_2.number_of_vertices() ); - std::ifstream if1_5("T15.triangulation"); CGAL::set_ascii_mode(if1_5); + std::ifstream if1_5("T15.triangulation"); CGAL::IO::set_ascii_mode(if1_5); Triangul T1_5_copy; if1_5 >> T1_5_copy; assert( T1_5_copy.is_valid() && T1_5_copy.number_of_vertices() == T1_5.number_of_vertices() ); - std::ifstream if1_6("T16.triangulation"); CGAL::set_ascii_mode(if1_6); + std::ifstream if1_6("T16.triangulation"); CGAL::IO::set_ascii_mode(if1_6); Triangul T1_6_copy; if1_6 >> T1_6_copy; assert( T1_6_copy.is_valid() && T1_6_copy.number_of_vertices() == T1_6.number_of_vertices() ); - std::ifstream if2_1("T21.triangulation"); CGAL::set_ascii_mode(if2_1); + std::ifstream if2_1("T21.triangulation"); CGAL::IO::set_ascii_mode(if2_1); Triangul T2_1_copy; if2_1 >> T2_1_copy; assert( T2_1_copy.is_valid() && T2_1_copy.number_of_vertices() == T2_1.number_of_vertices() ); - std::ifstream if2_3("T23.triangulation"); CGAL::set_ascii_mode(if2_3); + std::ifstream if2_3("T23.triangulation"); CGAL::IO::set_ascii_mode(if2_3); Triangul T2_3_copy; if2_3 >> T2_3_copy; assert( T2_3_copy.is_valid() && T2_3_copy.number_of_vertices() == T2_3.number_of_vertices() ); - std::ifstream if2_5("T25.triangulation"); CGAL::set_ascii_mode(if2_5); + std::ifstream if2_5("T25.triangulation"); CGAL::IO::set_ascii_mode(if2_5); Triangul T2_5_copy; if2_5 >> T2_5_copy; assert( T2_5_copy.is_valid() && T2_5_copy.number_of_vertices() == T2_5.number_of_vertices() ); - std::ifstream if2_6("T26.triangulation"); CGAL::set_ascii_mode(if2_6); + std::ifstream if2_6("T26.triangulation"); CGAL::IO::set_ascii_mode(if2_6); Triangul T2_6_copy; if2_6 >> T2_6_copy; assert( T2_6_copy.is_valid() && T2_6_copy.number_of_vertices() == T2_6.number_of_vertices() ); diff --git a/Triangulation_2/test/Triangulation_2/include/CGAL/_test_cls_triangulation_short_2.h b/Triangulation_2/test/Triangulation_2/include/CGAL/_test_cls_triangulation_short_2.h index bb5bbd8a603..61fbb042389 100644 --- a/Triangulation_2/test/Triangulation_2/include/CGAL/_test_cls_triangulation_short_2.h +++ b/Triangulation_2/test/Triangulation_2/include/CGAL/_test_cls_triangulation_short_2.h @@ -477,21 +477,21 @@ _test_cls_triangulation_short_2( const Triangul &) /******** I/O *******/ std::cout << " output to a file" << std::endl; std::ofstream of1_5("T15.triangulation"); - CGAL::set_ascii_mode(of1_5); + CGAL::IO::set_ascii_mode(of1_5); of1_5 << T1_5; of1_5.close(); std::ofstream of2_3("T23.triangulation"); - CGAL::set_ascii_mode(of2_3); + CGAL::IO::set_ascii_mode(of2_3); of2_3 << T2_3; of2_3.close(); std::cout << " input from a file" << std::endl; - std::ifstream if1_5("T15.triangulation"); CGAL::set_ascii_mode(if1_5); + std::ifstream if1_5("T15.triangulation"); CGAL::IO::set_ascii_mode(if1_5); Triangul T1_5_copy; if1_5 >> T1_5_copy; assert( T1_5_copy.is_valid() && T1_5_copy.number_of_vertices() == T1_5.number_of_vertices() ); - std::ifstream if2_3("T23.triangulation"); CGAL::set_ascii_mode(if2_3); + std::ifstream if2_3("T23.triangulation"); CGAL::IO::set_ascii_mode(if2_3); Triangul T2_3_copy; if2_3 >> T2_3_copy; assert( T2_3_copy.is_valid() && T2_3_copy.number_of_vertices() == T2_3.number_of_vertices() ); diff --git a/Triangulation_3/include/CGAL/Triangulation_3.h b/Triangulation_3/include/CGAL/Triangulation_3.h index df69bf1f1b6..c59b5508a2f 100644 --- a/Triangulation_3/include/CGAL/Triangulation_3.h +++ b/Triangulation_3/include/CGAL/Triangulation_3.h @@ -2313,7 +2313,7 @@ public: std::size_t n; int d; - if(is_ascii(is)) + if(IO::is_ascii(is)) is >> d >> n; else { read(is, d); @@ -2375,7 +2375,7 @@ std::istream& operator>> (std::istream& is, Triangulation_3& tr) std::size_t n; int d; - if(is_ascii(is)) + if(IO::is_ascii(is)) { is >> d >> n; } @@ -2435,7 +2435,7 @@ std::ostream& operator<< (std::ostream& os, const Triangulation_3& // outputs dimension and number of vertices size_type n = tr.number_of_vertices(); - if(is_ascii(os)) + if(IO::is_ascii(os)) { os << tr.dimension() << std::endl << n << std::endl; } @@ -2464,7 +2464,7 @@ std::ostream& operator<< (std::ostream& os, const Triangulation_3& { os << *TV[i]; V[TV[i]] = i; - if(is_ascii(os)) + if(IO::is_ascii(os)) os << std::endl; } @@ -2482,7 +2482,7 @@ std::ostream& operator<< (std::ostream& os, const Triangulation_3& for(Cell_iterator it = tr.cells_begin(), end = tr.cells_end(); it != end; ++it) { os << *it; // other information - if(is_ascii(os)) + if(IO::is_ascii(os)) os << std::endl; } break; @@ -2492,7 +2492,7 @@ std::ostream& operator<< (std::ostream& os, const Triangulation_3& for(Facet_iterator it = tr.facets_begin(), end = tr.facets_end(); it != end; ++it) { os << *((*it).first); // other information - if(is_ascii(os)) + if(IO::is_ascii(os)) os << std::endl; } break; @@ -2502,7 +2502,7 @@ std::ostream& operator<< (std::ostream& os, const Triangulation_3& for(Edge_iterator it = tr.edges_begin(), end = tr.edges_end(); it != end; ++it) { os << *((*it).first); // other information - if(is_ascii(os)) + if(IO::is_ascii(os)) os << std::endl; } break; diff --git a/Triangulation_3/test/Triangulation_3/include/CGAL/_test_cls_triangulation_3.h b/Triangulation_3/test/Triangulation_3/include/CGAL/_test_cls_triangulation_3.h index a2afe749131..8c63a6cd09b 100644 --- a/Triangulation_3/test/Triangulation_3/include/CGAL/_test_cls_triangulation_3.h +++ b/Triangulation_3/test/Triangulation_3/include/CGAL/_test_cls_triangulation_3.h @@ -63,11 +63,11 @@ _test_cls_triangulation_3_input_output(const Triangulation & T, std::cout << " I/O (binary)" << std::endl; { std::ofstream oFileBin(filename2, std::ios::out|std::ios::binary); - CGAL::set_binary_mode(oFileBin); + CGAL::IO::set_binary_mode(oFileBin); oFileBin << T; } std::ifstream iFileBin(filename2, std::ios::in|std::ios::binary); - CGAL::set_binary_mode(iFileBin); + CGAL::IO::set_binary_mode(iFileBin); Triangulation Tfromfile_binary; iFileBin >> Tfromfile_binary; assert(Tfromfile_binary.is_valid()); diff --git a/Union_find/test/Union_find/include/CGAL/test_macros.h b/Union_find/test/Union_find/include/CGAL/test_macros.h index 7ba8334b2f1..369323eab84 100644 --- a/Union_find/test/Union_find/include/CGAL/test_macros.h +++ b/Union_find/test/Union_find/include/CGAL/test_macros.h @@ -14,7 +14,7 @@ else {} #define CGAL_IO_TEST(datao,datai,iomode) { \ std::stringstream S; \ - CGAL::set_mode(S,iomode); \ + CGAL::IO::set_mode(S,iomode); \ S << datao; \ if ( iomode != CGAL::IO::BINARY) \ S << '\n'; \ From 28a46c90a62ca8296fce06a896c0556b906a126f Mon Sep 17 00:00:00 2001 From: Laurent Rineau Date: Wed, 5 May 2021 15:31:13 +0200 Subject: [PATCH 127/171] Fix write_vtu in ASCII --- Mesh_2/include/CGAL/IO/write_vtu.h | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/Mesh_2/include/CGAL/IO/write_vtu.h b/Mesh_2/include/CGAL/IO/write_vtu.h index e4b80aace09..0689edddd17 100644 --- a/Mesh_2/include/CGAL/IO/write_vtu.h +++ b/Mesh_2/include/CGAL/IO/write_vtu.h @@ -74,7 +74,7 @@ write_cells_tag_2(std::ostream& os, tr.constrained_edges_end())) * sizeof(std::size_t); } else { - os << "\">\n"; + os << ">\n"; for(typename CDT::Finite_faces_iterator fit = tr.finite_faces_begin(), end = tr.finite_faces_end(); @@ -102,7 +102,7 @@ write_cells_tag_2(std::ostream& os, // 1 offset (size_t) per cell + length of the encoded data (size_t) } else { - os << "\">\n"; + os << ">\n"; std::size_t cells_offset = 0; for(typename CDT::Finite_faces_iterator fit = tr.finite_faces_begin() ; @@ -131,7 +131,7 @@ write_cells_tag_2(std::ostream& os, // 1 unsigned char per cell + length of the encoded data (size_t) } else { - os << "\">\n"; + os << ">\n"; for(typename CDT::Finite_faces_iterator fit = tr.finite_faces_begin() ; fit != tr.finite_faces_end() ; From 942d461e4c364364a93be5ed55e156d846e7760a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mael=20Rouxel-Labb=C3=A9?= Date: Wed, 5 May 2021 16:59:22 +0200 Subject: [PATCH 128/171] Pass a copy of the GT to the VD2 adaptation traits (and not the DTOS) That's because the previous formulation is awkward: - VD2 that takes a copy (or a swap) of DT_0 yielding a DT_1; - adaptation traits requiring a const& to a DT_0, which might then go out of scope. In theory, we want to have the triangulation to get the nice "dt.point(v)", but it's too heavy to copy the full triangulation just for the adaptations traits, so just copy the GT and use old school v->point(). --- ...angulation_on_sphere_adaptation_traits_2.h | 23 +++++++++---------- .../Voronoi_diagram_2/Construct_dual_points.h | 14 +++++------ .../CGAL/Voronoi_diagram_2/Site_accessors.h | 23 ------------------- 3 files changed, 18 insertions(+), 42 deletions(-) diff --git a/Voronoi_diagram_2/include/CGAL/Delaunay_triangulation_on_sphere_adaptation_traits_2.h b/Voronoi_diagram_2/include/CGAL/Delaunay_triangulation_on_sphere_adaptation_traits_2.h index a2733336e5b..3a4023d7455 100644 --- a/Voronoi_diagram_2/include/CGAL/Delaunay_triangulation_on_sphere_adaptation_traits_2.h +++ b/Voronoi_diagram_2/include/CGAL/Delaunay_triangulation_on_sphere_adaptation_traits_2.h @@ -22,15 +22,17 @@ namespace CGAL { -template +template struct Delaunay_triangulation_on_sphere_adaptation_traits_2 { public: - typedef DTOS Delaunay_graph; - typedef typename Delaunay_graph::Geom_traits Geom_traits; + typedef DToS2 Delaunay_graph; + typedef typename DToS2::Geom_traits Geom_traits; + typedef typename Geom_traits::Point_on_sphere_2 Point_2; + typedef Point_2 Site_2; - typedef CGAL_VORONOI_DIAGRAM_2_INS::DToS2_Point_accessor Access_site_2; - typedef CGAL_VORONOI_DIAGRAM_2_INS::DToS2_Voronoi_point_2 Construct_Voronoi_point_2; + typedef CGAL_VORONOI_DIAGRAM_2_INS::Point_accessor Access_site_2; + typedef CGAL_VORONOI_DIAGRAM_2_INS::DToS2_Voronoi_point_2 Construct_Voronoi_point_2; typedef typename Delaunay_graph::Vertex_handle Delaunay_vertex_handle; typedef typename Delaunay_graph::Edge Delaunay_edge; @@ -39,22 +41,19 @@ public: typedef CGAL::Tag_false Has_nearest_site_2; typedef CGAL_VORONOI_DIAGRAM_2_INS::Null_functor Nearest_site_2; - Delaunay_triangulation_on_sphere_adaptation_traits_2(const DTOS& dtos) : dtos(dtos) { } + Delaunay_triangulation_on_sphere_adaptation_traits_2(const Geom_traits& gt) : gt(gt) { } Access_site_2 access_site_2_object() const - { return Access_site_2(dtos); } + { return Access_site_2(gt); } Construct_Voronoi_point_2 construct_Voronoi_point_2_object() const - { return Construct_Voronoi_point_2(dtos); } + { return Construct_Voronoi_point_2(gt); } Nearest_site_2 nearest_site_2_object() const { return Nearest_site_2(); } - typedef typename Geom_traits::Point_on_sphere_2 Point_2; - typedef Point_2 Site_2; - private: - const DTOS& dtos; + const Geom_traits gt; // intentional copy }; } //namespace CGAL diff --git a/Voronoi_diagram_2/include/CGAL/Voronoi_diagram_2/Construct_dual_points.h b/Voronoi_diagram_2/include/CGAL/Voronoi_diagram_2/Construct_dual_points.h index af54b688b8d..a0ff91ad5d5 100644 --- a/Voronoi_diagram_2/include/CGAL/Voronoi_diagram_2/Construct_dual_points.h +++ b/Voronoi_diagram_2/include/CGAL/Voronoi_diagram_2/Construct_dual_points.h @@ -77,27 +77,27 @@ public: //========================================================================= -template +template struct DToS2_Voronoi_point_2 { private: - typedef typename DTOS::Geom_traits Geom_traits; + typedef typename DToS2::Geom_traits Geom_traits; typedef typename Geom_traits::Point_on_sphere_2 Point_on_sphere_2; public: + typedef typename DToS2::Face_handle Face_handle; typedef Point_on_sphere_2 result_type; - typedef typename DTOS::Face_handle Face_handle; - DToS2_Voronoi_point_2(const DTOS& dtos) : dtos(dtos) { } + DToS2_Voronoi_point_2(const Geom_traits& gt) : gt(gt) { } result_type operator()(const Face_handle f) const { - return dtos.geom_traits().construct_circumcenter_on_sphere_2_object()( - dtos.point(f, 0), dtos.point(f, 1), dtos.point(f, 2)); + return gt.construct_circumcenter_on_sphere_2_object()( + f->vertex(0)->point(), f->vertex(1)->point(), f->vertex(2)->point()); } private: - const DTOS& dtos; + const Geom_traits& gt; }; //========================================================================= diff --git a/Voronoi_diagram_2/include/CGAL/Voronoi_diagram_2/Site_accessors.h b/Voronoi_diagram_2/include/CGAL/Voronoi_diagram_2/Site_accessors.h index e1d45d99a15..fdf92ffa573 100644 --- a/Voronoi_diagram_2/include/CGAL/Voronoi_diagram_2/Site_accessors.h +++ b/Voronoi_diagram_2/include/CGAL/Voronoi_diagram_2/Site_accessors.h @@ -71,29 +71,6 @@ struct Point_accessor //========================================================================= -template -struct DToS2_Point_accessor -{ -private: - typedef typename DTOS::Geom_traits::Point_on_sphere_2 Point_on_sphere_2; - -public: - typedef const Point_on_sphere_2& result_type; - typedef typename DTOS::Vertex_handle Vertex_handle; - - DToS2_Point_accessor(const DTOS& dtos) : dtos(dtos) { } - - result_type operator()(const Vertex_handle v) const - { - return dtos.point(v); - } - -private: - const DTOS& dtos; -}; - -//========================================================================= - } // namespace Internal } // namespace VoronoiDiagram_2 } // namespace CGAL From 43115e43452bfedada339f64b62ecec5f7348547 Mon Sep 17 00:00:00 2001 From: Giles Bathgate Date: Wed, 5 May 2021 21:57:47 +0100 Subject: [PATCH 129/171] Use has_on_after_intersection in SNC_constructor --- Nef_3/include/CGAL/Nef_3/SNC_constructor.h | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Nef_3/include/CGAL/Nef_3/SNC_constructor.h b/Nef_3/include/CGAL/Nef_3/SNC_constructor.h index e5bf90033ff..23041cff316 100644 --- a/Nef_3/include/CGAL/Nef_3/SNC_constructor.h +++ b/Nef_3/include/CGAL/Nef_3/SNC_constructor.h @@ -831,7 +831,7 @@ public: ec->circle()); Sphere_point sp(intersection(c, seg.sphere_circle())); CGAL_NEF_TRACEN(seg <<" has_on " << sp); - if(!seg.has_on(sp)) + if(!seg.has_on_after_intersection(sp)) sp = sp.antipode(); sv = D.new_svertex(sp); CGAL_NEF_TRACEN("new svertex 3 " << normalized(sp)); @@ -2063,7 +2063,7 @@ class SNC_constructor ec->circle()); Sphere_point sp(intersection(c, seg.sphere_circle())); CGAL_NEF_TRACEN(seg <<" has_on " << sp); - if(!seg.has_on(sp)) + if(!seg.has_on_after_intersection(sp)) sp = sp.antipode(); sv = D.new_svertex(sp); CGAL_NEF_TRACEN("new svertex 3 " << normalized(sp)); From 625a335280a16495b6b01d8ea9ea71e43d2978bc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?S=C3=A9bastien=20Loriot?= Date: Thu, 6 May 2021 09:38:31 +0200 Subject: [PATCH 130/171] add missing IO:: --- Mesh_2/include/CGAL/IO/File_poly.h | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Mesh_2/include/CGAL/IO/File_poly.h b/Mesh_2/include/CGAL/IO/File_poly.h index 28743a9bc7d..9f3002c32f0 100644 --- a/Mesh_2/include/CGAL/IO/File_poly.h +++ b/Mesh_2/include/CGAL/IO/File_poly.h @@ -161,8 +161,8 @@ write_triangle_poly_file(const CDT& t, std::ostream &f) } // namespace IO #ifndef CGAL_NO_DEPRECATED_CODE -using read_triangle_poly_file; -using write_triangle_poly_file; +using IO::read_triangle_poly_file; +using IO::write_triangle_poly_file; #endif } // end namespace CGAL From 0a13731eea25f000029f2a272d1620beecdef830 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?S=C3=A9bastien=20Loriot?= Date: Thu, 6 May 2021 10:27:12 +0200 Subject: [PATCH 131/171] prevent generic overload to be picked --- .../include/CGAL/IO/Polyhedron_OFF_iostream.h | 22 +++++++++++++++++++ 1 file changed, 22 insertions(+) diff --git a/Polyhedron/include/CGAL/IO/Polyhedron_OFF_iostream.h b/Polyhedron/include/CGAL/IO/Polyhedron_OFF_iostream.h index 70065dcee54..bb413897c51 100644 --- a/Polyhedron/include/CGAL/IO/Polyhedron_OFF_iostream.h +++ b/Polyhedron/include/CGAL/IO/Polyhedron_OFF_iostream.h @@ -99,6 +99,28 @@ bool read_OFF(std::istream& in, Polyhedron_3& P) return read_OFF(in, P, parameters::all_default()); } +template class HDS, + class Alloc, class CGAL_BGL_NP_TEMPLATE_PARAMETERS> +bool read_OFF(const std::string& fname, + Polyhedron_3& P, + const CGAL_BGL_NP_CLASS& np) +{ + std::ifstream in(fname); + return read_OFF(in, P, np); +} + +template class HDS, + class Alloc> +bool read_OFF(const std::string& fname, Polyhedron_3& P) +{ + std::ifstream in(fname); + return read_OFF(in, P, parameters::all_default()); +} + } // namespace IO template Date: Thu, 6 May 2021 10:53:58 +0200 Subject: [PATCH 132/171] Also Fix Surface_mesh --- .../include/CGAL/Surface_mesh/IO/OFF.h | 42 +++++++++++++++++++ 1 file changed, 42 insertions(+) diff --git a/Surface_mesh/include/CGAL/Surface_mesh/IO/OFF.h b/Surface_mesh/include/CGAL/Surface_mesh/IO/OFF.h index ea105a65cbc..d0984e8f1ba 100644 --- a/Surface_mesh/include/CGAL/Surface_mesh/IO/OFF.h +++ b/Surface_mesh/include/CGAL/Surface_mesh/IO/OFF.h @@ -345,6 +345,48 @@ bool read_OFF(std::istream& is, return res; } +template +bool read_OFF(std::istream& is, + Surface_mesh& sm) +{ + return read_OFF(is, sm, parameters::all_default()); +} +template +bool read_OFF(const char* fname, + Surface_mesh& sm, + const CGAL_BGL_NP_CLASS& np) +{ + std::ifstream in(fname); + return read_OFF(in, sm, np); +} + +template +bool read_OFF(const char* fname, + Surface_mesh& sm) +{ + return read_OFF(fname, sm, parameters::all_default()); +} + + +template +bool read_OFF(std::string& fname, + Surface_mesh& sm, + const CGAL_BGL_NP_CLASS& np) +{ + return read_OFF(fname.c_str(), sm, np); +} + +template +bool read_OFF(std::string& fname, + Surface_mesh& sm) +{ + return read_OFF(fname, sm, parameters::all_default()); +} + } // namespace IO #ifndef CGAL_NO_DEPRECATED_CODE From 1c384dce6be7e7c382e46ee45ad76a4100236bae Mon Sep 17 00:00:00 2001 From: Maxime Gimeno Date: Thu, 6 May 2021 11:20:06 +0200 Subject: [PATCH 133/171] Add another pair of dll names to the gmp_and_mpfr_dll test --- Installation/test/Installation/test_gmp_mpfr_dll.cpp | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/Installation/test/Installation/test_gmp_mpfr_dll.cpp b/Installation/test/Installation/test_gmp_mpfr_dll.cpp index 89f7684d370..7a18c9df4b5 100644 --- a/Installation/test/Installation/test_gmp_mpfr_dll.cpp +++ b/Installation/test/Installation/test_gmp_mpfr_dll.cpp @@ -7,6 +7,8 @@ int main() { #define GMP_SONAME "libgmp-10" #define MPFR_SONAME "libmpfr-4" +#define GMP_SONAME_BACKUP"gmp" +#define MPFR_SONAME_BACKUP "mpfr-6" #define GMP_MAJOR 5 #define MPFR_MAJOR 3 @@ -63,7 +65,9 @@ int main() { std::cout << "Hello MPFR version " << mpfr_get_version() << std::endl; int major, minor, patch, build; if(!get_version_info(GMP_SONAME, major, minor, patch, build)) { - return 1; + if(!get_version_info(GMP_SONAME_BACKUP, major, minor, patch, build)) { + return 1; + } } std::cout << "GMP version " @@ -74,7 +78,9 @@ int main() { assert(major==GMP_MAJOR); major = 0; if(!get_version_info(MPFR_SONAME, major, minor, patch, build)) { - return 1; + if(!get_version_info(MPFR_SONAME_BACKUP, major, minor, patch, build)) { + return 1; + } } std::cout << "MPFR version " << major << "." From 95036f79d2cd58f169187831bd667f48605dacbd Mon Sep 17 00:00:00 2001 From: Maxime Gimeno Date: Thu, 6 May 2021 11:20:06 +0200 Subject: [PATCH 134/171] Add another pair of dll names to the gmp_and_mpfr_dll test --- Installation/test/Installation/test_gmp_mpfr_dll.cpp | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/Installation/test/Installation/test_gmp_mpfr_dll.cpp b/Installation/test/Installation/test_gmp_mpfr_dll.cpp index 89f7684d370..7a18c9df4b5 100644 --- a/Installation/test/Installation/test_gmp_mpfr_dll.cpp +++ b/Installation/test/Installation/test_gmp_mpfr_dll.cpp @@ -7,6 +7,8 @@ int main() { #define GMP_SONAME "libgmp-10" #define MPFR_SONAME "libmpfr-4" +#define GMP_SONAME_BACKUP"gmp" +#define MPFR_SONAME_BACKUP "mpfr-6" #define GMP_MAJOR 5 #define MPFR_MAJOR 3 @@ -63,7 +65,9 @@ int main() { std::cout << "Hello MPFR version " << mpfr_get_version() << std::endl; int major, minor, patch, build; if(!get_version_info(GMP_SONAME, major, minor, patch, build)) { - return 1; + if(!get_version_info(GMP_SONAME_BACKUP, major, minor, patch, build)) { + return 1; + } } std::cout << "GMP version " @@ -74,7 +78,9 @@ int main() { assert(major==GMP_MAJOR); major = 0; if(!get_version_info(MPFR_SONAME, major, minor, patch, build)) { - return 1; + if(!get_version_info(MPFR_SONAME_BACKUP, major, minor, patch, build)) { + return 1; + } } std::cout << "MPFR version " << major << "." From fb5c4aa5957af132f60fb708f5fa99ee43ce544b Mon Sep 17 00:00:00 2001 From: Maxime Gimeno Date: Thu, 6 May 2021 11:54:18 +0200 Subject: [PATCH 135/171] Fix test --- Installation/test/Installation/test_gmp_mpfr_dll.cpp | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/Installation/test/Installation/test_gmp_mpfr_dll.cpp b/Installation/test/Installation/test_gmp_mpfr_dll.cpp index 7a18c9df4b5..3f407098996 100644 --- a/Installation/test/Installation/test_gmp_mpfr_dll.cpp +++ b/Installation/test/Installation/test_gmp_mpfr_dll.cpp @@ -7,7 +7,7 @@ int main() { #define GMP_SONAME "libgmp-10" #define MPFR_SONAME "libmpfr-4" -#define GMP_SONAME_BACKUP"gmp" +#define GMP_SONAME_BACKUP "gmp" #define MPFR_SONAME_BACKUP "mpfr-6" #define GMP_MAJOR 5 #define MPFR_MAJOR 3 @@ -46,7 +46,7 @@ bool get_version_info(const LPCTSTR name, { delete[] versionInfo; std::cerr << name << " has no VersionInfo!\n"; - return false; + return true; } // we have version information UINT len = 0; @@ -75,7 +75,6 @@ int main() { << minor << "." << patch << "." << build << "\n"; - assert(major==GMP_MAJOR); major = 0; if(!get_version_info(MPFR_SONAME, major, minor, patch, build)) { if(!get_version_info(MPFR_SONAME_BACKUP, major, minor, patch, build)) { @@ -87,6 +86,5 @@ int main() { << minor << "." << patch << "." << build << "\n"; - assert(major==MPFR_MAJOR); } #endif From 23be65772d34d6980ed40dfcba04e03e901f60f3 Mon Sep 17 00:00:00 2001 From: Maxime Gimeno Date: Thu, 6 May 2021 12:32:45 +0200 Subject: [PATCH 136/171] remove useless overload --- .../include/CGAL/Surface_mesh/IO/OFF.h | 21 ++----------------- 1 file changed, 2 insertions(+), 19 deletions(-) diff --git a/Surface_mesh/include/CGAL/Surface_mesh/IO/OFF.h b/Surface_mesh/include/CGAL/Surface_mesh/IO/OFF.h index d0984e8f1ba..662ccbbf7a3 100644 --- a/Surface_mesh/include/CGAL/Surface_mesh/IO/OFF.h +++ b/Surface_mesh/include/CGAL/Surface_mesh/IO/OFF.h @@ -351,24 +351,6 @@ bool read_OFF(std::istream& is, { return read_OFF(is, sm, parameters::all_default()); } -template -bool read_OFF(const char* fname, - Surface_mesh& sm, - const CGAL_BGL_NP_CLASS& np) -{ - std::ifstream in(fname); - return read_OFF(in, sm, np); -} - -template -bool read_OFF(const char* fname, - Surface_mesh& sm) -{ - return read_OFF(fname, sm, parameters::all_default()); -} - template @@ -376,7 +358,8 @@ bool read_OFF(std::string& fname, Surface_mesh& sm, const CGAL_BGL_NP_CLASS& np) { - return read_OFF(fname.c_str(), sm, np); + std::ifstream in(fname.c_str()); + return read_OFF(in, sm, np); } template Date: Thu, 6 May 2021 14:32:32 +0200 Subject: [PATCH 137/171] allow to remesh a patch with boundary cycles of edges if genus is not to be preserved --- BGL/include/CGAL/boost/graph/selection.h | 16 +++++- .../repair_self_intersections.h | 56 +++++++++++-------- 2 files changed, 47 insertions(+), 25 deletions(-) diff --git a/BGL/include/CGAL/boost/graph/selection.h b/BGL/include/CGAL/boost/graph/selection.h index 668bc4707e0..890c0622e68 100644 --- a/BGL/include/CGAL/boost/graph/selection.h +++ b/BGL/include/CGAL/boost/graph/selection.h @@ -1137,8 +1137,8 @@ void expand_face_selection_for_removal(const FaceRange& faces_to_be_deleted, //todo: take non-manifold vertices into account. template -bool is_selection_a_topological_disk(const FaceRange& face_selection, - PolygonMesh& pm) +int euler_characteristic_of_selection(const FaceRange& face_selection, + PolygonMesh& pm) { typedef typename boost::graph_traits::vertex_descriptor vertex_descriptor; typedef typename boost::graph_traits::face_descriptor face_descriptor; @@ -1154,8 +1154,18 @@ bool is_selection_a_topological_disk(const FaceRange& face_selection, sel_edges.insert(edge(h,pm)); } } - return (sel_vertices.size() - sel_edges.size() + face_selection.size() == 1); + return static_cast(sel_vertices.size()) + - static_cast(sel_edges.size()) + + static_cast(face_selection.size()); } + +template +bool is_selection_a_topological_disk(const FaceRange& face_selection, + PolygonMesh& pm) +{ + return euler_characteristic_of_selection(face_selection, pm) == 1; +} + } //end of namespace CGAL #endif //CGAL_BOOST_GRAPH_SELECTION_H diff --git a/Polygon_mesh_processing/include/CGAL/Polygon_mesh_processing/repair_self_intersections.h b/Polygon_mesh_processing/include/CGAL/Polygon_mesh_processing/repair_self_intersections.h index 1f0d457ddda..d2f71e5e095 100644 --- a/Polygon_mesh_processing/include/CGAL/Polygon_mesh_processing/repair_self_intersections.h +++ b/Polygon_mesh_processing/include/CGAL/Polygon_mesh_processing/repair_self_intersections.h @@ -1764,21 +1764,43 @@ remove_self_intersections_one_step(std::set mesh_non_border_hedges; std::set mesh_border_hedge; for(halfedge_descriptor h : cc_border_hedges) { if(!is_border(opposite(h, tmesh), tmesh)) - only_border_edges = false; + mesh_non_border_hedges.push_back(h); else mesh_border_hedge.insert(opposite(h, tmesh)); } - int nb_cycles = 0; + if (mesh_border_hedge.empty()) + { +#ifdef CGAL_PMP_REMOVE_SELF_INTERSECTION_DEBUG + std::cout << " DEBUG: CC not handled, selection is not a topological disk (preserve_genus=false)\n"; + ++unsolved_self_intersections; +#endif + topology_issue = true; + continue; + } + + // we look for cycles of border halfedges and update selection_chi while(!mesh_border_hedge.empty()) { // we must count the number of cycle of boundary edges @@ -1790,14 +1812,14 @@ remove_self_intersections_one_step(std::set::iterator it = mesh_border_hedge.find(h); if(it == mesh_border_hedge.end()) - break; // not a cycle + break; // not a cycle does not count mesh_border_hedge.erase(it); } @@ -1805,29 +1827,19 @@ remove_self_intersections_one_step(std::set (only_border_edges ? 1 : 0)) + if(selection_chi!=1) { #ifdef CGAL_PMP_REMOVE_SELF_INTERSECTION_DEBUG - std::cout << " DEBUG: CC not handled due to the presence of " - << nb_cycles << " of boundary edges\n"; - ++unsolved_self_intersections; + std::cout << " DEBUG: CC not handled, selection is not a topological disk even if" + << " boundary cycles are removed: chi=" << selection_chi << "\n"; + ++unsolved_self_intersections; #endif - topology_issue = true; continue; } else { - if(preserve_genus) - { -#ifdef CGAL_PMP_REMOVE_SELF_INTERSECTION_DEBUG - std::cout << " DEBUG: CC not handled because it is not a topological disk (preserve_genus=true)\n"; - ++unsolved_self_intersections; -#endif - - all_fixed = false; - continue; - } + cc_border_hedges.swap(mesh_non_border_hedges); // count the number of cycles of halfedges of the boundary std::map bhs; From 74b3504879b32d5fdfd2487fc3497f1c6fe8479e Mon Sep 17 00:00:00 2001 From: Maxime Gimeno Date: Thu, 6 May 2021 14:41:08 +0200 Subject: [PATCH 138/171] First search for TBB in config mode --- Installation/cmake/modules/FindTBB.cmake | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/Installation/cmake/modules/FindTBB.cmake b/Installation/cmake/modules/FindTBB.cmake index 23caa1cbf9a..2a0af128346 100644 --- a/Installation/cmake/modules/FindTBB.cmake +++ b/Installation/cmake/modules/FindTBB.cmake @@ -189,6 +189,11 @@ endmacro() # Now to actually find TBB # +#start with CONFIG Mode +find_package(TBB QUIET NO_MODULE) +if(TBB_FOUND) + return() +endif()#TBB_FOUND # Get path, convert backslashes as ${ENV_${var}} getenv_path(TBB_ROOT) From 9d3d29fd6d3aee0c28ed9c8bfe95cb04d208c912 Mon Sep 17 00:00:00 2001 From: Jane Tournois Date: Thu, 6 May 2021 15:13:30 +0200 Subject: [PATCH 139/171] encapsulate debug code in debug macro --- .../internal/Isotropic_remeshing/remesh_impl.h | 15 +++++++++------ 1 file changed, 9 insertions(+), 6 deletions(-) diff --git a/Polygon_mesh_processing/include/CGAL/Polygon_mesh_processing/internal/Isotropic_remeshing/remesh_impl.h b/Polygon_mesh_processing/include/CGAL/Polygon_mesh_processing/internal/Isotropic_remeshing/remesh_impl.h index a14b697ebd8..098ae47688a 100644 --- a/Polygon_mesh_processing/include/CGAL/Polygon_mesh_processing/internal/Isotropic_remeshing/remesh_impl.h +++ b/Polygon_mesh_processing/include/CGAL/Polygon_mesh_processing/internal/Isotropic_remeshing/remesh_impl.h @@ -1564,19 +1564,22 @@ private: } } +#ifdef CGAL_PMP_REMESHING_DEBUG std::ofstream ofs("dump_isolated.polylines.txt"); for (edge_descriptor e : edges(mesh_)) { halfedge_descriptor h = halfedge(e, mesh_); - if (status(h) == ISOLATED_CONSTRAINT) - { - CGAL_assertion(status(opposite(h, mesh_)) == ISOLATED_CONSTRAINT); + Halfedge_status so = status(opposite(h, mesh_)); + bool isolated = (status(h) == ISOLATED_CONSTRAINT || so == ISOLATED_CONSTRAINT); + CGAL_assertion(!isolated + || so == ISOLATED_CONSTRAINT + || so == MESH_BORDER); + if(isolated) ofs << "2 " << get(vpmap_, target(h, mesh_)) - << " " << get(vpmap_, source(h, mesh_)) << std::endl; - } + << " " << get(vpmap_, source(h, mesh_)) << std::endl; } ofs.close(); - +#endif } Halfedge_status status(const halfedge_descriptor& h) const From 49fc218c45de1d4233710cada311b9c02bf13652 Mon Sep 17 00:00:00 2001 From: Jane Tournois Date: Thu, 6 May 2021 16:07:45 +0200 Subject: [PATCH 140/171] avoid iterating over all halfedges, but only the ones of the patch to be remeshed --- .../internal/Isotropic_remeshing/remesh_impl.h | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/Polygon_mesh_processing/include/CGAL/Polygon_mesh_processing/internal/Isotropic_remeshing/remesh_impl.h b/Polygon_mesh_processing/include/CGAL/Polygon_mesh_processing/internal/Isotropic_remeshing/remesh_impl.h index 098ae47688a..69d1eea04bc 100644 --- a/Polygon_mesh_processing/include/CGAL/Polygon_mesh_processing/internal/Isotropic_remeshing/remesh_impl.h +++ b/Polygon_mesh_processing/include/CGAL/Polygon_mesh_processing/internal/Isotropic_remeshing/remesh_impl.h @@ -1509,21 +1509,23 @@ private: } //tag PATCH, //h and hopp belong to the patch to be remeshed + std::vector patch_halfedges; for(face_descriptor f : face_range) { for(halfedge_descriptor h : halfedges_around_face(halfedge(f, mesh_), mesh_)) { set_status(h, PATCH); + patch_halfedges.push_back(h); } } // tag patch border halfedges - for(halfedge_descriptor h : halfedges(mesh_)) + for(halfedge_descriptor h : patch_halfedges) { - if (status(h) == PATCH - && ( status(opposite(h, mesh_)) != PATCH - || get_patch_id(face(h, mesh_)) != get_patch_id(face(opposite(h, mesh_), mesh_)))) + CGAL_assertion(status(h) == PATCH); + if( status(opposite(h, mesh_)) != PATCH + || get_patch_id(face(h, mesh_)) != get_patch_id(face(opposite(h, mesh_), mesh_))) { set_status(h, PATCH_BORDER); has_border_ = true; From 64e568f748758fc0cc9e95f89b74d16741e49184 Mon Sep 17 00:00:00 2001 From: Jane Tournois Date: Thu, 6 May 2021 16:13:09 +0200 Subject: [PATCH 141/171] an isolated constraint can be on the mesh border the halfedge status for a pair of opposite halfedges can be MESH_BORDER and ISOLATED_CONSTRAINT, but MESH_BORDER has priority --- .../internal/Isotropic_remeshing/remesh_impl.h | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/Polygon_mesh_processing/include/CGAL/Polygon_mesh_processing/internal/Isotropic_remeshing/remesh_impl.h b/Polygon_mesh_processing/include/CGAL/Polygon_mesh_processing/internal/Isotropic_remeshing/remesh_impl.h index 69d1eea04bc..14cf5ccadaa 100644 --- a/Polygon_mesh_processing/include/CGAL/Polygon_mesh_processing/internal/Isotropic_remeshing/remesh_impl.h +++ b/Polygon_mesh_processing/include/CGAL/Polygon_mesh_processing/internal/Isotropic_remeshing/remesh_impl.h @@ -1559,8 +1559,10 @@ private: if (hs != PATCH_BORDER && hsopp != PATCH_BORDER) { - set_status(h, ISOLATED_CONSTRAINT); - set_status(hopp, ISOLATED_CONSTRAINT); + if(hs != MESH_BORDER) + set_status(h, ISOLATED_CONSTRAINT); + if(hsopp != MESH_BORDER) + set_status(hopp, ISOLATED_CONSTRAINT); } } } @@ -1855,7 +1857,8 @@ public: bool is_an_isolated_constraint(const halfedge_descriptor& h) const { bool res = (status(h) == ISOLATED_CONSTRAINT); - CGAL_assertion(!res || status(opposite(h, mesh_)) == ISOLATED_CONSTRAINT); + CGAL_assertion_code(Halfedge_status so = status(opposite(h, mesh_))); + CGAL_assertion(!res || so == ISOLATED_CONSTRAINT || so == MESH_BORDER); return res; } @@ -1878,6 +1881,7 @@ private: unsigned int nb_mesh = 0; unsigned int nb_patch = 0; unsigned int nb_patch_border = 0; + unsigned int nb_isolated = 0; for(halfedge_descriptor h : halfedges(mesh_)) { @@ -1885,6 +1889,7 @@ private: else if(is_on_patch_border(h)) nb_patch_border++; else if(is_on_mesh(h)) nb_mesh++; else if(is_on_border(h)) nb_border++; + else if(is_an_isolated_constraint(h)) nb_isolated++; else CGAL_assertion(false); } } From 3a6e31de65a046974db6334778f14ddcd5caabbb Mon Sep 17 00:00:00 2001 From: Jane Tournois Date: Thu, 6 May 2021 16:42:00 +0200 Subject: [PATCH 142/171] do not split isolated constraints --- .../internal/Isotropic_remeshing/remesh_impl.h | 2 ++ 1 file changed, 2 insertions(+) diff --git a/Polygon_mesh_processing/include/CGAL/Polygon_mesh_processing/internal/Isotropic_remeshing/remesh_impl.h b/Polygon_mesh_processing/include/CGAL/Polygon_mesh_processing/internal/Isotropic_remeshing/remesh_impl.h index 14cf5ccadaa..b8b0f5c6b6a 100644 --- a/Polygon_mesh_processing/include/CGAL/Polygon_mesh_processing/internal/Isotropic_remeshing/remesh_impl.h +++ b/Polygon_mesh_processing/include/CGAL/Polygon_mesh_processing/internal/Isotropic_remeshing/remesh_impl.h @@ -1247,6 +1247,8 @@ private: return false; else if (is_on_mesh(hopp) && is_on_border(h)) return false; + else if (is_an_isolated_constraint(h)) + return false; else return true; } From 14385aaf155498907cb2c9c1dcb611b8fde43e79 Mon Sep 17 00:00:00 2001 From: Jane Tournois Date: Thu, 6 May 2021 17:48:39 +0200 Subject: [PATCH 143/171] add a test with isolated constraints, on and away from mesh borders --- .../Polygon_mesh_processing/CMakeLists.txt | 1 + ...meshing_with_isolated_constraints_test.cpp | 61 +++++++++++++++++++ 2 files changed, 62 insertions(+) create mode 100644 Polygon_mesh_processing/test/Polygon_mesh_processing/remeshing_with_isolated_constraints_test.cpp diff --git a/Polygon_mesh_processing/test/Polygon_mesh_processing/CMakeLists.txt b/Polygon_mesh_processing/test/Polygon_mesh_processing/CMakeLists.txt index 79ee286412a..1bc4283c0ad 100644 --- a/Polygon_mesh_processing/test/Polygon_mesh_processing/CMakeLists.txt +++ b/Polygon_mesh_processing/test/Polygon_mesh_processing/CMakeLists.txt @@ -72,6 +72,7 @@ endif() create_single_source_cgal_program("test_is_polygon_soup_a_polygon_mesh.cpp") create_single_source_cgal_program("test_stitching.cpp") create_single_source_cgal_program("remeshing_test.cpp" ) + create_single_source_cgal_program("remeshing_with_isolated_constraints_test.cpp" ) create_single_source_cgal_program("measures_test.cpp") create_single_source_cgal_program("triangulate_faces_test.cpp") create_single_source_cgal_program("triangulate_faces_hole_filling_dt3_test.cpp") diff --git a/Polygon_mesh_processing/test/Polygon_mesh_processing/remeshing_with_isolated_constraints_test.cpp b/Polygon_mesh_processing/test/Polygon_mesh_processing/remeshing_with_isolated_constraints_test.cpp new file mode 100644 index 00000000000..4e7ebe96092 --- /dev/null +++ b/Polygon_mesh_processing/test/Polygon_mesh_processing/remeshing_with_isolated_constraints_test.cpp @@ -0,0 +1,61 @@ +#include +#include + +#include +#include +#include +#include + +#include +#include +#include + +typedef CGAL::Exact_predicates_inexact_constructions_kernel Kernel; +typedef Kernel::Point_3 Point_3; +typedef CGAL::Surface_mesh Polygon_mesh; + +typedef boost::graph_traits::vertex_descriptor vertex_descriptor; +typedef boost::graph_traits::edge_descriptor edge_descriptor; +typedef boost::graph_traits::face_descriptor face_descriptor; + +namespace PMP = CGAL::Polygon_mesh_processing; + +int main(int, char**) +{ + Polygon_mesh sm; + CGAL::make_grid(10, 10, sm); + PMP::triangulate_faces(sm); + std::cout << faces(sm).size() << " faces in input" << std::endl; + assert(faces(sm).size() == 200); + + std::set fs; + auto selected_faces = make_boolean_property_map(fs); + fs.insert(*(faces(sm).begin())); + CGAL::expand_face_selection(fs, sm, 1, selected_faces, CGAL::Emptyset_iterator()); + std::cout << fs.size() << " faces in the range" << std::endl; + assert(fs.size() == 4); + + typedef std::set Active_vertices; + Active_vertices active_vertices; + auto apm = make_boolean_property_map(active_vertices); + for(vertex_descriptor v : vertices(sm)) + put(apm, v, true); + + typedef CGAL::dynamic_edge_property_t Contraint_property; + typedef typename boost::property_map::type ECM; + ECM ecm = get(Contraint_property(), sm); + + for(edge_descriptor e : edges(sm)) + put(ecm, e, true); + + PMP::isotropic_remeshing(fs, 0.5, sm, CGAL::parameters::vertex_is_constrained_map(apm) + .edge_is_constrained_map(ecm) + .collapse_constraints(false) + .number_of_iterations(10) + .number_of_relaxation_steps(10)); + + std::cout << faces(sm).size() << " faces in output" << std::endl; + assert(faces(sm).size() == 234); + + return EXIT_SUCCESS; +} From 74e2ee9734021429c1dc461fea58a39370b63482 Mon Sep 17 00:00:00 2001 From: Jane Tournois Date: Thu, 6 May 2021 19:40:52 +0200 Subject: [PATCH 144/171] do not collapse isolated constraints --- .../internal/Isotropic_remeshing/remesh_impl.h | 3 +++ 1 file changed, 3 insertions(+) diff --git a/Polygon_mesh_processing/include/CGAL/Polygon_mesh_processing/internal/Isotropic_remeshing/remesh_impl.h b/Polygon_mesh_processing/include/CGAL/Polygon_mesh_processing/internal/Isotropic_remeshing/remesh_impl.h index b8b0f5c6b6a..d613015aa74 100644 --- a/Polygon_mesh_processing/include/CGAL/Polygon_mesh_processing/internal/Isotropic_remeshing/remesh_impl.h +++ b/Polygon_mesh_processing/include/CGAL/Polygon_mesh_processing/internal/Isotropic_remeshing/remesh_impl.h @@ -1263,6 +1263,9 @@ private: if (is_on_mesh(he) && is_on_mesh(hopp)) return false; + if (is_an_isolated_constraint(he) || is_an_isolated_constraint(hopp)) + return false; + if ( (protect_constraints_ || !collapse_constraints) && is_constrained(e)) return false; if (is_on_patch(he)) //hopp is also on patch From bbc7db4e27e1bfc9257579de74f789e23ce2fb89 Mon Sep 17 00:00:00 2001 From: Maxime Gimeno Date: Fri, 7 May 2021 10:14:37 +0200 Subject: [PATCH 145/171] Remove the compatibility header for write_VTU to avoid conflicts --- Mesh_2/include/CGAL/IO/write_vtu.h | 28 ---------------------------- 1 file changed, 28 deletions(-) delete mode 100644 Mesh_2/include/CGAL/IO/write_vtu.h diff --git a/Mesh_2/include/CGAL/IO/write_vtu.h b/Mesh_2/include/CGAL/IO/write_vtu.h deleted file mode 100644 index a76a4ecba77..00000000000 --- a/Mesh_2/include/CGAL/IO/write_vtu.h +++ /dev/null @@ -1,28 +0,0 @@ -// Copyright (c) 2018 GeometryFactory (France). -// Copyright (c) 2004-2006 INRIA Sophia-Antipolis (France). -// Copyright (c) 2009 INRIA Sophia-Antipolis (France). -// All rights reserved. -// -// This file is part of CGAL (www.cgal.org). -// -// $URL$ -// $Id$ -// SPDX-License-Identifier: GPL-3.0-or-later OR LicenseRef-Commercial -// -// -// Author(s) : Laurent RINEAU, Stephane Tayeb, Maxime Gimeno - -#ifndef CGAL_WRITE_VTU_H -#define CGAL_WRITE_VTU_H - -#include - -#ifndef CGAL_NO_DEPRECATED_CODE -#include - -#define CGAL_DEPRECATED_HEADER "" -#define CGAL_REPLACEMENT_HEADER "" -#include -#endif - -#endif // CGAL_WRITE_VTU_H From e9b7595fff7fdccbc1ea59ffccedb2ea321daf0e Mon Sep 17 00:00:00 2001 From: Maxime Gimeno Date: Tue, 4 May 2021 11:45:57 +0200 Subject: [PATCH 146/171] Deprecate CGAL headers for threads, atomic and result_of, and move their content to config.h as fallback --- .../CGAL/Apollonius_graph_2/comparator_profiler.h | 1 - .../CGAL/Apollonius_graph_2/predicate_profiler.h | 1 - .../include/CGAL/Arr_circle_segment_traits_2.h | 1 - .../include/CGAL/Arr_conic_traits_2.h | 1 - .../include/CGAL/Arr_counting_traits_2.h | 1 - .../include/CGAL/Box_intersection_d/Box_d.h | 1 - CGAL_Core/include/CGAL/CORE/CoreDefs.h | 1 - Installation/include/CGAL/atomic.h | 3 +++ Installation/include/CGAL/config.h | 13 +++++++++++++ Mesh_3/include/CGAL/Mesh_3/Mesher_3.h | 1 - Mesh_3/include/CGAL/Mesh_3/Mesher_level.h | 1 - .../CGAL/Mesh_3/Protect_edges_sizing_field.h | 1 - Mesh_3/include/CGAL/Mesh_3/Refine_cells_3.h | 1 - Mesh_3/include/CGAL/Mesh_3/Refine_facets_3.h | 1 - .../CGAL/Mesh_3/Refine_facets_manifold_base.h | 1 - Mesh_3/include/CGAL/refine_mesh_3.h | 1 - Nef_3/include/CGAL/Nef_3/SNC_indexed_items.h | 3 --- Number_types/include/CGAL/Counted_number.h | 1 - .../internal/Callback_wrapper.h | 1 - .../Polyhedron/include/run_with_qprogressdialog.h | 1 - .../include/CGAL/Concurrent_compact_container.h | 1 - STL_Extension/include/CGAL/Time_stamper.h | 1 - STL_Extension/include/CGAL/thread.h | 3 +++ 23 files changed, 19 insertions(+), 22 deletions(-) diff --git a/Apollonius_graph_2/include/CGAL/Apollonius_graph_2/comparator_profiler.h b/Apollonius_graph_2/include/CGAL/Apollonius_graph_2/comparator_profiler.h index 3e3283e55b4..fc95d4bf1b1 100644 --- a/Apollonius_graph_2/include/CGAL/Apollonius_graph_2/comparator_profiler.h +++ b/Apollonius_graph_2/include/CGAL/Apollonius_graph_2/comparator_profiler.h @@ -19,7 +19,6 @@ #include -#include namespace CGAL { diff --git a/Apollonius_graph_2/include/CGAL/Apollonius_graph_2/predicate_profiler.h b/Apollonius_graph_2/include/CGAL/Apollonius_graph_2/predicate_profiler.h index d543e6a92a1..b2b7b93e33d 100644 --- a/Apollonius_graph_2/include/CGAL/Apollonius_graph_2/predicate_profiler.h +++ b/Apollonius_graph_2/include/CGAL/Apollonius_graph_2/predicate_profiler.h @@ -19,7 +19,6 @@ #include -#include #define AG2_PROFILE_PREDICATES diff --git a/Arrangement_on_surface_2/include/CGAL/Arr_circle_segment_traits_2.h b/Arrangement_on_surface_2/include/CGAL/Arr_circle_segment_traits_2.h index 2b5a25cd5e0..8155e8b2cdd 100644 --- a/Arrangement_on_surface_2/include/CGAL/Arr_circle_segment_traits_2.h +++ b/Arrangement_on_surface_2/include/CGAL/Arr_circle_segment_traits_2.h @@ -23,7 +23,6 @@ * The header file for the Arr_circle_segment_traits_2 class. */ -#include #include #include #include diff --git a/Arrangement_on_surface_2/include/CGAL/Arr_conic_traits_2.h b/Arrangement_on_surface_2/include/CGAL/Arr_conic_traits_2.h index cc26c045a84..89b758557db 100644 --- a/Arrangement_on_surface_2/include/CGAL/Arr_conic_traits_2.h +++ b/Arrangement_on_surface_2/include/CGAL/Arr_conic_traits_2.h @@ -24,7 +24,6 @@ #include -#include #include #include #include diff --git a/Arrangement_on_surface_2/include/CGAL/Arr_counting_traits_2.h b/Arrangement_on_surface_2/include/CGAL/Arr_counting_traits_2.h index 1babd65aba1..642ba527cd5 100644 --- a/Arrangement_on_surface_2/include/CGAL/Arr_counting_traits_2.h +++ b/Arrangement_on_surface_2/include/CGAL/Arr_counting_traits_2.h @@ -28,7 +28,6 @@ #include #include -#include #include #include diff --git a/Box_intersection_d/include/CGAL/Box_intersection_d/Box_d.h b/Box_intersection_d/include/CGAL/Box_intersection_d/Box_d.h index a6326ed6cae..7b0b74f5679 100644 --- a/Box_intersection_d/include/CGAL/Box_intersection_d/Box_d.h +++ b/Box_intersection_d/include/CGAL/Box_intersection_d/Box_d.h @@ -21,7 +21,6 @@ #include #include #include -#include #include #include diff --git a/CGAL_Core/include/CGAL/CORE/CoreDefs.h b/CGAL_Core/include/CGAL/CORE/CoreDefs.h index efeb46378cb..22cde3a4a31 100644 --- a/CGAL_Core/include/CGAL/CORE/CoreDefs.h +++ b/CGAL_Core/include/CGAL/CORE/CoreDefs.h @@ -29,7 +29,6 @@ #define _CORE_COREDEFS_H_ #include -#include #include #ifdef CGAL_HEADER_ONLY diff --git a/Installation/include/CGAL/atomic.h b/Installation/include/CGAL/atomic.h index 5c92b46fd2a..da0a5c1c0a2 100644 --- a/Installation/include/CGAL/atomic.h +++ b/Installation/include/CGAL/atomic.h @@ -10,6 +10,9 @@ #ifndef CGAL_ATOMIC_H #define CGAL_ATOMIC_H +#define CGAL_DEPRECATED_HEADER "" +#define CGAL_REPLACEMENT_HEADER "" + #include #ifdef CGAL_HAS_THREADS diff --git a/Installation/include/CGAL/config.h b/Installation/include/CGAL/config.h index 8f0f43c95a9..5b1e27e2fd0 100644 --- a/Installation/include/CGAL/config.h +++ b/Installation/include/CGAL/config.h @@ -645,6 +645,9 @@ using std::max; # include # include # include +# include +# include +# include // namespace CGAL { // @@ -663,6 +666,16 @@ namespace CGAL { using std::is_enum; using std::unordered_set; using std::unordered_map; + using std::atomic; + using std::memory_order_relaxed; + using std::memory_order_consume; + using std::memory_order_acquire; + using std::memory_order_release; + using std::memory_order_acq_rel; + using std::memory_order_seq_cst; + using std::atomic_thread_fence; + using std::thread; + } // namespace cpp0x = cpp11; diff --git a/Mesh_3/include/CGAL/Mesh_3/Mesher_3.h b/Mesh_3/include/CGAL/Mesh_3/Mesher_3.h index fb54c96a4ae..718a730032d 100644 --- a/Mesh_3/include/CGAL/Mesh_3/Mesher_3.h +++ b/Mesh_3/include/CGAL/Mesh_3/Mesher_3.h @@ -36,7 +36,6 @@ #include #include #include -#include #ifdef CGAL_MESH_3_USE_OLD_SURFACE_RESTRICTED_DELAUNAY_UPDATE #include diff --git a/Mesh_3/include/CGAL/Mesh_3/Mesher_level.h b/Mesh_3/include/CGAL/Mesh_3/Mesher_level.h index 3b59efebbd9..2da097ef8a5 100644 --- a/Mesh_3/include/CGAL/Mesh_3/Mesher_level.h +++ b/Mesh_3/include/CGAL/Mesh_3/Mesher_level.h @@ -23,7 +23,6 @@ #include #endif -#include #include #ifdef CGAL_CONCURRENT_MESH_3_PROFILING diff --git a/Mesh_3/include/CGAL/Mesh_3/Protect_edges_sizing_field.h b/Mesh_3/include/CGAL/Mesh_3/Protect_edges_sizing_field.h index f810e9fc044..0a5826774bd 100644 --- a/Mesh_3/include/CGAL/Mesh_3/Protect_edges_sizing_field.h +++ b/Mesh_3/include/CGAL/Mesh_3/Protect_edges_sizing_field.h @@ -46,7 +46,6 @@ #include #include #include -#include #include diff --git a/Mesh_3/include/CGAL/Mesh_3/Refine_cells_3.h b/Mesh_3/include/CGAL/Mesh_3/Refine_cells_3.h index b7d7e050735..30726de2fcc 100644 --- a/Mesh_3/include/CGAL/Mesh_3/Refine_cells_3.h +++ b/Mesh_3/include/CGAL/Mesh_3/Refine_cells_3.h @@ -26,7 +26,6 @@ #include #include #endif -#include #include #include diff --git a/Mesh_3/include/CGAL/Mesh_3/Refine_facets_3.h b/Mesh_3/include/CGAL/Mesh_3/Refine_facets_3.h index b7b90c2e4ed..fe720c2399d 100644 --- a/Mesh_3/include/CGAL/Mesh_3/Refine_facets_3.h +++ b/Mesh_3/include/CGAL/Mesh_3/Refine_facets_3.h @@ -41,7 +41,6 @@ #include #include -#include #include #include diff --git a/Mesh_3/include/CGAL/Mesh_3/Refine_facets_manifold_base.h b/Mesh_3/include/CGAL/Mesh_3/Refine_facets_manifold_base.h index 3038ce6383f..aa6a83b9e0e 100644 --- a/Mesh_3/include/CGAL/Mesh_3/Refine_facets_manifold_base.h +++ b/Mesh_3/include/CGAL/Mesh_3/Refine_facets_manifold_base.h @@ -19,7 +19,6 @@ #include -#include #include #include diff --git a/Mesh_3/include/CGAL/refine_mesh_3.h b/Mesh_3/include/CGAL/refine_mesh_3.h index bba8c6c199e..4846b12c97e 100644 --- a/Mesh_3/include/CGAL/refine_mesh_3.h +++ b/Mesh_3/include/CGAL/refine_mesh_3.h @@ -28,7 +28,6 @@ #include #include #include -#include #include diff --git a/Nef_3/include/CGAL/Nef_3/SNC_indexed_items.h b/Nef_3/include/CGAL/Nef_3/SNC_indexed_items.h index 786971053d3..7194fbae8ca 100644 --- a/Nef_3/include/CGAL/Nef_3/SNC_indexed_items.h +++ b/Nef_3/include/CGAL/Nef_3/SNC_indexed_items.h @@ -15,9 +15,6 @@ #include - -#include - #include #include #include diff --git a/Number_types/include/CGAL/Counted_number.h b/Number_types/include/CGAL/Counted_number.h index 68fe0409671..02b3a1d111c 100644 --- a/Number_types/include/CGAL/Counted_number.h +++ b/Number_types/include/CGAL/Counted_number.h @@ -19,7 +19,6 @@ #define CGAL_COUNTED_NUMBER_H #include -#include #include // for Root_of_selector #include diff --git a/Point_set_processing_3/include/CGAL/Point_set_processing_3/internal/Callback_wrapper.h b/Point_set_processing_3/include/CGAL/Point_set_processing_3/internal/Callback_wrapper.h index c52826db44b..266a7bcd306 100644 --- a/Point_set_processing_3/include/CGAL/Point_set_processing_3/internal/Callback_wrapper.h +++ b/Point_set_processing_3/include/CGAL/Point_set_processing_3/internal/Callback_wrapper.h @@ -16,7 +16,6 @@ #include -#include namespace CGAL { namespace Point_set_processing_3 { diff --git a/Polyhedron/demo/Polyhedron/include/run_with_qprogressdialog.h b/Polyhedron/demo/Polyhedron/include/run_with_qprogressdialog.h index 47f5f9670df..932530e76ba 100644 --- a/Polyhedron/demo/Polyhedron/include/run_with_qprogressdialog.h +++ b/Polyhedron/demo/Polyhedron/include/run_with_qprogressdialog.h @@ -3,7 +3,6 @@ #include #include -#include #include "Callback_signaler.h" diff --git a/STL_Extension/include/CGAL/Concurrent_compact_container.h b/STL_Extension/include/CGAL/Concurrent_compact_container.h index b2025dfa9af..8133cbd3c03 100644 --- a/STL_Extension/include/CGAL/Concurrent_compact_container.h +++ b/STL_Extension/include/CGAL/Concurrent_compact_container.h @@ -31,7 +31,6 @@ #include #include #include -#include #include #include diff --git a/STL_Extension/include/CGAL/Time_stamper.h b/STL_Extension/include/CGAL/Time_stamper.h index f0cfe44a574..8d346516a27 100644 --- a/STL_Extension/include/CGAL/Time_stamper.h +++ b/STL_Extension/include/CGAL/Time_stamper.h @@ -13,7 +13,6 @@ #define CGAL_TIME_STAMPER_H #include -#include namespace CGAL { diff --git a/STL_Extension/include/CGAL/thread.h b/STL_Extension/include/CGAL/thread.h index fb5a7ca1310..7d163964cf7 100644 --- a/STL_Extension/include/CGAL/thread.h +++ b/STL_Extension/include/CGAL/thread.h @@ -12,6 +12,9 @@ #ifndef CGAL_THREAD_H #define CGAL_THREAD_H +#define CGAL_DEPRECATED_HEADER "" +#define CGAL_REPLACEMENT_HEADER "" + #include /* From 3e03d50b8a6845b538fa209b3c3c1e55533bb97f Mon Sep 17 00:00:00 2001 From: Maxime Gimeno Date: Wed, 5 May 2021 15:32:22 +0200 Subject: [PATCH 147/171] replace usages of CGAL::cpp11::atomic and thread by std:: calls --- .../Apollonius_graph_2/comparator_profiler.h | 5 ++- .../Apollonius_graph_2/predicate_profiler.h | 3 +- .../CGAL/Arr_circle_segment_traits_2.h | 3 +- .../include/CGAL/Arr_conic_traits_2.h | 3 +- .../include/CGAL/Arr_counting_traits_2.h | 3 +- .../include/CGAL/Box_intersection_d/Box_d.h | 3 +- CGAL_Core/include/CGAL/CORE/CoreDefs.h | 24 ++++++----- CGAL_Core/include/CGAL/CORE/CoreDefs_impl.h | 24 ++++++----- Mesh_3/include/CGAL/Mesh_3/Mesher_3.h | 7 +-- Mesh_3/include/CGAL/Mesh_3/Mesher_level.h | 8 ++-- .../CGAL/Mesh_3/Protect_edges_sizing_field.h | 7 +-- Mesh_3/include/CGAL/Mesh_3/Refine_cells_3.h | 12 +++--- Mesh_3/include/CGAL/Mesh_3/Refine_facets_3.h | 13 +++--- .../CGAL/Mesh_3/Refine_facets_manifold_base.h | 3 +- Mesh_3/include/CGAL/make_mesh_3.h | 4 +- Mesh_3/include/CGAL/refine_mesh_3.h | 4 +- Nef_3/include/CGAL/Nef_3/SNC_indexed_items.h | 4 +- Number_types/include/CGAL/Counted_number.h | 43 ++++++++++--------- .../include/run_with_qprogressdialog.h | 4 +- 19 files changed, 100 insertions(+), 77 deletions(-) diff --git a/Apollonius_graph_2/include/CGAL/Apollonius_graph_2/comparator_profiler.h b/Apollonius_graph_2/include/CGAL/Apollonius_graph_2/comparator_profiler.h index fc95d4bf1b1..4395c25a54b 100644 --- a/Apollonius_graph_2/include/CGAL/Apollonius_graph_2/comparator_profiler.h +++ b/Apollonius_graph_2/include/CGAL/Apollonius_graph_2/comparator_profiler.h @@ -19,6 +19,7 @@ #include +#include namespace CGAL { @@ -32,8 +33,8 @@ public: typedef bool bool_; typedef unsigned long long_; #else - typedef CGAL::cpp11::atomic bool_; - typedef CGAL::cpp11::atomic long_; + typedef std::atomic bool_; + typedef std::atomic long_; #endif static bool_ count_cases; diff --git a/Apollonius_graph_2/include/CGAL/Apollonius_graph_2/predicate_profiler.h b/Apollonius_graph_2/include/CGAL/Apollonius_graph_2/predicate_profiler.h index b2b7b93e33d..cf78798b185 100644 --- a/Apollonius_graph_2/include/CGAL/Apollonius_graph_2/predicate_profiler.h +++ b/Apollonius_graph_2/include/CGAL/Apollonius_graph_2/predicate_profiler.h @@ -19,6 +19,7 @@ #include +#include #define AG2_PROFILE_PREDICATES @@ -32,7 +33,7 @@ public: #ifdef CGAL_NO_ATOMIC typedef unsigned long long_; #else - typedef CGAL::cpp11::atomic long_; + typedef std::atomic long_; #endif // high level predicates diff --git a/Arrangement_on_surface_2/include/CGAL/Arr_circle_segment_traits_2.h b/Arrangement_on_surface_2/include/CGAL/Arr_circle_segment_traits_2.h index 8155e8b2cdd..dfa5bf667d0 100644 --- a/Arrangement_on_surface_2/include/CGAL/Arr_circle_segment_traits_2.h +++ b/Arrangement_on_surface_2/include/CGAL/Arr_circle_segment_traits_2.h @@ -28,6 +28,7 @@ #include #include +#include namespace CGAL { @@ -79,7 +80,7 @@ public: #ifdef CGAL_NO_ATOMIC static unsigned int index; #else - static CGAL::cpp11::atomic index; + static std::atomic index; #endif return (++index); } diff --git a/Arrangement_on_surface_2/include/CGAL/Arr_conic_traits_2.h b/Arrangement_on_surface_2/include/CGAL/Arr_conic_traits_2.h index 89b758557db..079ba7d1d04 100644 --- a/Arrangement_on_surface_2/include/CGAL/Arr_conic_traits_2.h +++ b/Arrangement_on_surface_2/include/CGAL/Arr_conic_traits_2.h @@ -23,6 +23,7 @@ */ #include +#include #include #include @@ -107,7 +108,7 @@ public: #ifdef CGAL_NO_ATOMIC static unsigned int index; #else - static CGAL::cpp11::atomic index; + static std::atomic index; #endif return (++index); } diff --git a/Arrangement_on_surface_2/include/CGAL/Arr_counting_traits_2.h b/Arrangement_on_surface_2/include/CGAL/Arr_counting_traits_2.h index 642ba527cd5..2a745798ec4 100644 --- a/Arrangement_on_surface_2/include/CGAL/Arr_counting_traits_2.h +++ b/Arrangement_on_surface_2/include/CGAL/Arr_counting_traits_2.h @@ -26,6 +26,7 @@ #include #include +#include #include #include @@ -949,7 +950,7 @@ public: #ifdef CGAL_NO_ATOMIC static unsigned int counter; #else - static CGAL::cpp11::atomic counter; + static std::atomic counter; #endif if (doit) ++counter; return counter; diff --git a/Box_intersection_d/include/CGAL/Box_intersection_d/Box_d.h b/Box_intersection_d/include/CGAL/Box_intersection_d/Box_d.h index 7b0b74f5679..ddadb14852e 100644 --- a/Box_intersection_d/include/CGAL/Box_intersection_d/Box_d.h +++ b/Box_intersection_d/include/CGAL/Box_intersection_d/Box_d.h @@ -24,6 +24,7 @@ #include #include +#include namespace CGAL { @@ -37,7 +38,7 @@ struct Unique_numbers { #ifdef CGAL_NO_ATOMIC static std::size_t n = 0; #else - static CGAL::cpp11::atomic n; // initialized to 0 + static std::atomic n; // initialized to 0 #endif i = n++; } diff --git a/CGAL_Core/include/CGAL/CORE/CoreDefs.h b/CGAL_Core/include/CGAL/CORE/CoreDefs.h index 22cde3a4a31..57c3da34645 100644 --- a/CGAL_Core/include/CGAL/CORE/CoreDefs.h +++ b/CGAL_Core/include/CGAL/CORE/CoreDefs.h @@ -31,6 +31,8 @@ #include #include +#include + #ifdef CGAL_HEADER_ONLY #define CGAL_GLOBAL_STATE_VAR(TYPE, NAME, VALUE) \ @@ -74,7 +76,7 @@ namespace CORE { #ifdef CGAL_NO_ATOMIC CGAL_GLOBAL_STATE_VAR(bool, AbortFlag, true) #else -CGAL_GLOBAL_STATE_VAR(CGAL::cpp11::atomic, AbortFlag, true) +CGAL_GLOBAL_STATE_VAR(std::atomic, AbortFlag, true) #endif /// Invalid Flag -- initiallly value is non-negative @@ -85,7 +87,7 @@ CGAL_GLOBAL_STATE_VAR(CGAL::cpp11::atomic, AbortFlag, true) #ifdef CGAL_NO_ATOMIC CGAL_GLOBAL_STATE_VAR(int, InvalidFlag, 0) #else -CGAL_GLOBAL_STATE_VAR(CGAL::cpp11::atomic, InvalidFlag, 0) +CGAL_GLOBAL_STATE_VAR(std::atomic, InvalidFlag, 0) #endif /// Escape Precision in bits @@ -101,7 +103,7 @@ CGAL_GLOBAL_STATE_VAR(long, EscapePrecFlag, 0) #ifdef CGAL_NO_ATOMIC CGAL_GLOBAL_STATE_VAR(bool, EscapePrecWarning, true) #else -CGAL_GLOBAL_STATE_VAR(CGAL::cpp11::atomic, EscapePrecWarning, true) +CGAL_GLOBAL_STATE_VAR(std::atomic, EscapePrecWarning, true) #endif // These following two values determine the precision of computing @@ -123,7 +125,7 @@ CGAL_GLOBAL_STATE_VAR(extLong, defAbsPrec, CORE_posInfty) #ifdef CGAL_NO_ATOMIC CGAL_GLOBAL_STATE_VAR(long, defBigFloatOutputDigits, 10) #else - CGAL_GLOBAL_STATE_VAR(CGAL::cpp11::atomic, defBigFloatOutputDigits, 10) + CGAL_GLOBAL_STATE_VAR(std::atomic, defBigFloatOutputDigits, 10) #endif /// default input precision in digits for converting a string to a Real or Expr @@ -137,7 +139,7 @@ CGAL_GLOBAL_STATE_VAR(extLong, defInputDigits, CORE_posInfty) #ifdef CGAL_NO_ATOMIC CGAL_GLOBAL_STATE_VAR(long, defOutputDigits, 10) // == get_static_defBigFloatOutputDigits() #else -CGAL_GLOBAL_STATE_VAR(CGAL::cpp11::atomic, defOutputDigits, 10) // == get_static_defBigFloatOutputDigits() +CGAL_GLOBAL_STATE_VAR(std::atomic, defOutputDigits, 10) // == get_static_defBigFloatOutputDigits() #endif /// default input precision in digits for converting a string to a BigFloat @@ -145,7 +147,7 @@ CGAL_GLOBAL_STATE_VAR(CGAL::cpp11::atomic, defOutputDigits, 10) // == get_ #ifdef CGAL_NO_ATOMIC CGAL_GLOBAL_STATE_VAR(long, defBigFloatInputDigits, 16) #else -CGAL_GLOBAL_STATE_VAR(CGAL::cpp11::atomic, defBigFloatInputDigits, 16) +CGAL_GLOBAL_STATE_VAR(std::atomic, defBigFloatInputDigits, 16) #endif inline @@ -168,7 +170,7 @@ CGAL_GLOBAL_STATE_VAR(extLong, defBFsqrtAbsPrec, 54) #ifdef CGAL_NO_ATOMIC CGAL_GLOBAL_STATE_VAR(bool, fpFilterFlag, true) #else -CGAL_GLOBAL_STATE_VAR(CGAL::cpp11::atomic, fpFilterFlag, true) +CGAL_GLOBAL_STATE_VAR(std::atomic, fpFilterFlag, true) #endif @@ -176,7 +178,7 @@ CGAL_GLOBAL_STATE_VAR(CGAL::cpp11::atomic, fpFilterFlag, true) #ifdef CGAL_NO_ATOMIC CGAL_GLOBAL_STATE_VAR(bool, incrementalEvalFlag, true) #else -CGAL_GLOBAL_STATE_VAR(CGAL::cpp11::atomic, incrementalEvalFlag, true) +CGAL_GLOBAL_STATE_VAR(std::atomic, incrementalEvalFlag, true) #endif @@ -184,7 +186,7 @@ CGAL_GLOBAL_STATE_VAR(CGAL::cpp11::atomic, incrementalEvalFlag, true) #ifdef CGAL_NO_ATOMIC CGAL_GLOBAL_STATE_VAR(bool, progressiveEvalFlag, true) #else -CGAL_GLOBAL_STATE_VAR(CGAL::cpp11::atomic, progressiveEvalFlag, true) +CGAL_GLOBAL_STATE_VAR(std::atomic, progressiveEvalFlag, true) #endif @@ -192,14 +194,14 @@ CGAL_GLOBAL_STATE_VAR(CGAL::cpp11::atomic, progressiveEvalFlag, true) #ifdef CGAL_NO_ATOMIC CGAL_GLOBAL_STATE_VAR(bool, rationalReduceFlag, false) #else -CGAL_GLOBAL_STATE_VAR(CGAL::cpp11::atomic, rationalReduceFlag, false) +CGAL_GLOBAL_STATE_VAR(std::atomic, rationalReduceFlag, false) #endif /// default initial (bit) precision for AddSub Progressive Evaluation #ifdef CGAL_NO_ATOMIC CGAL_GLOBAL_STATE_VAR(long, defInitialProgressivePrec, 64) #else -CGAL_GLOBAL_STATE_VAR(CGAL::cpp11::atomic, defInitialProgressivePrec, 64) +CGAL_GLOBAL_STATE_VAR(std::atomic, defInitialProgressivePrec, 64) #endif ////////////////////////////////////////////////////////////// diff --git a/CGAL_Core/include/CGAL/CORE/CoreDefs_impl.h b/CGAL_Core/include/CGAL/CORE/CoreDefs_impl.h index b7436178b0a..d28326496f3 100644 --- a/CGAL_Core/include/CGAL/CORE/CoreDefs_impl.h +++ b/CGAL_Core/include/CGAL/CORE/CoreDefs_impl.h @@ -24,6 +24,8 @@ #include "CGAL/CORE/CoreDefs.h" +#include + namespace CORE { // Default Values @@ -50,7 +52,7 @@ int IOErrorFlag = 0; #ifdef CGAL_NO_ATOMIC bool AbortFlag = true; #else -CGAL::cpp11::atomic AbortFlag(true); +std::atomic AbortFlag(true); #endif /** @@ -61,7 +63,7 @@ CGAL::cpp11::atomic AbortFlag(true); #ifdef CGAL_NO_ATOMIC int InvalidFlag = 0; #else -CGAL::cpp11::atomic InvalidFlag(0); +std::atomic InvalidFlag(0); #endif /* ************************************************************ @@ -97,7 +99,7 @@ long EscapePrecFlag = 0; #ifdef CGAL_NO_ATOMIC bool EscapePrecWarning = true; #else -CGAL::cpp11::atomic EscapePrecWarning(true); +std::atomic EscapePrecWarning(true); #endif /** The Composite Precision [defAbsPrec, defRelPrec] @@ -117,7 +119,7 @@ extLong defRelPrec = 60; #ifdef CGAL_NO_ATOMIC long defBigFloatOutputDigits = 10; #else -CGAL::cpp11::atomic defBigFloatOutputDigits(10); +std::atomic defBigFloatOutputDigits(10); #endif /** NORMALLY, we like to make this equal to defBigFloatOutputDigits @@ -125,7 +127,7 @@ CGAL::cpp11::atomic defBigFloatOutputDigits(10); #ifdef CGAL_NO_ATOMIC long defOutputDigits = 10; #else -CGAL::cpp11::atomic defOutputDigits(10); // == defBigFloatOutputDigits; +std::atomic defOutputDigits(10); // == defBigFloatOutputDigits; #endif /** String Input Precision */ @@ -142,7 +144,7 @@ extLong defInputDigits = CORE_posInfty; #ifdef CGAL_NO_ATOMIC long defBigFloatInputDigits = 16; #else -CGAL::cpp11::atomic defBigFloatInputDigits(16); +std::atomic defBigFloatInputDigits(16); #endif /* ************************************************************ @@ -154,7 +156,7 @@ CGAL::cpp11::atomic defBigFloatInputDigits(16); #ifdef CGAL_NO_ATOMIC bool fpFilterFlag = true; #else -CGAL::cpp11::atomic fpFilterFlag(true); +std::atomic fpFilterFlag(true); #endif /** IncrementaL evaluation flag @@ -163,7 +165,7 @@ CGAL::cpp11::atomic fpFilterFlag(true); #ifdef CGAL_NO_ATOMIC bool incrementalEvalFlag = true; #else -CGAL::cpp11::atomic incrementalEvalFlag(true); +std::atomic incrementalEvalFlag(true); #endif /** Progressive evaluation flag @@ -171,7 +173,7 @@ CGAL::cpp11::atomic incrementalEvalFlag(true); #ifdef CGAL_NO_ATOMIC bool progressiveEvalFlag = true; #else -CGAL::cpp11::atomic progressiveEvalFlag(true); +std::atomic progressiveEvalFlag(true); #endif /** Initial progressive evaluation precision @@ -179,7 +181,7 @@ CGAL::cpp11::atomic progressiveEvalFlag(true); #ifdef CGAL_NO_ATOMIC long defInitialProgressivePrec = 64; #else -CGAL::cpp11::atomic defInitialProgressivePrec(64); +std::atomic defInitialProgressivePrec(64); #endif /** RATIONAL REDUCTION FLAG @@ -187,7 +189,7 @@ CGAL::cpp11::atomic defInitialProgressivePrec(64); #ifdef CGAL_NO_ATOMIC bool rationalReduceFlag = false; #else -CGAL::cpp11::atomic rationalReduceFlag(false); +std::atomic rationalReduceFlag(false); #endif #endif // CGAL_HEADER_ONLY diff --git a/Mesh_3/include/CGAL/Mesh_3/Mesher_3.h b/Mesh_3/include/CGAL/Mesh_3/Mesher_3.h index 718a730032d..1b50447e088 100644 --- a/Mesh_3/include/CGAL/Mesh_3/Mesher_3.h +++ b/Mesh_3/include/CGAL/Mesh_3/Mesher_3.h @@ -55,6 +55,7 @@ #include #include #include +#include namespace CGAL { namespace Mesh_3 { @@ -212,7 +213,7 @@ public: std::size_t maximal_number_of_vertices = 0, Mesh_error_code* error_code = 0 #ifndef CGAL_NO_ATOMIC - , CGAL::cpp11::atomic* stop_ptr = 0 + , std::atomic* stop_ptr = 0 #endif ); @@ -284,7 +285,7 @@ private: #ifndef CGAL_NO_ATOMIC /// Pointer to the atomic Boolean that can stop the process - CGAL::cpp11::atomic* const stop_ptr; + std::atomic* const stop_ptr; #endif #ifdef CGAL_LINKED_WITH_TBB @@ -343,7 +344,7 @@ Mesher_3::Mesher_3(C3T3& c3t3, std::size_t maximal_number_of_vertices, Mesh_error_code* error_code #ifndef CGAL_NO_ATOMIC - , CGAL::cpp11::atomic* stop_ptr + , std::atomic* stop_ptr #endif ) : Base(c3t3.bbox(), diff --git a/Mesh_3/include/CGAL/Mesh_3/Mesher_level.h b/Mesh_3/include/CGAL/Mesh_3/Mesher_level.h index 2da097ef8a5..77b1836df6a 100644 --- a/Mesh_3/include/CGAL/Mesh_3/Mesher_level.h +++ b/Mesh_3/include/CGAL/Mesh_3/Mesher_level.h @@ -36,7 +36,7 @@ # include #endif -#include +#include namespace CGAL { namespace Mesh_3 { @@ -676,7 +676,7 @@ public: void set_lock_ds(Lock_data_structure *) {} void set_worksharing_ds(WorksharingDataStructureType *) {} #ifndef CGAL_NO_ATOMIC - void set_stop_pointer(CGAL::cpp11::atomic*) {} + void set_stop_pointer(std::atomic*) {} #endif protected: @@ -1148,7 +1148,7 @@ public: } #ifndef CGAL_NO_ATOMIC - void set_stop_pointer(CGAL::cpp11::atomic* stop_ptr) + void set_stop_pointer(std::atomic* stop_ptr) { m_stop_ptr = stop_ptr; } @@ -1178,7 +1178,7 @@ protected: tbb::task *m_empty_root_task; #ifndef CGAL_NO_ATOMIC - CGAL::cpp11::atomic* m_stop_ptr; + std::atomic* m_stop_ptr; #endif private: diff --git a/Mesh_3/include/CGAL/Mesh_3/Protect_edges_sizing_field.h b/Mesh_3/include/CGAL/Mesh_3/Protect_edges_sizing_field.h index 0a5826774bd..fb0da075047 100644 --- a/Mesh_3/include/CGAL/Mesh_3/Protect_edges_sizing_field.h +++ b/Mesh_3/include/CGAL/Mesh_3/Protect_edges_sizing_field.h @@ -70,6 +70,7 @@ #include #include #include +#include namespace CGAL { namespace Mesh_3 { @@ -143,7 +144,7 @@ public: std::size_t maximal_number_of_vertices = 0, Mesh_error_code* error_code = 0 #ifndef CGAL_NO_ATOMIC - , CGAL::cpp11::atomic* stop_ptr = 0 + , std::atomic* stop_ptr = 0 #endif ); @@ -469,7 +470,7 @@ private: Mesh_error_code* const error_code_; #ifndef CGAL_NO_ATOMIC /// Pointer to the atomic Boolean that can stop the process - CGAL::cpp11::atomic* const stop_ptr_; + std::atomic* const stop_ptr_; #endif }; @@ -481,7 +482,7 @@ Protect_edges_sizing_field(C3T3& c3t3, const MD& domain, std::size_t maximal_number_of_vertices, Mesh_error_code* error_code #ifndef CGAL_NO_ATOMIC - , CGAL::cpp11::atomic* stop_ptr + , std::atomic* stop_ptr #endif ) : c3t3_(c3t3) diff --git a/Mesh_3/include/CGAL/Mesh_3/Refine_cells_3.h b/Mesh_3/include/CGAL/Mesh_3/Refine_cells_3.h index 30726de2fcc..6a234a15311 100644 --- a/Mesh_3/include/CGAL/Mesh_3/Refine_cells_3.h +++ b/Mesh_3/include/CGAL/Mesh_3/Refine_cells_3.h @@ -40,7 +40,7 @@ #include #include #include - +#include namespace CGAL { @@ -318,7 +318,7 @@ public: C3T3& c3t3, std::size_t maximal_number_of_vertices #ifndef CGAL_NO_ATOMIC - , CGAL::cpp11::atomic* stop_ptr + , std::atomic* stop_ptr #endif ); // For parallel @@ -331,7 +331,7 @@ public: WorksharingDataStructureType *worksharing_ds, std::size_t maximal_number_of_vertices #ifndef CGAL_NO_ATOMIC - , CGAL::cpp11::atomic* stop_ptr + , std::atomic* stop_ptr #endif ); @@ -572,7 +572,7 @@ private: #ifndef CGAL_NO_ATOMIC /// Pointer to the atomic Boolean that can stop the process - CGAL::cpp11::atomic* const m_stop_ptr; + std::atomic* const m_stop_ptr; #endif private: // Disabled copy constructor @@ -594,7 +594,7 @@ Refine_cells_3(Tr& triangulation, C3T3& c3t3, std::size_t maximal_number_of_vertices #ifndef CGAL_NO_ATOMIC - , CGAL::cpp11::atomic* stop_ptr + , std::atomic* stop_ptr #endif ) : Mesher_level* stop_ptr + , std::atomic* stop_ptr #endif ) : Mesher_level #include #include +#include namespace CGAL { @@ -254,7 +255,7 @@ public: const Criteria& criteria, std::size_t maximal_number_of_vertices #ifndef CGAL_NO_ATOMIC - , CGAL::cpp11::atomic* stop_ptr + , std::atomic* stop_ptr #endif ) : r_tr_(tr) @@ -608,7 +609,7 @@ protected: std::size_t m_maximal_number_of_vertices_; #ifndef CGAL_NO_ATOMIC /// Pointer to the atomic Boolean that can stop the process - CGAL::cpp11::atomic* const m_stop_ptr; + std::atomic* const m_stop_ptr; #endif }; // end class template Refine_facets_3_base @@ -776,7 +777,7 @@ public: int mesh_topology, std::size_t maximal_number_of_vertices #ifndef CGAL_NO_ATOMIC - , CGAL::cpp11::atomic* stop_ptr + , std::atomic* stop_ptr #endif ); // For parallel @@ -789,7 +790,7 @@ public: WorksharingDataStructureType *worksharing_ds, std::size_t maximal_number_of_vertices #ifndef CGAL_NO_ATOMIC - , CGAL::cpp11::atomic* stop_ptr + , std::atomic* stop_ptr #endif ); @@ -909,7 +910,7 @@ Refine_facets_3(Tr& triangulation, int mesh_topology, std::size_t maximal_number_of_vertices #ifndef CGAL_NO_ATOMIC - , CGAL::cpp11::atomic* stop_ptr + , std::atomic* stop_ptr #endif ) : Rf_base(triangulation, c3t3, oracle, criteria, mesh_topology, @@ -938,7 +939,7 @@ Refine_facets_3(Tr& triangulation, WorksharingDataStructureType *worksharing_ds, std::size_t maximal_number_of_vertices #ifndef CGAL_NO_ATOMIC - , CGAL::cpp11::atomic* stop_ptr + , std::atomic* stop_ptr #endif ) : Rf_base(triangulation, c3t3, oracle, criteria, maximal_number_of_vertices diff --git a/Mesh_3/include/CGAL/Mesh_3/Refine_facets_manifold_base.h b/Mesh_3/include/CGAL/Mesh_3/Refine_facets_manifold_base.h index aa6a83b9e0e..e68892bd600 100644 --- a/Mesh_3/include/CGAL/Mesh_3/Refine_facets_manifold_base.h +++ b/Mesh_3/include/CGAL/Mesh_3/Refine_facets_manifold_base.h @@ -30,6 +30,7 @@ #include #include +#include namespace CGAL { @@ -307,7 +308,7 @@ public: int mesh_topology, std::size_t maximal_number_of_vertices #ifndef CGAL_NO_ATOMIC - , CGAL::cpp11::atomic* stop_ptr + , std::atomic* stop_ptr #endif ) : Base(triangulation, diff --git a/Mesh_3/include/CGAL/make_mesh_3.h b/Mesh_3/include/CGAL/make_mesh_3.h index 6bc7be6c596..a75e120da69 100644 --- a/Mesh_3/include/CGAL/make_mesh_3.h +++ b/Mesh_3/include/CGAL/make_mesh_3.h @@ -32,6 +32,8 @@ #include #include +#include + namespace CGAL { namespace parameters { @@ -192,7 +194,7 @@ void init_c3t3_with_features(C3T3& c3t3, std::size_t maximal_number_of_vertices = 0, Mesh_error_code* pointer_to_error_code = 0 #ifndef CGAL_NO_ATOMIC - , CGAL::cpp11::atomic* pointer_to_stop = 0 + , std::atomic* pointer_to_stop = 0 #endif ) { diff --git a/Mesh_3/include/CGAL/refine_mesh_3.h b/Mesh_3/include/CGAL/refine_mesh_3.h index 4846b12c97e..acbf847b26b 100644 --- a/Mesh_3/include/CGAL/refine_mesh_3.h +++ b/Mesh_3/include/CGAL/refine_mesh_3.h @@ -31,6 +31,8 @@ #include +#include + namespace CGAL { namespace details { @@ -195,7 +197,7 @@ struct Manifold_options { // Various Mesh_3 option struct Mesh_3_options { #ifndef CGAL_NO_ATOMIC - typedef CGAL::cpp11::atomic* Pointer_to_stop_atomic_boolean_t; + typedef std::atomic* Pointer_to_stop_atomic_boolean_t; #else typedef bool* Pointer_to_stop_atomic_boolean_t; #endif diff --git a/Nef_3/include/CGAL/Nef_3/SNC_indexed_items.h b/Nef_3/include/CGAL/Nef_3/SNC_indexed_items.h index 7194fbae8ca..82740860553 100644 --- a/Nef_3/include/CGAL/Nef_3/SNC_indexed_items.h +++ b/Nef_3/include/CGAL/Nef_3/SNC_indexed_items.h @@ -23,6 +23,8 @@ #include #include +#include + #undef CGAL_NEF_DEBUG #define CGAL_NEF_DEBUG 83 #include @@ -39,7 +41,7 @@ class Index_generator { #ifdef CGAL_NO_ATOMIC static int unique; #else - static CGAL::cpp11::atomic unique; + static std::atomic unique; #endif return unique++; } diff --git a/Number_types/include/CGAL/Counted_number.h b/Number_types/include/CGAL/Counted_number.h index 02b3a1d111c..502a0e1d2a3 100644 --- a/Number_types/include/CGAL/Counted_number.h +++ b/Number_types/include/CGAL/Counted_number.h @@ -21,6 +21,7 @@ #include #include // for Root_of_selector #include +#include namespace CGAL { @@ -29,7 +30,7 @@ class Counted_number { #ifdef CGAL_NO_ATOMIC static unsigned long #else - static CGAL::cpp11::atomic + static std::atomic #endif s_neg_count, s_add_count, s_sub_count, s_mul_count, s_div_count, @@ -279,64 +280,64 @@ template< class NT > unsigned long Counted_number::s_mod_count = 0; #else template -CGAL::cpp11::atomic Counted_number::s_neg_count; +std::atomic Counted_number::s_neg_count; template -CGAL::cpp11::atomic Counted_number::s_add_count; +std::atomic Counted_number::s_add_count; template -CGAL::cpp11::atomic Counted_number::s_sub_count; +std::atomic Counted_number::s_sub_count; template -CGAL::cpp11::atomic Counted_number::s_mul_count; +std::atomic Counted_number::s_mul_count; template -CGAL::cpp11::atomic Counted_number::s_div_count; +std::atomic Counted_number::s_div_count; template -CGAL::cpp11::atomic Counted_number::s_eq_count; +std::atomic Counted_number::s_eq_count; template -CGAL::cpp11::atomic Counted_number::s_comp_count; +std::atomic Counted_number::s_comp_count; template< class NT > -CGAL::cpp11::atomic Counted_number::s_simplify_count; +std::atomic Counted_number::s_simplify_count; template< class NT > -CGAL::cpp11::atomic Counted_number::s_unit_part_count; +std::atomic Counted_number::s_unit_part_count; template< class NT > -CGAL::cpp11::atomic Counted_number::s_is_zero_count; +std::atomic Counted_number::s_is_zero_count; template< class NT > -CGAL::cpp11::atomic Counted_number::s_is_one_count; +std::atomic Counted_number::s_is_one_count; template< class NT > -CGAL::cpp11::atomic Counted_number::s_square_count; +std::atomic Counted_number::s_square_count; template< class NT > -CGAL::cpp11::atomic Counted_number::s_integral_division_count; +std::atomic Counted_number::s_integral_division_count; template< class NT > -CGAL::cpp11::atomic Counted_number::s_is_square_count; +std::atomic Counted_number::s_is_square_count; template< class NT > -CGAL::cpp11::atomic Counted_number::s_sqrt_count; +std::atomic Counted_number::s_sqrt_count; template< class NT > -CGAL::cpp11::atomic Counted_number::s_kth_root_count; +std::atomic Counted_number::s_kth_root_count; template< class NT > -CGAL::cpp11::atomic Counted_number::s_root_of_count; +std::atomic Counted_number::s_root_of_count; template< class NT > -CGAL::cpp11::atomic Counted_number::s_gcd_count; +std::atomic Counted_number::s_gcd_count; template< class NT > -CGAL::cpp11::atomic Counted_number::s_div_mod_count; +std::atomic Counted_number::s_div_mod_count; template< class NT > -CGAL::cpp11::atomic Counted_number::s_mod_count; +std::atomic Counted_number::s_mod_count; #endif diff --git a/Polyhedron/demo/Polyhedron/include/run_with_qprogressdialog.h b/Polyhedron/demo/Polyhedron/include/run_with_qprogressdialog.h index 932530e76ba..42345fb335a 100644 --- a/Polyhedron/demo/Polyhedron/include/run_with_qprogressdialog.h +++ b/Polyhedron/demo/Polyhedron/include/run_with_qprogressdialog.h @@ -6,6 +6,8 @@ #include "Callback_signaler.h" +#include + typedef CGAL::Parallel_if_available_tag Concurrency_tag; class Signal_callback @@ -111,7 +113,7 @@ void run_with_qprogressdialog (Functor& functor, #ifdef CGAL_HAS_STD_THREADS if (boost::is_convertible::value) { - CGAL::cpp11::thread thread (functor); + std::thread thread (functor); while (*signal_callback->latest_adv != 1. && *signal_callback->state) From 33cefe1be7db67010610aa3d35b68c92c5738d77 Mon Sep 17 00:00:00 2001 From: Maxime Gimeno Date: Fri, 7 May 2021 11:13:03 +0200 Subject: [PATCH 148/171] remove calls to cpp11::sleep_for() --- .../CGAL/Point_set_processing_3/internal/Callback_wrapper.h | 4 +++- Polyhedron/demo/Polyhedron/Use_ssh.cpp | 4 +++- Polyhedron/demo/Polyhedron/include/run_with_qprogressdialog.h | 4 +++- 3 files changed, 9 insertions(+), 3 deletions(-) diff --git a/Point_set_processing_3/include/CGAL/Point_set_processing_3/internal/Callback_wrapper.h b/Point_set_processing_3/include/CGAL/Point_set_processing_3/internal/Callback_wrapper.h index 266a7bcd306..bd20e2505ec 100644 --- a/Point_set_processing_3/include/CGAL/Point_set_processing_3/internal/Callback_wrapper.h +++ b/Point_set_processing_3/include/CGAL/Point_set_processing_3/internal/Callback_wrapper.h @@ -168,7 +168,9 @@ public: *m_interrupted = true; if (*m_interrupted) return; - cpp11::sleep_for (0.00001); + typedef std::chrono::nanoseconds nanoseconds; + nanoseconds ns (nanoseconds::rep (1000000000.0 * 0.00001)); + std::this_thread::sleep_for(ns); } if (m_callback) m_callback (1.); diff --git a/Polyhedron/demo/Polyhedron/Use_ssh.cpp b/Polyhedron/demo/Polyhedron/Use_ssh.cpp index 0b3d93db7b7..f6e63991b1d 100644 --- a/Polyhedron/demo/Polyhedron/Use_ssh.cpp +++ b/Polyhedron/demo/Polyhedron/Use_ssh.cpp @@ -302,7 +302,9 @@ bool push_file(ssh_session &session, //some versions of libssh don't copy everything without this. //This is the case for the official version on Ubuntu 18.04 std::chrono::duration timespan(size); - std::this_thread::sleep_for(timespan); + typedef std::chrono::nanoseconds nanoseconds; + nanoseconds ns (nanoseconds::rep (1000000000.0 * timespan)); + std::this_thread::sleep_for(ns); if (res != SSH_OK) { std::cerr<< "Can't write to remote file: %s\n" diff --git a/Polyhedron/demo/Polyhedron/include/run_with_qprogressdialog.h b/Polyhedron/demo/Polyhedron/include/run_with_qprogressdialog.h index 42345fb335a..f2657fda3f1 100644 --- a/Polyhedron/demo/Polyhedron/include/run_with_qprogressdialog.h +++ b/Polyhedron/demo/Polyhedron/include/run_with_qprogressdialog.h @@ -118,7 +118,9 @@ void run_with_qprogressdialog (Functor& functor, while (*signal_callback->latest_adv != 1. && *signal_callback->state) { - CGAL::cpp11::sleep_for (0.1); + typedef std::chrono::nanoseconds nanoseconds; + nanoseconds ns (nanoseconds::rep (1000000000.0 * 0.1)); + std::this_thread::sleep_for(ns); QApplication::processEvents (); } From 9872ac9cf843496cd1b41d66b5e5b9a4384f67ca Mon Sep 17 00:00:00 2001 From: Maxime Gimeno Date: Fri, 7 May 2021 11:16:50 +0200 Subject: [PATCH 149/171] Replace tbb::atomic --- Mesh_3/include/CGAL/Mesh_vertex_base_3.h | 2 +- Profiling_tools/include/CGAL/Profile_counter.h | 12 ++++++------ 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/Mesh_3/include/CGAL/Mesh_vertex_base_3.h b/Mesh_3/include/CGAL/Mesh_vertex_base_3.h index aeb3411a1e1..54829a080d3 100644 --- a/Mesh_3/include/CGAL/Mesh_vertex_base_3.h +++ b/Mesh_3/include/CGAL/Mesh_vertex_base_3.h @@ -81,7 +81,7 @@ public: } protected: - typedef tbb::atomic Erase_counter_type; + typedef std::atomic Erase_counter_type; Erase_counter_type m_erase_counter; }; diff --git a/Profiling_tools/include/CGAL/Profile_counter.h b/Profiling_tools/include/CGAL/Profile_counter.h index dfaacdb48f9..72f54bb7ad7 100644 --- a/Profiling_tools/include/CGAL/Profile_counter.h +++ b/Profiling_tools/include/CGAL/Profile_counter.h @@ -92,7 +92,7 @@ struct Profile_counter Profile_counter(const std::string & ss) : s(ss) { - i = 0; // needed here because of tbb::atomic + i = 0; // needed here because of std::atomic } void operator++() { ++i; } @@ -107,7 +107,7 @@ struct Profile_counter private: #ifdef CGAL_CONCURRENT_PROFILE - tbb::atomic i; + std::atomic i; #else unsigned int i; #endif @@ -167,7 +167,7 @@ struct Profile_branch_counter Profile_branch_counter(const std::string & ss) : s(ss) { - i = j = 0; // needed here because of tbb::atomic + i = j = 0; // needed here because of std::atomic } void operator++() { ++i; } @@ -183,7 +183,7 @@ struct Profile_branch_counter private: #ifdef CGAL_CONCURRENT_PROFILE - tbb::atomic i, j; + std::atomic i, j; #else unsigned int i, j; #endif @@ -196,7 +196,7 @@ struct Profile_branch_counter_3 Profile_branch_counter_3(const std::string & ss) : s(ss) { - i = j = k = 0; // needed here because of tbb::atomic + i = j = k = 0; // needed here because of std::atomic } void operator++() { ++i; } @@ -214,7 +214,7 @@ struct Profile_branch_counter_3 private: #ifdef CGAL_CONCURRENT_PROFILE - tbb::atomic i, j, k; + std::atomic i, j, k; #else unsigned int i, j, k; #endif From 1b5b61ab0ae7c14b64680374e45ec131b9609869 Mon Sep 17 00:00:00 2001 From: Maxime Gimeno Date: Fri, 7 May 2021 12:17:32 +0200 Subject: [PATCH 150/171] Add include --- Mesh_3/include/CGAL/Mesh_vertex_base_3.h | 1 + Profiling_tools/include/CGAL/Profile_counter.h | 1 + 2 files changed, 2 insertions(+) diff --git a/Mesh_3/include/CGAL/Mesh_vertex_base_3.h b/Mesh_3/include/CGAL/Mesh_vertex_base_3.h index 54829a080d3..627daa86db7 100644 --- a/Mesh_3/include/CGAL/Mesh_vertex_base_3.h +++ b/Mesh_3/include/CGAL/Mesh_vertex_base_3.h @@ -28,6 +28,7 @@ #include #include #include +#include namespace CGAL { diff --git a/Profiling_tools/include/CGAL/Profile_counter.h b/Profiling_tools/include/CGAL/Profile_counter.h index 72f54bb7ad7..537d7640bee 100644 --- a/Profiling_tools/include/CGAL/Profile_counter.h +++ b/Profiling_tools/include/CGAL/Profile_counter.h @@ -48,6 +48,7 @@ #include #include #include +#include #include From 9acf3d4b19ba040567e21de3a361c1021f586a5b Mon Sep 17 00:00:00 2001 From: Maxime Gimeno Date: Mon, 3 May 2021 15:37:20 +0200 Subject: [PATCH 151/171] Add missing fallbacks for IO functions and result_of --- BGL/include/CGAL/boost/graph/IO/INP.h | 20 ++++++++++++++++++- BGL/include/CGAL/boost/graph/IO/OFF.h | 6 ++++++ Installation/include/CGAL/config.h | 1 + .../include/CGAL/IO/write_xyz_points.h | 2 +- .../include/CGAL/Surface_mesh/IO/PLY.h | 5 +++++ 5 files changed, 32 insertions(+), 2 deletions(-) diff --git a/BGL/include/CGAL/boost/graph/IO/INP.h b/BGL/include/CGAL/boost/graph/IO/INP.h index fbc15b04d96..818e10386ed 100644 --- a/BGL/include/CGAL/boost/graph/IO/INP.h +++ b/BGL/include/CGAL/boost/graph/IO/INP.h @@ -96,8 +96,26 @@ bool write_INP(const std::string& fname, const std::string& type, const Graph& g return write_INP(fname, type, g, parameters::all_default()); } +#ifndef CGAL_NO_DEPRECATED_CODE +template +CGAL_DEPRECATED bool write_inp(std::ostream& os, + const FaceGraph& g, + std::string name, + std::string type, + const NamedParameters& np) +{ + return write_INP(os, name, type, g, np); +} +template +CGAL_DEPRECATED bool write_inp(std::ostream& os, + const FaceGraph& g, + std::string name, + std::string type) +{ + return write_INP(os, name, type, g, parameters::all_default()); +} +#endif /// \endcond - } // namespace CGAL #endif // CGAL_BGL_IO_INP_H diff --git a/BGL/include/CGAL/boost/graph/IO/OFF.h b/BGL/include/CGAL/boost/graph/IO/OFF.h index 57685046e79..e2d647d0c59 100644 --- a/BGL/include/CGAL/boost/graph/IO/OFF.h +++ b/BGL/include/CGAL/boost/graph/IO/OFF.h @@ -312,6 +312,12 @@ CGAL_DEPRECATED bool read_off(const char* fname, Graph& g) return read_off(fname, g, parameters::all_default()); } +template +CGAL_DEPRECATED bool read_off(const std::string& fname, Graph& g) +{ + return read_off(fname.c_str(), g, parameters::all_default()); +} + #endif // CGAL_NO_DEPRECATED_CODE //////////////////////////////////////////////////////////////////////////////////////////////////// diff --git a/Installation/include/CGAL/config.h b/Installation/include/CGAL/config.h index 76d6fd9366c..aa9724b90d5 100644 --- a/Installation/include/CGAL/config.h +++ b/Installation/include/CGAL/config.h @@ -641,6 +641,7 @@ namespace CGAL { using std::is_enum; using std::unordered_set; using std::unordered_map; + using std::result_of; } // namespace cpp0x = cpp11; diff --git a/Point_set_processing_3/include/CGAL/IO/write_xyz_points.h b/Point_set_processing_3/include/CGAL/IO/write_xyz_points.h index 5ccfa93d943..16c8d0e814d 100644 --- a/Point_set_processing_3/include/CGAL/IO/write_xyz_points.h +++ b/Point_set_processing_3/include/CGAL/IO/write_xyz_points.h @@ -324,7 +324,7 @@ CGAL_DEPRECATED bool write_xyz_points(std::ostream& os, const PointRange& points template CGAL_DEPRECATED bool write_xyz_points(std::ostream& os, const PointRange& points) { - return write_XYZ(os, points, parameters::all_default(points)); + return write_XYZ(os, points, parameters::all_default()); } /// \endcond diff --git a/Surface_mesh/include/CGAL/Surface_mesh/IO/PLY.h b/Surface_mesh/include/CGAL/Surface_mesh/IO/PLY.h index f19a3b9d9b2..0a8c631bb8f 100644 --- a/Surface_mesh/include/CGAL/Surface_mesh/IO/PLY.h +++ b/Surface_mesh/include/CGAL/Surface_mesh/IO/PLY.h @@ -1140,6 +1140,11 @@ CGAL_DEPRECATED bool write_ply(std::ostream& os, const Surface_mesh

& sm, cons return write_PLY(os, sm, comments); } +template +CGAL_DEPRECATED bool write_ply(std::ostream& os, const Surface_mesh

& sm) +{ + return write_PLY(os, sm, ""); +} #endif // CGAL_NO_DEPRECATED_CODE } // namespace CGAL From e775ed2ebc21b63a86235eed3dc7c6658b199f07 Mon Sep 17 00:00:00 2001 From: Maxime Gimeno Date: Tue, 4 May 2021 10:10:43 +0200 Subject: [PATCH 152/171] use CGAL/result_of instead of std::result_of in config.h --- Installation/include/CGAL/config.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Installation/include/CGAL/config.h b/Installation/include/CGAL/config.h index aa9724b90d5..cf339cadfe3 100644 --- a/Installation/include/CGAL/config.h +++ b/Installation/include/CGAL/config.h @@ -623,6 +623,7 @@ using std::max; # include # include # include +# include // namespace CGAL { // @@ -641,7 +642,6 @@ namespace CGAL { using std::is_enum; using std::unordered_set; using std::unordered_map; - using std::result_of; } // namespace cpp0x = cpp11; From 9533a9fea8e307d51b772318fd33ae9292da957f Mon Sep 17 00:00:00 2001 From: Maxime Gimeno Date: Tue, 4 May 2021 10:43:26 +0200 Subject: [PATCH 153/171] remove CGAL/result_of.h and move its content to config.h --- .../internal/Generic_random_point_generator.h | 1 - Installation/include/CGAL/config.h | 8 +- .../include/CGAL/Periodic_3_triangulation_3.h | 1 - ...ic_4_hyperbolic_Delaunay_triangulation_2.h | 1 - STL_Extension/include/CGAL/result_of.h | 73 ------------------- .../CGAL/Manhattan_distance_iso_box_point.h | 1 - .../include/CGAL/Regular_triangulation_3.h | 1 - 7 files changed, 7 insertions(+), 79 deletions(-) delete mode 100644 STL_Extension/include/CGAL/result_of.h diff --git a/Generator/include/CGAL/internal/Generic_random_point_generator.h b/Generator/include/CGAL/internal/Generic_random_point_generator.h index 76c52dd55cb..a161df1da76 100644 --- a/Generator/include/CGAL/internal/Generic_random_point_generator.h +++ b/Generator/include/CGAL/internal/Generic_random_point_generator.h @@ -18,7 +18,6 @@ #include #include #include -#include #include diff --git a/Installation/include/CGAL/config.h b/Installation/include/CGAL/config.h index cf339cadfe3..007ac147dcf 100644 --- a/Installation/include/CGAL/config.h +++ b/Installation/include/CGAL/config.h @@ -623,7 +623,6 @@ using std::max; # include # include # include -# include // namespace CGAL { // @@ -642,6 +641,13 @@ namespace CGAL { using std::is_enum; using std::unordered_set; using std::unordered_map; +#if CGAL_CXX20 || __cpp_lib_is_invocable>=201703L + template class result_of; + template + class result_of : public std::invoke_result { }; +#else + using std::result_of; +#endif } // namespace cpp0x = cpp11; diff --git a/Periodic_3_triangulation_3/include/CGAL/Periodic_3_triangulation_3.h b/Periodic_3_triangulation_3/include/CGAL/Periodic_3_triangulation_3.h index 380e9b70f86..579dc2edede 100644 --- a/Periodic_3_triangulation_3/include/CGAL/Periodic_3_triangulation_3.h +++ b/Periodic_3_triangulation_3/include/CGAL/Periodic_3_triangulation_3.h @@ -22,7 +22,6 @@ #include #include -#include #include #include #include diff --git a/Periodic_4_hyperbolic_triangulation_2/include/CGAL/Periodic_4_hyperbolic_Delaunay_triangulation_2.h b/Periodic_4_hyperbolic_triangulation_2/include/CGAL/Periodic_4_hyperbolic_Delaunay_triangulation_2.h index 0c74a7a8be4..3b17771004c 100644 --- a/Periodic_4_hyperbolic_triangulation_2/include/CGAL/Periodic_4_hyperbolic_Delaunay_triangulation_2.h +++ b/Periodic_4_hyperbolic_triangulation_2/include/CGAL/Periodic_4_hyperbolic_Delaunay_triangulation_2.h @@ -24,7 +24,6 @@ #include #include -#include #include #include diff --git a/STL_Extension/include/CGAL/result_of.h b/STL_Extension/include/CGAL/result_of.h deleted file mode 100644 index 863ddb90806..00000000000 --- a/STL_Extension/include/CGAL/result_of.h +++ /dev/null @@ -1,73 +0,0 @@ -// Copyright (c) 2013 -// Utrecht University (The Netherlands), -// ETH Zurich (Switzerland), -// INRIA Sophia-Antipolis (France), -// Max-Planck-Institute Saarbruecken (Germany), -// and Tel-Aviv University (Israel). All rights reserved. -// -// This file is part of CGAL (www.cgal.org) -// -// $URL$ -// $Id$ -// SPDX-License-Identifier: LGPL-3.0-or-later OR LicenseRef-Commercial -// -// -// Author(s) : Sebastien Loriot - - -#ifndef CGAL_RESULT_OF_H -#define CGAL_RESULT_OF_H - -#include -#include - -#if CGAL_CXX20 || __cpp_lib_is_invocable>=201703L - - // C++>=17 - -#elif CGAL_CXX11 - - #include - -#else // C++<11 - - // Address the warning C4003: not enough actual parameters for macro 'BOOST_PP_SEQ_DETAIL_IS_NOT_EMPTY' - // result_of.hpp includes files from boost/preprocessor - // This concerns boost 1_65_1 - #if defined(BOOST_MSVC) - #pragma warning(push) - #pragma warning(disable: 4003) - #endif - #include - #if defined(BOOST_MSVC) - #pragma warning(pop) - #endif - #include - -#endif // end C++<11 - -namespace CGAL { -namespace cpp11 { - -#if CGAL_CXX20 || __cpp_lib_is_invocable>=201703L - - template class result_of; - template - class result_of : public std::invoke_result { }; - -#elif CGAL_CXX11 - - using std::result_of; - -#else // C++<11 - - using boost::result_of; - -#endif // end C++<11 - -} // end cpp11 -} // end CGAL - -#include - -#endif // CGAL_RESULT_OF_H diff --git a/Spatial_searching/include/CGAL/Manhattan_distance_iso_box_point.h b/Spatial_searching/include/CGAL/Manhattan_distance_iso_box_point.h index 16ffe439eaa..cd348d178e3 100644 --- a/Spatial_searching/include/CGAL/Manhattan_distance_iso_box_point.h +++ b/Spatial_searching/include/CGAL/Manhattan_distance_iso_box_point.h @@ -17,7 +17,6 @@ #include -#include #include #include #include diff --git a/Triangulation_3/include/CGAL/Regular_triangulation_3.h b/Triangulation_3/include/CGAL/Regular_triangulation_3.h index 34186b034a0..c65d42e9bf8 100644 --- a/Triangulation_3/include/CGAL/Regular_triangulation_3.h +++ b/Triangulation_3/include/CGAL/Regular_triangulation_3.h @@ -38,7 +38,6 @@ #include #include #include -#include #ifndef CGAL_TRIANGULATION_3_DONT_INSERT_RANGE_OF_POINTS_WITH_INFO #include From 902802713162264d66b675c989457dd74c876671 Mon Sep 17 00:00:00 2001 From: Maxime Gimeno Date: Fri, 7 May 2021 12:54:40 +0200 Subject: [PATCH 154/171] Restore result_of.h and deprecate it --- STL_Extension/include/CGAL/result_of.h | 76 ++++++++++++++++++++++++++ 1 file changed, 76 insertions(+) create mode 100644 STL_Extension/include/CGAL/result_of.h diff --git a/STL_Extension/include/CGAL/result_of.h b/STL_Extension/include/CGAL/result_of.h new file mode 100644 index 00000000000..87329e362b7 --- /dev/null +++ b/STL_Extension/include/CGAL/result_of.h @@ -0,0 +1,76 @@ +// Copyright (c) 2013 +// Utrecht University (The Netherlands), +// ETH Zurich (Switzerland), +// INRIA Sophia-Antipolis (France), +// Max-Planck-Institute Saarbruecken (Germany), +// and Tel-Aviv University (Israel). All rights reserved. +// +// This file is part of CGAL (www.cgal.org) +// +// $URL$ +// $Id$ +// SPDX-License-Identifier: LGPL-3.0-or-later OR LicenseRef-Commercial +// +// +// Author(s) : Sebastien Loriot + + +#ifndef CGAL_RESULT_OF_H +#define CGAL_RESULT_OF_H + +#define CGAL_DEPRECATED_HEADER "" +#define CGAL_REPLACEMENT_HEADER "" + +#include +#include + +#if CGAL_CXX20 || __cpp_lib_is_invocable>=201703L + + // C++>=17 + +#elif CGAL_CXX11 + + #include + +#else // C++<11 + + // Address the warning C4003: not enough actual parameters for macro 'BOOST_PP_SEQ_DETAIL_IS_NOT_EMPTY' + // result_of.hpp includes files from boost/preprocessor + // This concerns boost 1_65_1 + #if defined(BOOST_MSVC) + #pragma warning(push) + #pragma warning(disable: 4003) + #endif + #include + #if defined(BOOST_MSVC) + #pragma warning(pop) + #endif + #include + +#endif // end C++<11 + +namespace CGAL { +namespace cpp11 { + +#if CGAL_CXX20 || __cpp_lib_is_invocable>=201703L + + template class result_of; + template + class result_of : public std::invoke_result { }; + +#elif CGAL_CXX11 + + using std::result_of; + +#else // C++<11 + + using boost::result_of; + +#endif // end C++<11 + +} // end cpp11 +} // end CGAL + +#include + +#endif // CGAL_RESULT_OF_H From a6b05d083efd299ec0d5dfb8f68de38cc13aab61 Mon Sep 17 00:00:00 2001 From: Giles Bathgate Date: Fri, 7 May 2021 22:59:28 +0100 Subject: [PATCH 155/171] Use has_on_after_intersection in Sphere_segment --- Nef_S2/include/CGAL/Nef_S2/Sphere_segment.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Nef_S2/include/CGAL/Nef_S2/Sphere_segment.h b/Nef_S2/include/CGAL/Nef_S2/Sphere_segment.h index d9404603373..2db237e33dc 100644 --- a/Nef_S2/include/CGAL/Nef_S2/Sphere_segment.h +++ b/Nef_S2/include/CGAL/Nef_S2/Sphere_segment.h @@ -177,7 +177,7 @@ void split_halfcircle(Sphere_segment& s1, Plane_3 h(Point_3(0,0,0),(target()-CGAL::ORIGIN)); Sphere_point p = CGAL::intersection(sphere_circle(),Sphere_circle(h)); - if ( !has_on(p) ) p = p.antipode(); + if ( !has_on_after_intersection(p) ) p = p.antipode(); s1 = Sphere_segment(this->ptr()->ps_,p,this->ptr()->c_); s2 = Sphere_segment(p,this->ptr()->pt_,this->ptr()->c_); } From 1b6548b0cc064463d381a661b1865a8da653009b Mon Sep 17 00:00:00 2001 From: albert-github Date: Mon, 10 May 2021 10:59:19 +0200 Subject: [PATCH 156/171] Extra white space at bottom of page Below the bottom blue block we see for the packages some extra white space. For the Manual page this white space is not present. The reason is the placing of the "hack.js" code. --- Documentation/doc/resources/1.8.20/header_package.html | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Documentation/doc/resources/1.8.20/header_package.html b/Documentation/doc/resources/1.8.20/header_package.html index 8bd4b964ccb..007d84e7b10 100644 --- a/Documentation/doc/resources/1.8.20/header_package.html +++ b/Documentation/doc/resources/1.8.20/header_package.html @@ -12,6 +12,7 @@ + @@ -41,7 +42,6 @@ MathJax.Hub.Config({ }); $mathjax - $extrastylesheet From 991099cc6312b2c701ace98f9c38ee48448d0597 Mon Sep 17 00:00:00 2001 From: Mael Date: Tue, 11 May 2021 09:12:19 +0200 Subject: [PATCH 157/171] Fix assertion macro --- .../internal/arc_on_sphere_2_subsampling.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Triangulation_on_sphere_2/include/CGAL/Triangulation_on_sphere_2/internal/arc_on_sphere_2_subsampling.h b/Triangulation_on_sphere_2/include/CGAL/Triangulation_on_sphere_2/internal/arc_on_sphere_2_subsampling.h index b04b2552000..271421e5b02 100644 --- a/Triangulation_on_sphere_2/include/CGAL/Triangulation_on_sphere_2/internal/arc_on_sphere_2_subsampling.h +++ b/Triangulation_on_sphere_2/include/CGAL/Triangulation_on_sphere_2/internal/arc_on_sphere_2_subsampling.h @@ -40,7 +40,7 @@ double get_theta( typename Kernel::Point_3& pt, typedef Eigen::Matrix Matrix; typedef Eigen::Matrix Col; #else - CGAL_static_assertion(false, "Eigen is required to perform arc subsampling!"); + CGAL_static_assertion_msg(false, "Eigen is required to perform arc subsampling!"); #endif auto V1c = V1.cartesian_begin(), V2c = V2.cartesian_begin(), V3c = V3.cartesian_begin(); From f6cefea66a4ce4ada9bd484227a3c910fdc0145c Mon Sep 17 00:00:00 2001 From: Maxime Gimeno Date: Tue, 11 May 2021 09:21:58 +0200 Subject: [PATCH 158/171] Add required constructors to Mesh_vertex_base_3 --- Mesh_3/include/CGAL/Mesh_vertex_base_3.h | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/Mesh_3/include/CGAL/Mesh_vertex_base_3.h b/Mesh_3/include/CGAL/Mesh_vertex_base_3.h index 627daa86db7..caa4ef18844 100644 --- a/Mesh_3/include/CGAL/Mesh_vertex_base_3.h +++ b/Mesh_3/include/CGAL/Mesh_vertex_base_3.h @@ -66,6 +66,13 @@ template <> class Mesh_vertex_base_3_base { public: + Mesh_vertex_base_3_base() + {} + + Mesh_vertex_base_3_base( const Mesh_vertex_base_3_base& c) + { + m_erase_counter.store(c.erase_counter()); + } // Erase counter (cf. Compact_container) unsigned int erase_counter() const From 8de892ff00f4f82cf284739f08a3047c076a9cb4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mael=20Rouxel-Labb=C3=A9?= Date: Wed, 12 May 2021 10:05:26 +0200 Subject: [PATCH 159/171] Rework Eigen detection in arc subsampling code --- .../internal/arc_on_sphere_2_subsampling.h | 32 ++++++++++++++----- 1 file changed, 24 insertions(+), 8 deletions(-) diff --git a/Triangulation_on_sphere_2/include/CGAL/Triangulation_on_sphere_2/internal/arc_on_sphere_2_subsampling.h b/Triangulation_on_sphere_2/include/CGAL/Triangulation_on_sphere_2/internal/arc_on_sphere_2_subsampling.h index 271421e5b02..10ca5b89fc7 100644 --- a/Triangulation_on_sphere_2/include/CGAL/Triangulation_on_sphere_2/internal/arc_on_sphere_2_subsampling.h +++ b/Triangulation_on_sphere_2/include/CGAL/Triangulation_on_sphere_2/internal/arc_on_sphere_2_subsampling.h @@ -16,6 +16,7 @@ #include #include +#include #ifdef CGAL_EIGEN3_ENABLED #include @@ -28,20 +29,35 @@ namespace CGAL { namespace Triangulations_on_sphere_2 { namespace internal { -template -double get_theta( typename Kernel::Point_3& pt, - typename Kernel::Vector_3& V1, - typename Kernel::Vector_3& V2, - typename Kernel::Vector_3& V3) +template +double get_theta(typename Kernel::Point_3& pt, + typename Kernel::Vector_3& V1, + typename Kernel::Vector_3& V2, + typename Kernel::Vector_3& V3) { typedef typename Kernel::FT FT; + typedef typename Default::Get Matrix; - typedef Eigen::Matrix Col; + Eigen::Matrix #else - CGAL_static_assertion_msg(false, "Eigen is required to perform arc subsampling!"); + EigenlessDefault #endif + >::type Matrix; + + typedef typename Default::Get +#else + EigenlessDefault +#endif + >::type Col; + + CGAL_static_assertion_msg(!(std::is_same::value), + "Eigen is required to perform arc subsampling!"); auto V1c = V1.cartesian_begin(), V2c = V2.cartesian_begin(), V3c = V3.cartesian_begin(); From 96fe2393a8f1cdb6e910ca92f050ab267583f42c Mon Sep 17 00:00:00 2001 From: Maxime Gimeno Date: Wed, 12 May 2021 10:45:34 +0200 Subject: [PATCH 160/171] Fix chrono in Use_ssh --- Polyhedron/demo/Polyhedron/Use_ssh.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Polyhedron/demo/Polyhedron/Use_ssh.cpp b/Polyhedron/demo/Polyhedron/Use_ssh.cpp index f6e63991b1d..cb6a707aa15 100644 --- a/Polyhedron/demo/Polyhedron/Use_ssh.cpp +++ b/Polyhedron/demo/Polyhedron/Use_ssh.cpp @@ -303,7 +303,7 @@ bool push_file(ssh_session &session, //This is the case for the official version on Ubuntu 18.04 std::chrono::duration timespan(size); typedef std::chrono::nanoseconds nanoseconds; - nanoseconds ns (nanoseconds::rep (1000000000.0 * timespan)); + nanoseconds ns (nanoseconds::rep (1000000000 * timespan)); std::this_thread::sleep_for(ns); if (res != SSH_OK) { From cf69d3226931f39ecf918ec66cb201ae270172d4 Mon Sep 17 00:00:00 2001 From: Maxime Gimeno Date: Wed, 12 May 2021 11:40:20 +0200 Subject: [PATCH 161/171] add missing const in read_OFF --- Surface_mesh/include/CGAL/Surface_mesh/IO/OFF.h | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Surface_mesh/include/CGAL/Surface_mesh/IO/OFF.h b/Surface_mesh/include/CGAL/Surface_mesh/IO/OFF.h index 662ccbbf7a3..eea075e92ac 100644 --- a/Surface_mesh/include/CGAL/Surface_mesh/IO/OFF.h +++ b/Surface_mesh/include/CGAL/Surface_mesh/IO/OFF.h @@ -354,7 +354,7 @@ bool read_OFF(std::istream& is, template -bool read_OFF(std::string& fname, +bool read_OFF(const std::string& fname, Surface_mesh& sm, const CGAL_BGL_NP_CLASS& np) { @@ -364,7 +364,7 @@ bool read_OFF(std::string& fname, template -bool read_OFF(std::string& fname, +bool read_OFF(const std::string& fname, Surface_mesh& sm) { return read_OFF(fname, sm, parameters::all_default()); From e15e25d996f5a73dfb682858df9df318abbeb4e7 Mon Sep 17 00:00:00 2001 From: Laurent Rineau Date: Wed, 12 May 2021 12:39:35 +0200 Subject: [PATCH 162/171] Fix: Constrained edges, on write_VTU/ASCII, were completely missing! --- Mesh_2/include/CGAL/IO/write_vtu.h | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) diff --git a/Mesh_2/include/CGAL/IO/write_vtu.h b/Mesh_2/include/CGAL/IO/write_vtu.h index 0689edddd17..ecc505101df 100644 --- a/Mesh_2/include/CGAL/IO/write_vtu.h +++ b/Mesh_2/include/CGAL/IO/write_vtu.h @@ -87,6 +87,17 @@ write_cells_tag_2(std::ostream& os, os << V[fit->vertex(1)] << " "; } } + for(typename CDT::Constrained_edges_iterator + cei = tr.constrained_edges_begin(), + end = tr.constrained_edges_end(); + cei != end; ++cei) + { + for(int i=0; i<3; ++i) + { + if(i != cei->second) + os << V[cei->first->vertex(i)] << " "; + } + } os << " \n"; } @@ -115,6 +126,13 @@ write_cells_tag_2(std::ostream& os, os << cells_offset << " "; } } + for(std::size_t i = 0, end = std::distance(tr.constrained_edges_begin(), + tr.constrained_edges_end()); + i < end; ++i) + { + cells_offset += 2; + os << cells_offset << " "; + } os << " \n"; } @@ -142,6 +160,12 @@ write_cells_tag_2(std::ostream& os, os << "5 "; } } + for(std::size_t i = 0, end = std::distance(tr.constrained_edges_begin(), + tr.constrained_edges_end()); + i < end; ++i) + { + os << "3 "; + } os << " \n"; } os << " \n"; From a91c0ed052299fd32568223d42b2557da51b2887 Mon Sep 17 00:00:00 2001 From: Giles Bathgate Date: Fri, 14 May 2021 18:17:01 +0100 Subject: [PATCH 163/171] Replace implementation with traits --- Nef_3/include/CGAL/Nef_3/bounded_side_3.h | 105 ++++------------------ 1 file changed, 16 insertions(+), 89 deletions(-) diff --git a/Nef_3/include/CGAL/Nef_3/bounded_side_3.h b/Nef_3/include/CGAL/Nef_3/bounded_side_3.h index 9cd7a5eba2e..691965fac24 100644 --- a/Nef_3/include/CGAL/Nef_3/bounded_side_3.h +++ b/Nef_3/include/CGAL/Nef_3/bounded_side_3.h @@ -18,109 +18,36 @@ #include -#include +#include #include -#include -#include -#include - -#undef CGAL_NEF_DEBUG -#define CGAL_NEF_DEBUG 17 -#include +#include +#include +#include namespace CGAL { -template -Point_2 point_3_get_x_y_point_2(const Point_3& p, const Homogeneous_tag&) { - return( Point_2(p.hx(), p.hy(), p.hw()) ); -} - -template -Point_2 point_3_get_y_z_point_2(const Point_3& p, const Homogeneous_tag&) { - return( Point_2(p.hy(), p.hz(), p.hw()) ); -} - -template -Point_2 point_3_get_z_x_point_2(const Point_3& p, const Homogeneous_tag&) { - return( Point_2(p.hz(), p.hx(), p.hw()) ); -} - -template -Point_2 point_3_get_x_y_point_2(const Point_3& p, const Cartesian_tag&) { - return( Point_2(p.x(), p.y()) ); -} - -template -Point_2 point_3_get_y_z_point_2(const Point_3& p, const Cartesian_tag&) { - return( Point_2(p.y(), p.z()) ); -} - -template -Point_2 point_3_get_z_x_point_2(const Point_3& p, const Cartesian_tag&) { - return( Point_2(p.z(), p.x()) ); -} - -template -Point_2 point_3_get_x_y_point_2(const Point_3& p) { - return point_3_get_x_y_point_2(p,typename R::Kernel_tag()); -} - -template -Point_2 point_3_get_y_z_point_2(const Point_3& p) { - return point_3_get_y_z_point_2(p,typename R::Kernel_tag()); -} - -template -Point_2 point_3_get_z_x_point_2(const Point_3& p) { - return point_3_get_z_x_point_2(p,typename R::Kernel_tag()); -} - template Bounded_side bounded_side_3(IteratorForward first, IteratorForward last, const Point_3& point, - typename R::Plane_3 plane = typename R::Plane_3(0,0,0,0)) { - typedef typename R::Point_2 Point_2; - typedef typename R::Point_3 Point_3; - typedef typename R::Plane_3 Plane_3; + const Plane_3& plane) +{ + typedef typename CGAL::Projection_traits_yz_3 YZ; + typedef typename CGAL::Projection_traits_xz_3 XZ; + typedef typename CGAL::Projection_traits_xy_3 XY; - if(plane == Plane_3(0,0,0,0)) { - // TO TEST: code never tested - IteratorForward p(first); - Point_3 p0(*(p++)); - CGAL_assertion(p != last); - Point_3 p1(*(p++)); - CGAL_assertion(p != last); - Point_3 p2(*(p++)); - plane = Plane_3(p0, p1, p2); - - /* since we just need to project the points to a non-perpendicular plane - we don't need to care about the plane orientation */ - } + CGAL_assertion(!plane.is_degenerate()); typename R::Non_zero_dimension_3 non_zero_dimension_3; int dir = non_zero_dimension_3(plane.orthogonal_vector()); - - CGAL_assertion(!plane.is_degenerate()); - Point_2 (*t)(const Point_3&); - - if(dir == 0){ - t = &point_3_get_y_z_point_2< Point_2, Point_3, R>; - }else if(dir == 1){ - t = &point_3_get_z_x_point_2< Point_2, Point_3, R>; - }else{ - t = &point_3_get_x_y_point_2< Point_2, Point_3, R>; + if(dir == 0) { + return bounded_side_2(first, last, point, YZ()); + } else if(dir == 1) { + return bounded_side_2(first, last, point, XZ()); + } else { + return bounded_side_2(first, last, point, XY()); } - - std::vector< Point_2> points; - CGAL_NEF_TRACEN("facet:"); - for( ; first != last; ++first ) { - CGAL_NEF_TRACEN(t(*first)<<" "<<*first); - points.push_back( t(*first)); - } - Bounded_side side = bounded_side_2( points.begin(), points.end(), t(point)); - return side; } } //namespace CGAL From c2727417144e32c025d52d2acd82f6a140d13819 Mon Sep 17 00:00:00 2001 From: Maxime Gimeno Date: Mon, 17 May 2021 11:41:56 +0200 Subject: [PATCH 164/171] Fix sleep_for() call in Use_ssh.cpp --- Polyhedron/demo/Polyhedron/Use_ssh.cpp | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/Polyhedron/demo/Polyhedron/Use_ssh.cpp b/Polyhedron/demo/Polyhedron/Use_ssh.cpp index cb6a707aa15..0b3d93db7b7 100644 --- a/Polyhedron/demo/Polyhedron/Use_ssh.cpp +++ b/Polyhedron/demo/Polyhedron/Use_ssh.cpp @@ -302,9 +302,7 @@ bool push_file(ssh_session &session, //some versions of libssh don't copy everything without this. //This is the case for the official version on Ubuntu 18.04 std::chrono::duration timespan(size); - typedef std::chrono::nanoseconds nanoseconds; - nanoseconds ns (nanoseconds::rep (1000000000 * timespan)); - std::this_thread::sleep_for(ns); + std::this_thread::sleep_for(timespan); if (res != SSH_OK) { std::cerr<< "Can't write to remote file: %s\n" From 0b229ae0430b69231067da224ec26aaca6859101 Mon Sep 17 00:00:00 2001 From: Maxime Gimeno Date: Mon, 17 May 2021 11:57:44 +0200 Subject: [PATCH 165/171] move result_of out of deprecated_code. It is not deprecated, we need the wokaround for c++20 --- Installation/include/CGAL/config.h | 17 +++++++++-------- 1 file changed, 9 insertions(+), 8 deletions(-) diff --git a/Installation/include/CGAL/config.h b/Installation/include/CGAL/config.h index 007ac147dcf..a848194d68b 100644 --- a/Installation/include/CGAL/config.h +++ b/Installation/include/CGAL/config.h @@ -641,13 +641,6 @@ namespace CGAL { using std::is_enum; using std::unordered_set; using std::unordered_map; -#if CGAL_CXX20 || __cpp_lib_is_invocable>=201703L - template class result_of; - template - class result_of : public std::invoke_result { }; -#else - using std::result_of; -#endif } // namespace cpp0x = cpp11; @@ -659,7 +652,15 @@ namespace CGAL { // Typedef for the type of nullptr. typedef const void * Nullptr_t; // Anticipate C++0x's std::nullptr_t - +namespace cpp11{ +#if CGAL_CXX20 || __cpp_lib_is_invocable>=201703L + template class result_of; + template + class result_of : public std::invoke_result { }; +#else + using std::result_of; +#endif +}//namespace cpp11 } //namespace CGAL //Support for c++11 noexcept From 35bbd7831ec12d09dba4df7d3b95dab26b471e05 Mon Sep 17 00:00:00 2001 From: Maxime Gimeno Date: Mon, 17 May 2021 13:43:59 +0200 Subject: [PATCH 166/171] If there was a problem in doc_with_postprocessing, stop the process qand post a comment with the issues --- .github/workflows/build_doc.yml | 27 ++++++++++++++++++++++++--- 1 file changed, 24 insertions(+), 3 deletions(-) diff --git a/.github/workflows/build_doc.yml b/.github/workflows/build_doc.yml index 3eb50310963..40c2a7a4c33 100644 --- a/.github/workflows/build_doc.yml +++ b/.github/workflows/build_doc.yml @@ -50,7 +50,7 @@ jobs: run: | set -x sudo apt-get update && sudo apt-get install -y graphviz ssh bibtex2html - sudo pip install lxml + sudo pip install lxml sudo pip install 'pyquery==1.4.1' # it seems to be the last py2 compatible version wget --no-verbose -O doxygen_exe https://cgal.geometryfactory.com/~mgimeno/doxygen/build_1_8_13/bin/doxygen sudo mv doxygen_exe /usr/bin/doxygen @@ -65,6 +65,7 @@ jobs: mkdir -p build_doc && cd build_doc && cmake ../Documentation/doc - name: Build and Upload Doc + id: build_and_run if: steps.get_round.outputs.result != 'stop' run: | set -ex @@ -77,7 +78,13 @@ jobs: if [ "$LIST_OF_PKGS" = "" ]; then exit 1 fi - cd build_doc && make -j2 doc && make -j2 doc_with_postprocessing + cd build_doc && make -j2 doc + make -j2 doc_with_postprocessing 2>tmp.log + if [ -s tmp.log ]; then + content=`cat ./build_doc/tmp.log` + echo ::set-output name=DoxygenError::$(cat tmp.log) + exit 1 + fi cd .. git clone https://CGAL:${{ secrets.PUSH_TO_CGAL_GITHUB_IO_TOKEN }}@github.com/CGAL/cgal.github.io.git mkdir -p cgal.github.io/${PR_NUMBER}/$ROUND @@ -99,7 +106,7 @@ jobs: - name: Post address uses: actions/github-script@v3 - if: steps.get_round.outputs.result != 'stop' + if: ${{ success() && steps.get_round.outputs.result != 'stop' }} with: script: | const address = "The documentation is built. It will be available, after a few minutes, here : https://cgal.github.io/${{ steps.get_pr_number.outputs.result }}/${{ steps.get_round.outputs.result }}/Manual/index.html" @@ -109,3 +116,17 @@ jobs: issue_number: ${{ github.event.issue.number }}, body: address }); + + - name: Post error + uses: actions/github-script@v3 + if: ${{ failure() && steps.get_round.outputs.result != 'stop' }} + with: + script: | + const error = "${{steps.build_and_run.outputs.DoxygenError}}" + const msg = "There was an error while building the doc: \n"+error + github.issues.createComment({ + owner: "CGAL", + repo: "cgal", + issue_number: ${{ github.event.issue.number }}, + body: msg + }); From 17ac2551086ec5516071ee95120fbb9748f1b89d Mon Sep 17 00:00:00 2001 From: Maxime Gimeno Date: Tue, 18 May 2021 15:43:59 +0200 Subject: [PATCH 167/171] Fix calls t cpp11:atomic stuff --- Mesh_3/include/CGAL/Mesh_3/Mesher_3.h | 2 +- Mesh_3/include/CGAL/Mesh_3/Mesher_level.h | 2 +- .../CGAL/Mesh_3/Protect_edges_sizing_field.h | 2 +- Mesh_3/include/CGAL/Mesh_3/Refine_cells_3.h | 2 +- Mesh_3/include/CGAL/Mesh_3/Refine_facets_3.h | 2 +- .../CGAL/Mesh_3/Refine_facets_manifold_base.h | 2 +- .../internal/Callback_wrapper.h | 23 ++++++++++--------- 7 files changed, 18 insertions(+), 17 deletions(-) diff --git a/Mesh_3/include/CGAL/Mesh_3/Mesher_3.h b/Mesh_3/include/CGAL/Mesh_3/Mesher_3.h index 1b50447e088..0c8ba5379ef 100644 --- a/Mesh_3/include/CGAL/Mesh_3/Mesher_3.h +++ b/Mesh_3/include/CGAL/Mesh_3/Mesher_3.h @@ -309,7 +309,7 @@ private: bool forced_stop() const { #ifndef CGAL_NO_ATOMIC if(stop_ptr != 0 && - stop_ptr->load(CGAL::cpp11::memory_order_acquire) == true) + stop_ptr->load(std::memory_order_acquire) == true) { if(error_code_ != 0) *error_code_ = CGAL_MESH_3_STOPPED; return true; diff --git a/Mesh_3/include/CGAL/Mesh_3/Mesher_level.h b/Mesh_3/include/CGAL/Mesh_3/Mesher_level.h index 77b1836df6a..f2820581e7a 100644 --- a/Mesh_3/include/CGAL/Mesh_3/Mesher_level.h +++ b/Mesh_3/include/CGAL/Mesh_3/Mesher_level.h @@ -1157,7 +1157,7 @@ public: bool forced_stop() const { #ifndef CGAL_NO_ATOMIC if(m_stop_ptr != 0 && - m_stop_ptr->load(CGAL::cpp11::memory_order_acquire) == true) + m_stop_ptr->load(std::memory_order_acquire) == true) { CGAL_assertion(m_empty_root_task != 0); m_empty_root_task->cancel_group_execution(); diff --git a/Mesh_3/include/CGAL/Mesh_3/Protect_edges_sizing_field.h b/Mesh_3/include/CGAL/Mesh_3/Protect_edges_sizing_field.h index fb0da075047..e95be1e41ba 100644 --- a/Mesh_3/include/CGAL/Mesh_3/Protect_edges_sizing_field.h +++ b/Mesh_3/include/CGAL/Mesh_3/Protect_edges_sizing_field.h @@ -157,7 +157,7 @@ public: bool forced_stop() const { #ifndef CGAL_NO_ATOMIC if(stop_ptr_ != 0 && - stop_ptr_->load(CGAL::cpp11::memory_order_acquire) == true) + stop_ptr_->load(std::memory_order_acquire) == true) { if(error_code_ != 0) *error_code_ = CGAL_MESH_3_STOPPED; return true; diff --git a/Mesh_3/include/CGAL/Mesh_3/Refine_cells_3.h b/Mesh_3/include/CGAL/Mesh_3/Refine_cells_3.h index 6a234a15311..3956ce3c668 100644 --- a/Mesh_3/include/CGAL/Mesh_3/Refine_cells_3.h +++ b/Mesh_3/include/CGAL/Mesh_3/Refine_cells_3.h @@ -371,7 +371,7 @@ public: { #ifndef CGAL_NO_ATOMIC if(m_stop_ptr != 0 && - m_stop_ptr->load(CGAL::cpp11::memory_order_acquire) == true) + m_stop_ptr->load(std::memory_order_acquire) == true) { return true; } diff --git a/Mesh_3/include/CGAL/Mesh_3/Refine_facets_3.h b/Mesh_3/include/CGAL/Mesh_3/Refine_facets_3.h index f90ecc9273b..4559402bc6f 100644 --- a/Mesh_3/include/CGAL/Mesh_3/Refine_facets_3.h +++ b/Mesh_3/include/CGAL/Mesh_3/Refine_facets_3.h @@ -275,7 +275,7 @@ public: { #ifndef CGAL_NO_ATOMIC if(m_stop_ptr != 0 && - m_stop_ptr->load(CGAL::cpp11::memory_order_acquire) == true) + m_stop_ptr->load(std::memory_order_acquire) == true) { return true; } diff --git a/Mesh_3/include/CGAL/Mesh_3/Refine_facets_manifold_base.h b/Mesh_3/include/CGAL/Mesh_3/Refine_facets_manifold_base.h index e68892bd600..17b04cc4239 100644 --- a/Mesh_3/include/CGAL/Mesh_3/Refine_facets_manifold_base.h +++ b/Mesh_3/include/CGAL/Mesh_3/Refine_facets_manifold_base.h @@ -446,7 +446,7 @@ public: #ifndef CGAL_NO_ATOMIC if(this->m_stop_ptr != 0 && - this->m_stop_ptr->load(CGAL::cpp11::memory_order_acquire) == true) + this->m_stop_ptr->load(std::memory_order_acquire) == true) { return true; } diff --git a/Point_set_processing_3/include/CGAL/Point_set_processing_3/internal/Callback_wrapper.h b/Point_set_processing_3/include/CGAL/Point_set_processing_3/internal/Callback_wrapper.h index bd20e2505ec..229eae5897a 100644 --- a/Point_set_processing_3/include/CGAL/Point_set_processing_3/internal/Callback_wrapper.h +++ b/Point_set_processing_3/include/CGAL/Point_set_processing_3/internal/Callback_wrapper.h @@ -13,7 +13,8 @@ #define CGAL_PSP_INTERNAL_CALLBACK_WRAPPER_H #include - +#include +#include #include @@ -90,11 +91,11 @@ template <> class Callback_wrapper { const std::function& m_callback; - cpp11::atomic* m_advancement; - cpp11::atomic* m_interrupted; + std::atomic* m_advancement; + std::atomic* m_interrupted; std::size_t m_size; bool m_creator; - cpp11::thread* m_thread; + std::thread* m_thread; // assignment operator shouldn't be used (m_callback is const ref) Callback_wrapper& operator= (const Callback_wrapper&) @@ -108,17 +109,17 @@ public: std::size_t advancement = 0, bool interrupted = false) : m_callback (callback) - , m_advancement (new cpp11::atomic()) - , m_interrupted (new cpp11::atomic()) + , m_advancement (new std::atomic()) + , m_interrupted (new std::atomic()) , m_size (size) , m_creator (true) , m_thread (nullptr) { - // cpp11::atomic only has default constructor, initialization done in two steps + // std::atomic only has default constructor, initialization done in two steps *m_advancement = advancement; *m_interrupted = interrupted; if (m_callback) - m_thread = new cpp11::thread (*this); + m_thread = new std::thread (*this); } Callback_wrapper (const Callback_wrapper& other) @@ -149,11 +150,11 @@ public: *m_advancement = advancement; *m_interrupted = interrupted; if (m_callback) - m_thread = new cpp11::thread (*this); + m_thread = new std::thread (*this); } - cpp11::atomic& advancement() { return *m_advancement; } - cpp11::atomic& interrupted() { return *m_interrupted; } + std::atomic& advancement() { return *m_advancement; } + std::atomic& interrupted() { return *m_interrupted; } void join() { if (m_thread != nullptr) From acd6bb3c5772ed78535d23e2c2c2ba952214cec5 Mon Sep 17 00:00:00 2001 From: Maxime Gimeno Date: Thu, 20 May 2021 09:00:29 +0200 Subject: [PATCH 168/171] Fix namespace and remove unused typedef --- .../examples/Polygon_mesh_processing/compare_meshes_example.cpp | 2 +- .../test/Polygon_mesh_processing/measures_test.cpp | 1 - 2 files changed, 1 insertion(+), 2 deletions(-) diff --git a/Polygon_mesh_processing/examples/Polygon_mesh_processing/compare_meshes_example.cpp b/Polygon_mesh_processing/examples/Polygon_mesh_processing/compare_meshes_example.cpp index 5babc6b1ffb..dd86d8d5c04 100644 --- a/Polygon_mesh_processing/examples/Polygon_mesh_processing/compare_meshes_example.cpp +++ b/Polygon_mesh_processing/examples/Polygon_mesh_processing/compare_meshes_example.cpp @@ -28,7 +28,7 @@ int main(int argc, char* argv[]) Surface_mesh mesh1; Polyhedron mesh2; - if(!PMP::read_polygon_mesh(filename1, mesh1)) + if(!PMP::IO::read_polygon_mesh(filename1, mesh1)) { std::cerr << "Invalid input." << std::endl; return 1; diff --git a/Polygon_mesh_processing/test/Polygon_mesh_processing/measures_test.cpp b/Polygon_mesh_processing/test/Polygon_mesh_processing/measures_test.cpp index 701b9a2a3a6..ef332cd6136 100644 --- a/Polygon_mesh_processing/test/Polygon_mesh_processing/measures_test.cpp +++ b/Polygon_mesh_processing/test/Polygon_mesh_processing/measures_test.cpp @@ -206,7 +206,6 @@ void test_centroid(const char* filename) template void test_compare() { - typedef typename boost::graph_traits::vertex_descriptor vertex_descriptor; typedef typename boost::graph_traits::face_descriptor face_descriptor; namespace PMP = CGAL::Polygon_mesh_processing; From 553445a7715895252661887ca4643bbeb8ed041c Mon Sep 17 00:00:00 2001 From: Maxime Gimeno Date: Wed, 26 May 2021 11:16:09 +0200 Subject: [PATCH 169/171] Changes after review 1 --- Installation/CHANGES.md | 2 +- .../Polygon_mesh_processing/CMakeLists.txt | 2 +- ...are_meshes_example.cpp => match_faces.cpp} | 10 ++-- .../CGAL/Polygon_mesh_processing/measure.h | 59 ++++++++++--------- .../Polygon_mesh_processing/measures_test.cpp | 21 ++++--- 5 files changed, 50 insertions(+), 44 deletions(-) rename Polygon_mesh_processing/examples/Polygon_mesh_processing/{compare_meshes_example.cpp => match_faces.cpp} (88%) diff --git a/Installation/CHANGES.md b/Installation/CHANGES.md index 40fe84474fb..6265fd05190 100644 --- a/Installation/CHANGES.md +++ b/Installation/CHANGES.md @@ -7,7 +7,7 @@ Release date: December 2021 ### [Polygon Mesh Processing](https://doc.cgal.org/5.4/Manual/packages.html#PkgPolygonMeshProcessing) -- Added the function `CGAL::Polygon_mesh_processing::match_faces()` that given two polygon meshes identifies faces present in only one of the two meshes as well as faces present in both. +- Added the function `CGAL::Polygon_mesh_processing::match_faces()`, which, given two polygon meshes, identifies their common faces as well as as faces present in only either of them. [Release 5.3](https://github.com/CGAL/cgal/releases/tag/v5.3) diff --git a/Polygon_mesh_processing/examples/Polygon_mesh_processing/CMakeLists.txt b/Polygon_mesh_processing/examples/Polygon_mesh_processing/CMakeLists.txt index e52fa4e4ccf..ad9c683900e 100644 --- a/Polygon_mesh_processing/examples/Polygon_mesh_processing/CMakeLists.txt +++ b/Polygon_mesh_processing/examples/Polygon_mesh_processing/CMakeLists.txt @@ -90,7 +90,7 @@ create_single_source_cgal_program("locate_example.cpp") create_single_source_cgal_program("orientation_pipeline_example.cpp") #create_single_source_cgal_program( "self_snapping_example.cpp") #create_single_source_cgal_program( "snapping_example.cpp") -create_single_source_cgal_program("compare_meshes_example.cpp") +create_single_source_cgal_program("match_faces.cpp") if(OpenMesh_FOUND) diff --git a/Polygon_mesh_processing/examples/Polygon_mesh_processing/compare_meshes_example.cpp b/Polygon_mesh_processing/examples/Polygon_mesh_processing/match_faces.cpp similarity index 88% rename from Polygon_mesh_processing/examples/Polygon_mesh_processing/compare_meshes_example.cpp rename to Polygon_mesh_processing/examples/Polygon_mesh_processing/match_faces.cpp index dd86d8d5c04..9eeae6b6d00 100644 --- a/Polygon_mesh_processing/examples/Polygon_mesh_processing/compare_meshes_example.cpp +++ b/Polygon_mesh_processing/examples/Polygon_mesh_processing/match_faces.cpp @@ -41,15 +41,15 @@ int main(int argc, char* argv[]) PMP::match_faces(mesh1, mesh2, std::back_inserter(common), std::back_inserter(m1_only), std::back_inserter(m2_only)); - std::cout<<"Faces only in m1 :"<& ids) { - auto min_elem = std::min_element(ids.begin(), ids.end()); - std::rotate(ids.begin(), min_elem, ids.end()); + auto min_elem = std::min_element(ids.begin(), ids.end()); + std::rotate(ids.begin(), min_elem, ids.end()); } -}//end pmp_internal +}//namespace pmp_internal /** * \ingroup measure_grp * computes the length of an edge of a given polygon mesh. @@ -835,7 +835,7 @@ centroid(const TriangleMesh& tmesh) /** * \ingroup measure_grp * identifies faces only present in `m1` and `m2` as well as the faces present - * in both polygon meshes. Two faces are identical if they have the same + * in both polygon meshes. Two faces are matching if they have the same * orientation and the same points. * * @tparam PolygonMesh1 a model of `HalfedgeListGraph` and `FaceListGraph` @@ -851,8 +851,8 @@ centroid(const TriangleMesh& tmesh) * @tparam NamedParameters1 a sequence of \ref bgl_namedparameters "Named Parameters" * @tparam NamedParameters2 a sequence of \ref bgl_namedparameters "Named Parameters" * - * @param m1 the first `PolygonMesh1` - * @param m2 the second `PolygonMesh2` + * @param m1 the first `PolygonMesh` + * @param m2 the second `PolygonMesh` * @param common output iterator collecting the faces that are common to both meshes. * @param m1_only output iterator collecting the faces that are only in `m1` * @param m2_only output iterator collecting the faces that are only in `m2` @@ -863,7 +863,7 @@ centroid(const TriangleMesh& tmesh) * \cgalParamNBegin{vertex_point_map} * \cgalParamDescription{a property map associating points to the vertices of `m1`} * \cgalParamType{a class model of `ReadablePropertyMap` with `boost::graph_traits::%vertex_descriptor` - * as key type and `%Point_3` as value type. `%Point_3` must be LessThanComparable.} + * as key type and `%Point_3` as value type. `%Point_3` must be `LessThanComparable`.} * \cgalParamDefault{`boost::get(CGAL::vertex_point, m1)`} * \cgalParamExtra{The same holds for `m2` and `PolygonMesh2` and the point type must be the same for both meshes.} * \cgalParamNEnd @@ -883,29 +883,32 @@ centroid(const TriangleMesh& tmesh) */ template< typename PolygonMesh1, typename PolygonMesh2, + typename FacePairOutputIterator, typename FaceOutputIterator1, typename FaceOutputIterator2, - typename FacePairOutputIterator, typename NamedParameters1, typename NamedParameters2 > void match_faces(const PolygonMesh1& m1, const PolygonMesh2& m2, FacePairOutputIterator common, FaceOutputIterator1 m1_only, FaceOutputIterator2 m2_only, const NamedParameters1& np1, const NamedParameters2& np2) { - using parameters::choose_parameter; - using parameters::get_parameter; - typedef typename GetVertexPointMap < PolygonMesh1, NamedParameters1>::const_type VPMap1; - typedef typename GetVertexPointMap < PolygonMesh2, NamedParameters2>::const_type VPMap2; + typedef typename GetVertexPointMap::const_type VPMap1; + typedef typename GetVertexPointMap::const_type VPMap2; typedef typename GetInitializedVertexIndexMap::const_type VIMap1; typedef typename GetInitializedVertexIndexMap::const_type VIMap2; - VPMap1 vpm1 = choose_parameter(get_parameter(np1, internal_np::vertex_point), - get_const_property_map(vertex_point, m1)); - VPMap2 vpm2 = choose_parameter(get_parameter(np2, internal_np::vertex_point), - get_const_property_map(vertex_point, m2)); - VIMap1 vim1 = get_initialized_vertex_index_map(m1, np1); - VIMap2 vim2 = get_initialized_vertex_index_map(m2, np2); - typedef typename boost::property_traits::value_type Point_3; - typedef typename boost::graph_traits::face_descriptor face_descriptor_1; + typedef typename boost::property_traits::value_type Point_3; + typedef typename boost::graph_traits::face_descriptor face_descriptor_1; + + using parameters::choose_parameter; + using parameters::get_parameter; + + const VPMap1 vpm1 = choose_parameter(get_parameter(np1, internal_np::vertex_point), + get_const_property_map(vertex_point, m1)); + const VPMap2 vpm2 = choose_parameter(get_parameter(np2, internal_np::vertex_point), + get_const_property_map(vertex_point, m2)); + + const VIMap1 vim1 = get_initialized_vertex_index_map(m1, np1); + const VIMap2 vim2 = get_initialized_vertex_index_map(m2, np2); std::map point_id_map; @@ -918,20 +921,20 @@ void match_faces(const PolygonMesh1& m1, const PolygonMesh2& m2, for(auto v : vertices(m1)) { const Point_3& p = get(vpm1, v); - auto res = point_id_map.insert(std::make_pair(p, id)); + auto res = point_id_map.emplace(p, id); if(res.second) ++id; - m1_vertex_id[get(vim1, v)]=res.first->second; + m1_vertex_id[get(vim1, v)] = res.first->second; } for(auto v : vertices(m2)) { const Point_3& p = get(vpm2, v); - auto res = point_id_map.insert(std::make_pair(p, id)); + auto res = point_id_map.emplace(p, id); if(res.second) ++id; else shared_vertices.set(res.first->second); - m2_vertex_id[get(vim2, v)]=res.first->second; + m2_vertex_id[get(vim2, v)] = res.first->second; } //fill a set with the "faces point-ids" of m1 and then iterate faces of m2 to compare. @@ -942,7 +945,7 @@ void match_faces(const PolygonMesh1& m1, const PolygonMesh2& m2, boost::container::small_vector ids; for(auto v : CGAL::vertices_around_face(halfedge(f, m1), m1)) { - std::size_t vid = m1_vertex_id[get(vim1, v)]; + std::size_t vid = m1_vertex_id[get(vim1, v)]; ids.push_back(vid); if(!shared_vertices.test(vid)) { @@ -953,7 +956,7 @@ void match_faces(const PolygonMesh1& m1, const PolygonMesh2& m2, if(all_shared) { pmp_internal::rearrange_face_ids(ids); - m1_faces_map.insert({ids, f}); + m1_faces_map.emplace(ids, f); } else *m1_only++ = f; @@ -996,7 +999,7 @@ void match_faces(const PolygonMesh1& m1, const PolygonMesh2& m2, } } -template +template void match_faces(const PolygonMesh1& m1, const PolygonMesh2& m2, FacePairOutputIterator common, FaceOutputIterator1 m1_only, FaceOutputIterator2 m2_only, const NamedParameters& np) @@ -1004,7 +1007,7 @@ void match_faces(const PolygonMesh1& m1, const PolygonMesh2& m2, match_faces(m1, m2, common, m1_only, m2_only, np, parameters::all_default()); } -template +template void match_faces(const PolygonMesh1& m1, const PolygonMesh2& m2, FacePairOutputIterator common, FaceOutputIterator1 m1_only, FaceOutputIterator2 m2_only) { diff --git a/Polygon_mesh_processing/test/Polygon_mesh_processing/measures_test.cpp b/Polygon_mesh_processing/test/Polygon_mesh_processing/measures_test.cpp index ef332cd6136..7522600665f 100644 --- a/Polygon_mesh_processing/test/Polygon_mesh_processing/measures_test.cpp +++ b/Polygon_mesh_processing/test/Polygon_mesh_processing/measures_test.cpp @@ -203,16 +203,19 @@ void test_centroid(const char* filename) } -template +template void test_compare() { - typedef typename boost::graph_traits::face_descriptor face_descriptor; + typedef typename boost::graph_traits::face_descriptor face_descriptor1; + typedef typename boost::graph_traits::face_descriptor face_descriptor2; namespace PMP = CGAL::Polygon_mesh_processing; - PolygonMesh mesh1, mesh2; - std::vector > common; + PolygonMesh1 mesh1; + PolygonMesh2 mesh2; + std::vector > common; common.clear(); - std::vector m1_only, m2_only; + std::vector m1_only; + std::vector m2_only; /************************* * triangulated and open * * **********************/ @@ -261,8 +264,8 @@ void test_compare() return; } input.close(); - std::unordered_map fim1; - std::unordered_map fim2; + std::unordered_map fim1; + std::unordered_map fim2; std::size_t id = 0; for(const auto& f : faces(mesh1)) { @@ -361,8 +364,8 @@ int main(int argc, char* argv[]) test_centroid,Epic>(filename_surface_mesh); test_compare >(); test_compare >(); - test_compare >(); - test_compare >(); + test_compare, CGAL::Polyhedron_3 >(); + test_compare, CGAL::Polyhedron_3 >(); std::cerr << "All done." << std::endl; return 0; } From c6c540503c0cc4718fcc31d65cb91884a5727956 Mon Sep 17 00:00:00 2001 From: Maxime Gimeno Date: Wed, 26 May 2021 11:46:03 +0200 Subject: [PATCH 170/171] changes after review 2 --- .../CGAL/Polygon_mesh_processing/measure.h | 15 +++++++++------ .../Polygon_mesh_processing/measures_test.cpp | 4 ++-- 2 files changed, 11 insertions(+), 8 deletions(-) diff --git a/Polygon_mesh_processing/include/CGAL/Polygon_mesh_processing/measure.h b/Polygon_mesh_processing/include/CGAL/Polygon_mesh_processing/measure.h index 3360484c567..f65caaaa87a 100644 --- a/Polygon_mesh_processing/include/CGAL/Polygon_mesh_processing/measure.h +++ b/Polygon_mesh_processing/include/CGAL/Polygon_mesh_processing/measure.h @@ -53,14 +53,14 @@ public: namespace Polygon_mesh_processing { -namespace pmp_internal { +namespace internal { inline void rearrange_face_ids(boost::container::small_vector& ids) { auto min_elem = std::min_element(ids.begin(), ids.end()); std::rotate(ids.begin(), min_elem, ids.end()); } -}//namespace pmp_internal +}//namespace internal /** * \ingroup measure_grp * computes the length of an edge of a given polygon mesh. @@ -906,6 +906,9 @@ void match_faces(const PolygonMesh1& m1, const PolygonMesh2& m2, get_const_property_map(vertex_point, m1)); const VPMap2 vpm2 = choose_parameter(get_parameter(np2, internal_np::vertex_point), get_const_property_map(vertex_point, m2)); + CGAL_static_assertion_msg((boost::is_same::value_type, + typename boost::property_traits::value_type>::value), + "Both vertex point maps must have the same point type."); const VIMap1 vim1 = get_initialized_vertex_index_map(m1, np1); const VIMap2 vim2 = get_initialized_vertex_index_map(m2, np2); @@ -920,7 +923,7 @@ void match_faces(const PolygonMesh1& m1, const PolygonMesh2& m2, std::size_t id = 0; for(auto v : vertices(m1)) { - const Point_3& p = get(vpm1, v); + const typename boost::property_traits::reference p = get(vpm1, v); auto res = point_id_map.emplace(p, id); if(res.second) ++id; @@ -928,7 +931,7 @@ void match_faces(const PolygonMesh1& m1, const PolygonMesh2& m2, } for(auto v : vertices(m2)) { - const Point_3& p = get(vpm2, v); + const typename boost::property_traits::reference p = get(vpm2, v); auto res = point_id_map.emplace(p, id); if(res.second) ++id; @@ -955,7 +958,7 @@ void match_faces(const PolygonMesh1& m1, const PolygonMesh2& m2, } if(all_shared) { - pmp_internal::rearrange_face_ids(ids); + internal::rearrange_face_ids(ids); m1_faces_map.emplace(ids, f); } else @@ -977,7 +980,7 @@ void match_faces(const PolygonMesh1& m1, const PolygonMesh2& m2, } if(all_shared) { - pmp_internal::rearrange_face_ids(ids); + internal::rearrange_face_ids(ids); auto it = m1_faces_map.find(ids); if(it != m1_faces_map.end()) { diff --git a/Polygon_mesh_processing/test/Polygon_mesh_processing/measures_test.cpp b/Polygon_mesh_processing/test/Polygon_mesh_processing/measures_test.cpp index 7522600665f..b8db4721474 100644 --- a/Polygon_mesh_processing/test/Polygon_mesh_processing/measures_test.cpp +++ b/Polygon_mesh_processing/test/Polygon_mesh_processing/measures_test.cpp @@ -362,8 +362,8 @@ int main(int argc, char* argv[]) // It won't work with Epec for large meshes as it builds up a deep DAG // leading to a stackoverflow when the destructor is called. test_centroid,Epic>(filename_surface_mesh); - test_compare >(); - test_compare >(); + test_compare, CGAL::Surface_mesh >(); + test_compare, CGAL::Surface_mesh >(); test_compare, CGAL::Polyhedron_3 >(); test_compare, CGAL::Polyhedron_3 >(); std::cerr << "All done." << std::endl; From 523b54e4f70ee13212d09302270810bd6b76597d Mon Sep 17 00:00:00 2001 From: Maxime Gimeno Date: Wed, 26 May 2021 15:22:27 +0200 Subject: [PATCH 171/171] Fix changes.md --- Installation/CHANGES.md | 15 +++++++-------- 1 file changed, 7 insertions(+), 8 deletions(-) diff --git a/Installation/CHANGES.md b/Installation/CHANGES.md index 6265fd05190..dd07172543d 100644 --- a/Installation/CHANGES.md +++ b/Installation/CHANGES.md @@ -9,7 +9,6 @@ Release date: December 2021 - Added the function `CGAL::Polygon_mesh_processing::match_faces()`, which, given two polygon meshes, identifies their common faces as well as as faces present in only either of them. - [Release 5.3](https://github.com/CGAL/cgal/releases/tag/v5.3) ----------- @@ -468,7 +467,7 @@ Release date: November 2019 - LLVM Clang version 8.0 or later (on Linux or MacOS), and - Apple Clang compiler versions 7.0.2 and 10.0.1 (on MacOS). - Since CGAL 4.9, CGAL can be used as a header-only library, with - dependencies. Since CGAL 5.0, that is now the default, unless + dependencies. Since CGAL 5.0, that is now the default, unless specified differently in the (optional) CMake configuration. - The section "Getting Started with CGAL" of the documentation has been updated and reorganized. @@ -2308,14 +2307,14 @@ Release date: October 2014 - Changes in the set of supported platforms: - The Microsoft Windows Visual C++ compiler 2008 (VC9) is no longer supported since CGAL-4.5. -- Since CGAL version 4.0, Eigen was the recommended third-party +- Since CGAL version 4.0, Eigen was the recommended third-party library to use with *Planar Parameterization of Triangulated Surface Meshes*, *Surface Reconstruction from Point Sets*, *Approximation of Ridges and Umbilics on Triangulated Surface Meshes*, and *Estimation of Local Differential Properties of Point-Sampled Surfaces* - packages. From CGAL version 4.5, Taucs, Blas and Lapack are no + packages. From CGAL version 4.5, Taucs, Blas and Lapack are no longer supported. -- CGAL is now compatible with the new CMake version 3.0. +- CGAL is now compatible with the new CMake version 3.0. ### Triangulated Surface Mesh Deformation (new package) @@ -2454,7 +2453,7 @@ Release date: April 2014 - Additional supported platforms: - The Apple Clang compiler version 5.0 is now supported on - OS X Mavericks. + OS X Mavericks. - The Microsoft Windows Visual C++ compiler 2013 (VC12) is now supported. @@ -2592,7 +2591,7 @@ Release date: October 2013 transparent to the user thanks to the implicit constructor added to `CGAL::Object`. However, it is recommended to upgrade your code. The previous behavior can be restored by defining the macro - `CGAL_INTERSECTION_VERSION` to 1. + `CGAL_INTERSECTION_VERSION` to 1. #### 2D Arrangements @@ -2853,7 +2852,7 @@ Release date: October 2012 - Additional supported platforms: - The Apple Clang compiler versions 3.1 and 3.2 are now supported - on Mac OS X. + on Mac OS X. - Improved configuration for essential and optional external third party software - Added more general script to create CMakeLists.txt files: