Merge remote-tracking branch 'cgal/master' into Mesh-3-rework-make-mesh-point-initialization-2-aclement

# Conflicts:
#	Installation/CHANGES.md
This commit is contained in:
Jane Tournois 2024-10-23 16:35:56 +02:00
commit f77f9c6847
357 changed files with 3818 additions and 6116 deletions

1
.gitattributes vendored
View File

@ -58,7 +58,6 @@ Scripts/developer_scripts/check_svn_keywords text eol=lf
Scripts/developer_scripts/create_cgal_test text eol=lf
Scripts/developer_scripts/create_cgal_test_with_cmake text eol=lf
Scripts/developer_scripts/create_internal_release text eol=lf
Scripts/developer_scripts/create_macosx_installer text eol=lf
Scripts/developer_scripts/create_new_release text eol=lf
Scripts/developer_scripts/detect_files_with_mixed_eol_styles text eol=lf
Scripts/developer_scripts/detect_packages_licenses text eol=lf

2
.gitignore vendored
View File

@ -1058,7 +1058,7 @@ cmake_install.cmake
*~
.#*
# MacOS file https://en.wikipedia.org/wiki/.DS_Store
# macOS file https://en.wikipedia.org/wiki/.DS_Store
.DS_Store
# Binaries:

View File

@ -551,7 +551,7 @@ public:
traits.intersection(query, singleton_data());
break;
default: // if(size() >= 2)
root_node()->template traversal_with_priority_and_group_traversal(m_primitives, query, traits, m_primitives.size(), 0, group_traversal_bound);
root_node()->traversal_with_priority_and_group_traversal(m_primitives, query, traits, m_primitives.size(), 0, group_traversal_bound);
}
}

View File

@ -56,7 +56,7 @@ public:
/**
* @brief General traversal query
* @param query the query
* @param traits the traversal traits that define the traversal behaviour
* @param traits the traversal traits that define the traversal behavior
* @param nb_primitives the number of primitive
*
* General traversal query. The traits class allows using it for the various

View File

@ -65,7 +65,7 @@ class Bitstream_descartes;
/*
* \brief Thrown whenever a non-specialised virtual member function is called
* \brief Thrown whenever a non-specialized virtual member function is called
*/
class Virtual_method_exception {};
@ -128,7 +128,7 @@ public:
/*!
* Constructor computing an interval containing all real roots of \c f,
* and initialising the Bitstream Descartes tree
* and initializing the Bitstream Descartes tree
*/
Generic_descartes_rep(Bitstream_descartes_type type,
Polynomial f,
@ -170,7 +170,7 @@ public:
/*!
* Constructor that copies the Bitstream tree given from outside
* and initialising the Bitstream Descartes tree
* and initializing the Bitstream Descartes tree
* The tree must "fit" to the polynomial
*/
Generic_descartes_rep(Bitstream_descartes_type type,
@ -367,7 +367,7 @@ public:
/*!
* \brief When does the isolation algorithm terminate?
*
* This method must be specialised by derived classes
* This method must be specialized by derived classes
*/
virtual bool termination_condition() {
throw Virtual_method_exception();
@ -378,7 +378,7 @@ public:
* \brief gives an opportunity to process the nodes after
* the subdivision steps are finished
*
* This method must be specialised by derived classes, but can
* This method must be specialized by derived classes, but can
* remain empty in many cases.
*/
virtual void process_nodes() {
@ -389,7 +389,7 @@ public:
/*! \brief returns whether the \c i th root is definitely a simple root
* of the isolated polynomial
*
* Must be specialised by derived class
* Must be specialized by derived class
*/
virtual bool is_certainly_simple_root(int) const {
throw Virtual_method_exception();
@ -399,7 +399,7 @@ public:
/*! \brief returns whether the \c i th root is definitely a multiple root
* of the isolated polynomial
*
* Must be specialised by derived class
* Must be specialized by derived class
*/
virtual bool is_certainly_multiple_root(int) const {
throw Virtual_method_exception();
@ -1082,7 +1082,7 @@ protected:
* variant of the Bitstream Descartes method: The Square_free_descartes_tag
* starts the usual Bitstream method for square free integer polynomials.
* With the M_k_descartes tag, it is able to handle one multiple root in
* favourable situations, the Backshear_descartes_tag allows to isolate
* favorable situations, the Backshear_descartes_tag allows to isolate
* even more complicated polynomials, if the multiple roots with even
* multiplicity can be refined from outside. See the corresponding
* constructors for more information.

View File

@ -865,7 +865,7 @@ public:
by trying randomly and checking. This randomization means
the same polynomial and same initial interval may give rise
to different intervals each time this class is used.
As indicated in the paper, we favour subdivision ratios
As indicated in the paper, we favor subdivision ratios
with a small denominator. Hence we first try denominator
2 (subdivision at midpoint), then denominator 16, and
only then the "proper" denominator prescribed by theory.

View File

@ -469,7 +469,7 @@ public:
* (\c SHEAR_ONLY_AT_IRRATIONAL_STRATEGY)
* is to \c shear the curve
* if a degenerate situation is detected during the analysis,
* except at rational x-coordinates where the curve can be analysed
* except at rational x-coordinates where the curve can be analyzed
* more directly. The analysis
* is then performed in the sheared system, and finally translated back
* into the original system.
@ -520,7 +520,7 @@ private:
void set_event_lines(InputIterator1 event_begin,
InputIterator1 event_end,
InputIterator2 intermediate_begin,
InputIterator2 CGAL_precondition_code(intermediate_end)) const {
InputIterator2 CGAL_assertion_code(intermediate_end)) const {
if(! this->ptr()->event_coordinates) {

View File

@ -875,7 +875,7 @@ private:
* Checks intersection with symbolic methods
*/
bool check_candidate_symbolically(Status_line_CA_1& e1,size_type ,
Status_line_CA_1& CGAL_precondition_code(e2),size_type ,
Status_line_CA_1& CGAL_assertion_code(e2),size_type ,
size_type k) const {
Polynomial_1 p = -coprincipal_subresultants(k-1);
Polynomial_1 q = principal_subresultants(k)*Coefficient(k);
@ -1173,7 +1173,7 @@ private:
/*
* \brief reduces the number of possible intersections
*
* At the position given by the event lins \c e1 and \c e2 and the slice
* At the position given by the event lines \c e1 and \c e2 and the slice
* info object \c slice, the points on the event lines are further refined
* until there are only \c n possible intersection points. The method can
* be interrupted if all possible intersection points are known to have

View File

@ -140,7 +140,7 @@ public:
virtual ~LRU_hashed_map()
{ }
/*! \brief implements cache-like behaviour of the map
/*! \brief implements cache-like behavior of the map
*
* If the object is not in the map, it is constructed using \c Creator
* and added to the map
@ -312,7 +312,7 @@ public:
~LRU_hashed_map_with_kernel()
{ }
/*! \brief implements cache-like behaviour of the map
/*! \brief implements cache-like behavior of the map
*
* If the object is not in the map, it is constructed using \c Creator
* and added to the map

View File

@ -65,7 +65,7 @@ template < class PolynomialIterator,
int gen_agebraic_reals_with_mults( PolynomialIterator fac,
PolynomialIterator fac_end,
IntIterator mul,
IntIterator CGAL_precondition_code(mul_end),
IntIterator CGAL_assertion_code(mul_end),
AlgebraicRealOutputIterator oi_root,
IntOutputIterator oi_mult){

View File

@ -331,7 +331,7 @@ public:
const typename Curve_pair_analysis_2
::Curve_analysis_2& c1,
const typename Curve_pair_analysis_2
::Curve_analysis_2& CGAL_precondition_code(c2)) const
::Curve_analysis_2& CGAL_assertion_code(c2)) const
{
CGAL_precondition(0 <= j && j < number_of_events());

View File

@ -25,7 +25,7 @@ namespace CGAL {
/*!
* \brief Exception class for not sufficiently generic positions.
*
* Must be thrown whenever a curve cannot be analysed because its position
* Must be thrown whenever a curve cannot be analyzed because its position
* is not "good enough".
*/
class Non_generic_position_exception {
@ -40,7 +40,7 @@ namespace CGAL {
/*!
* \brief Exception class for not sufficiently generic positions.
*
* Must be thrown whenever a curve cannot be analysed because its position
* Must be thrown whenever a curve cannot be analyzed because its position
* is not "good enough".
*/
template<typename Polynomial>

View File

@ -76,7 +76,7 @@
/**
* If set, the curve and curve pair analysis are using specialized code
* to analyse conic curves, i.e. curves of degree 2
* to analyze conic curves, i.e. curves of degree 2
*/
#ifndef CGAL_ACK_USE_SPECIAL_TREATMENT_FOR_CONIX
#define CGAL_ACK_USE_SPECIAL_TREATMENT_FOR_CONIX 0

View File

@ -330,7 +330,7 @@ template<typename Arithmetic_kernel> void test_routine() {
#endif
}
{ // More tests...just analyse some curves and compute their segments
{ // More tests...just analyze some curves and compute their segments
Poly_int2 f = from_string<Poly_int2>("P[8(0,P[8(0,24)(1,-8)(2,-162)(3,204)(4,106)(5,-340)(6,240)(7,-72)(8,8)])(1,P[6(0,-60)(1,8)(2,304)(3,-400)(4,148)(5,8)(6,-8)])(2,P[6(0,18)(1,80)(2,-165)(3,-132)(4,367)(5,-212)(6,38)])(3,P[4(0,-30)(1,-136)(2,264)(3,-72)(4,-26)])(4,P[4(0,-15)(1,36)(2,89)(3,-144)(4,49)])(5,P[2(0,30)(1,-24)(2,-6)])(6,P[2(0,-6)(1,-28)(2,22)])(8,P[0(0,3)])]");
Curve_analysis_2 curve= construct_curve_2(f);
#if CGAL_ACK_DEBUG_FLAG

View File

@ -1638,7 +1638,7 @@ compute_edge_status( const Cell_handle& c,
last=ccirc;
while (is_infinite(ccirc) ) ++ccirc; //skip infinite incident cells
alpha = (*ccirc).get_alpha();
as.set_alpha_mid(alpha); // initialise as.alpha_mid to alpha value of an incident cell
as.set_alpha_mid(alpha); // initialize as.alpha_mid to alpha value of an incident cell
as.set_alpha_max(alpha); // same for as.alpha_max
while (++ccirc != last)
{

View File

@ -218,7 +218,7 @@ test_filtration(AS &A, bool verbose)
typename AS::NT alpha;
if(verbose) {
std::cerr << std::endl;
std::cerr << "Analyse filtration " << std::endl;
std::cerr << "Analyze filtration " << std::endl;
}
for (; filtre_it != filtration.end(); filtre_it++) {
if(assign(vertex, *filtre_it)) {

View File

@ -24,18 +24,18 @@
<class name="cls241" key="increment walk Segments Lazy Simple Cartesian Cgal Gmpq"/>
<class name="cls242" key="aggregate Segments Lazy Simple Cartesian Cgal Gmpq"/>
<class name="cls251" key="increment walk Segments Exact Cgal Gmpq"/>
<class name="cls252" key="aggregate Segments Exact Cgal Gmpq"/>
<class name="cls252" key="aggregate Segments Exact Cgal Gmpq"/>
<class name="cls261" key=""/>
<class name="cls262" key=""/>
<class name="cls271" key=""/>
<class name="cls272" key=""/>
<class name="cls272" key=""/>
<clo name="verbose" string="--verbose"/>
<clo name="samples" string="--samples"/>
<clo name="print_header" string="--print-header"/>
<clo name="name_length" string="--name-length"/>
<clo name="type_mask" string="--type-mask"/>
<clo name="strategy_mask" string="--strategy-mask"/>
<clo name="verbose" string="--verbose"/>
<clo name="samples" string="--samples"/>
<clo name="print_header" string="--print-header"/>
<clo name="name_length" string="--name-length"/>
<clo name="type_mask" string="--type-mask"/>
<clo name="strategy_mask" string="--strategy-mask"/>
<file name="eurcut.bff" format="rat" curves="3099"
vertices="3078" halfedges="6198" faces="39"></file>
@ -150,7 +150,7 @@
<benchArrCgalGmpqCartesianSegment print_header="1"/>
<benchArrCgalGmpqCartesianSegment/>
<benchArrCgalGmpqLazyCartesianSegment/>
<benchArrCgalGmpqLazyCartesianSegment/>
<benchArrCgalGmpqLazySimpleCartesianSegment/>
<benchArrCgalGmpqExactSegment/>
<benchArrDoubleCartesianSegment enable="false"/>
<benchArrLazyCgalGmpqCartesianSegment/>

View File

@ -40,7 +40,7 @@ namespace {
Flag(bool init) : v{ init } {}
};
// EXTENDED AOS for analysing the arrangement
// EXTENDED AOS for analyzing the arrangement
using Ext_dcel = CGAL::Arr_extended_dcel<Geom_traits, Flag, Flag, Flag>;
using Ext_topol_traits =
CGAL::Arr_spherical_topology_traits_2<Geom_traits, Ext_dcel>;

View File

@ -4260,7 +4260,7 @@ public:
// Compute the radi of the hyperbola:
ts = std::asinh(ys_t/b);
tt = std::asinh(yt_t/b);
assert(std::signbit(xs_t) == std::signbit(xt_t));
CGAL_assertion(std::signbit(xs_t) == std::signbit(xt_t));
if (std::signbit(xs_t)) a = -a;
}

View File

@ -342,13 +342,13 @@ public:
{}
/*! Operate */
bool operator()(const X_monotone_curve_2& xc1,
const X_monotone_curve_2& xc2) const
{ ++m_counter1; return m_object(xc1, xc2); }
bool operator()(const Point_2& p1, const Point_2& p2) const
{ ++m_counter1; return m_object(p1, p2); }
/*! Operate */
bool operator()(const Point_2& p1, const Point_2& p2) const
{ ++m_counter2; return m_object(p1, p2); }
bool operator()(const X_monotone_curve_2& xc1,
const X_monotone_curve_2& xc2) const
{ ++m_counter2; return m_object(xc1, xc2); }
};
/*! A functor that compares compares the y-coordinates of two x-monotone
@ -563,7 +563,7 @@ public:
*/
class Is_on_x_identification_2 {
private:
typename Base::Is_on_x_identificiation_2 m_object;
typename Base::Is_on_x_identification_2 m_object;
size_t& m_counter1;
size_t& m_counter2;
@ -571,17 +571,17 @@ public:
/*! Construct */
Is_on_x_identification_2(const Base* base,
size_t& counter1, size_t& counter2) :
m_object(base->is_on_x_identificiation_2_object()),
m_object(base->is_on_x_identification_2_object()),
m_counter1(counter1),
m_counter2(counter2)
{}
/*! Operate */
Arr_parameter_space operator()(const Point_2& p) const
bool operator()(const Point_2& p) const
{ ++m_counter1; return m_object(p); }
/*! Operate */
Arr_parameter_space operator()(const X_monotone_curve_2& xc) const
bool operator()(const X_monotone_curve_2& xc) const
{ ++m_counter2; return m_object(xc); }
};
@ -666,7 +666,7 @@ public:
*/
class Is_on_y_identification_2 {
private:
typename Base::Is_on_y_identificiation_2 m_object;
typename Base::Is_on_y_identification_2 m_object;
size_t& m_counter1;
size_t& m_counter2;
@ -674,18 +674,18 @@ public:
/*! Construct */
Is_on_y_identification_2(const Base* base,
size_t& counter1, size_t& counter2) :
m_object(base->is_on_y_identificiation_2_object()),
m_object(base->is_on_y_identification_2_object()),
m_counter1(counter1),
m_counter2(counter2)
{}
/*! Operate */
Arr_parameter_space operator()(const Point_2& p) const
bool operator()(const Point_2& p) const
{ ++m_counter1; return m_object(p); }
/*! Operate */
Arr_parameter_space operator()(const X_monotone_curve_2& xc) const
bool operator()(const X_monotone_curve_2& xc) const
{ ++m_counter2; return m_object(xc); }
};
@ -824,10 +824,10 @@ public:
m_counters[IS_ON_X_IDENTIFICATION_CURVE_OP]);
}
Compare_y_on_boundary_2 compare_on_boundary_2_object() const
Compare_y_on_boundary_2 compare_y_on_boundary_2_object() const
{ return Compare_y_on_boundary_2(this, m_counters[COMPARE_Y_ON_BOUNDARY_OP]); }
Compare_y_near_boundary_2 compare_near_boundary_2_object() const
Compare_y_near_boundary_2 compare_y_near_boundary_2_object() const
{
return Compare_y_near_boundary_2(this,
m_counters[COMPARE_Y_NEAR_BOUNDARY_OP]);
@ -943,7 +943,7 @@ Out_stream& operator<<(Out_stream& os,
<< traits.count_parameter_space_in_x_point() << std::endl
<< "# of PARAMETER_SPACE_IN_X curve operation = "
<< traits.count_parameter_space_in_x_curve() << std::endl
<< "# of IS_ON_X_IDENTIFICIATION point operation = "
<< "# of IS_ON_X_IDENTIFICATION point operation = "
<< traits.count_is_on_x_identification_point() << std::endl
<< "# of IS_ON_X_IDENTIFICATION curve operation = "
<< traits.count_is_on_x_identification_curve() << std::endl
@ -958,7 +958,7 @@ Out_stream& operator<<(Out_stream& os,
<< traits.count_parameter_space_in_y_point() << std::endl
<< "# of PARAMETER_SPACE_IN_Y curve operation = "
<< traits.count_parameter_space_in_y_curve() << std::endl
<< "# of IS_ON_Y_IDENTIFICIATION point operation = "
<< "# of IS_ON_Y_IDENTIFICATION point operation = "
<< traits.count_is_on_y_identification_point() << std::endl
<< "# of IS_ON_Y_IDENTIFICATION curve operation = "
<< traits.count_is_on_y_identification_curve() << std::endl

View File

@ -339,7 +339,7 @@ public:
if (! valid)
return;
// Analyze the behaviour of the rational function at x = -oo (the source).
// Analyze the behavior of the rational function at x = -oo (the source).
Algebraic y0;
const Arr_parameter_space inf_s =
_analyze_at_minus_infinity (_numer, _denom, y0);
@ -351,7 +351,7 @@ public:
else // if (inf_s == ARR_INTERIOR)
_ps = Point_2 (0, y0);
// Analyze the behaviour of the rational function at x = +oo (the target).
// Analyze the behavior of the rational function at x = +oo (the target).
const Arr_parameter_space inf_t =
_analyze_at_plus_infinity (_numer, _denom, y0);
@ -735,7 +735,7 @@ public:
*/
Self split_at_pole (const Algebraic& x0)
{
// Analyze the behaviour of the function near the given pole.
// Analyze the behavior of the function near the given pole.
const std::pair<CGAL::Sign, CGAL::Sign> signs = _analyze_near_pole (x0);
const CGAL::Sign sign_left = signs.first;
const CGAL::Sign sign_right = signs.second;

View File

@ -591,8 +591,7 @@ public:
Comparison_result dir = cmp_seg_endpts(xcv[0]);
// Locate the subcurve on the polycurve xcv that contains p.
std::size_t i = m_poly_traits.locate(xcv, p);
auto i = m_poly_traits.locate_impl(xcv, p, All_sides_oblivious_category());
CGAL_precondition(i != Polycurve_traits_2::INVALID_INDEX);
// Clear the output curves.

View File

@ -450,7 +450,7 @@ public:
_info = (_info | IS_DIRECTED_RIGHT);
// Analyze the behaviour of the rational function at x = -oo (the source).
// Analyze the behavior of the rational function at x = -oo (the source).
Algebraic_real_1 y0;
const Arr_parameter_space inf_s = _analyze_at_minus_infinity(P, Q, y0);
@ -460,7 +460,7 @@ public:
_info = (_info | SRC_AT_Y_PLUS_INFTY);
else // if (inf_s == ARR_INTERIOR)
_ps = Algebraic_point_2(); //the point is a dummy
//Analyze the behaviour of the rational function at x = +oo (the target).
//Analyze the behavior of the rational function at x = +oo (the target).
const Arr_parameter_space inf_t = _analyze_at_plus_infinity(P, Q, y0);
if (inf_t == ARR_BOTTOM_BOUNDARY)
@ -949,7 +949,7 @@ public:
Self split_at_pole(const Algebraic_real_1& x0)
{
// Analyze the behaviour of the function near the given pole.
// Analyze the behavior of the function near the given pole.
const std::pair<CGAL::Sign, CGAL::Sign> signs = _analyze_near_pole(x0);
const CGAL::Sign sign_left = signs.first;
const CGAL::Sign sign_right = signs.second;

View File

@ -1578,7 +1578,7 @@ public:
return res;
}
// otherwise: both ends have asymptotic behaviour
// otherwise: both ends have asymptotic behavior
if (ps_y1 == ps_y2) { // need special y-comparison
if (ce1 == ce2) { // both ends approach asymptote from one side
Comparison_result res = m_self->compare_x_near_boundary_2_object()(xcv1, xcv2, ce2);

View File

@ -1551,7 +1551,7 @@ split_edge(Halfedge_handle e,
// o---------e-------->o
if (_are_equal(source, cv1, ARR_MIN_END)) {
const Point_2& p = m_geom_traits->construct_max_vertex_2_object()(cv1);
CGAL_postcondition_code
CGAL_precondition_code
(const Point_2& q = m_geom_traits->construct_min_vertex_2_object()(cv2));
CGAL_precondition(m_geom_traits->equal_2_object()(p, q));
CGAL_precondition(_are_equal(he1->vertex(), cv2, ARR_MAX_END));
@ -1562,7 +1562,7 @@ split_edge(Halfedge_handle e,
// o<--------e---------o
if (_are_equal(source, cv1, ARR_MAX_END)) {
const Point_2& p = m_geom_traits->construct_min_vertex_2_object()(cv1);
CGAL_postcondition_code
CGAL_precondition_code
(const Point_2& q = m_geom_traits->construct_max_vertex_2_object()(cv2));
CGAL_precondition(m_geom_traits->equal_2_object()(p, q));
CGAL_precondition(_are_equal(he1->vertex(), cv2, ARR_MIN_END));
@ -1573,7 +1573,7 @@ split_edge(Halfedge_handle e,
// o---------e-------->o
if (_are_equal(source, cv2, ARR_MIN_END)) {
const Point_2& p = m_geom_traits->construct_max_vertex_2_object()(cv2);
CGAL_postcondition_code
CGAL_precondition_code
(const Point_2& q = m_geom_traits->construct_min_vertex_2_object()(cv1));
CGAL_precondition(m_geom_traits->equal_2_object()(p, q));
CGAL_precondition(_are_equal(he1->vertex(), cv1, ARR_MAX_END));
@ -1584,7 +1584,7 @@ split_edge(Halfedge_handle e,
// o<--------e---------o
CGAL_precondition(_are_equal(source, cv2, ARR_MAX_END));
const Point_2& p = m_geom_traits->construct_min_vertex_2_object()(cv2);
CGAL_postcondition_code
CGAL_precondition_code
(const Point_2& q = m_geom_traits->construct_max_vertex_2_object()(cv1));
CGAL_precondition(m_geom_traits->equal_2_object()(p, q));
CGAL_precondition(_are_equal(he1->vertex(), cv1, ARR_MIN_END));

View File

@ -571,7 +571,7 @@ public:
compare_xy_2_object()(p, q, true) != CGAL::EQUAL);
// check coprimality condition for supporting curves
_check_pt_arcno_and_coprimality(p, -1, c);
_check_pt_arcno_and_coprimality(p, -1, c);
_check_pt_arcno_and_coprimality(q, -1, c);
_fix_curve_ends_order();
}

View File

@ -24,7 +24,7 @@
* \brief
* defines class Curve_renderer_traits.
*
* provides specialisations of Curve_renderer_traits for different number
* provides specializations of Curve_renderer_traits for different number
* types compatible with the curve renderer
*/

View File

@ -733,7 +733,7 @@ struct Graph_with_descriptor_with_graph_property_map {
}
}; // class Graph_with_descriptor_with_graph_property_map
//specialisation for lvaluepropertymaps
//specialization for lvaluepropertymaps
template <typename Graph, typename PM>
struct Graph_with_descriptor_with_graph_property_map<Graph, PM, boost::lvalue_property_map_tag> {

View File

@ -59,9 +59,9 @@ bool write_3MF(const std::string& filename,
const GraphRange& gs,
const std::vector<std::string>& names
#ifndef DOXYGEN_RUNNING
, std::enable_if_t<!
internal::is_Point_set_or_Range_or_Iterator<
typename boost::range_value<GraphRange>::type>::value>* = nullptr
, std::enable_if_t<
! internal::is_Point_set_or_Range_or_Iterator<
typename boost::range_value<GraphRange>::type>::value>* = nullptr
#endif
)
{

View File

@ -116,8 +116,8 @@ void partition_dual_graph(const TriangleMesh& tm,
delete[] eptr;
delete[] eind;
std::free(npart);
std::free(epart);
(std::free)(npart);
(std::free)(epart);
}
template<typename TriangleMesh, typename NamedParameters>

View File

@ -151,8 +151,8 @@ void partition_graph(const TriangleMesh& tm,
delete[] eptr;
delete[] eind;
std::free(npart);
std::free(epart);
(std::free)(npart);
(std::free)(epart);
}
template<typename TriangleMesh, typename NamedParameters>

View File

@ -54,6 +54,11 @@ if(OpenMesh_FOUND)
create_single_source_cgal_program("graph_concept_OpenMesh.cpp")
target_link_libraries(graph_concept_OpenMesh PRIVATE CGAL::OpenMesh_support)
create_single_source_cgal_program("test_OpenMesh.cpp")
target_link_libraries(test_OpenMesh PRIVATE CGAL::OpenMesh_support)
else()
message(STATUS "NOTICE: Tests that use OpenMesh will not be compiled.")
endif()

View File

@ -0,0 +1,22 @@
#include <CGAL/basic.h>
#include <OpenMesh/Core/IO/MeshIO.hh>
#include <OpenMesh/Core/Mesh/PolyMesh_ArrayKernelT.hh>
#include <CGAL/boost/graph/graph_traits_PolyMesh_ArrayKernelT.h>
typedef OpenMesh::PolyMesh_ArrayKernelT<> Om;
typedef boost::graph_traits< Om > Traits;
typedef Traits::edge_descriptor edge_descriptor;
typedef Traits::halfedge_descriptor halfedge_descriptor;
typedef Traits::vertex_descriptor vertex_descriptor;
typedef Traits::face_descriptor face_descriptor;
//typedef Kernel::Point_3 Point_3;
int main()
{
Om om;
for (Om::EdgeHandle ed : edges(om)) {
std::cout << "edge" << std::endl;
}
return 0;
}

View File

@ -14,3 +14,4 @@ Triangulation_3
Voronoi_diagram_2
Kernel_23
Arrangement_on_surface_2
Stream_support

View File

@ -542,13 +542,13 @@ boundary of each input (linear) polygon as a cyclic sequence of single
(\f$x\f$-monotone) polylines. By default, `UsePolylines` is set to
`CGAL::Tag_true`, which implies that the boundary of the each input
(linear) polygon is treated as a cyclic sequence of (\f$x\f$-monotone)
polylines. In most cases this behaviour is superior (that is, less
polylines. In most cases this behavior is superior (that is, less
time-consuming) because the number of events handled as part of the
execution of the plane-sweep algorithm is reduced. In cases where the
boundaries of the input polygons frequently intersect, treating them
as polylines may become less efficient. In these cases substitute the
`UsePolylines` template parameter with `CGAL::Tag_false` to restore
the original behaviour (where the boundary of each input linear
the original behavior (where the boundary of each input linear
polygon is treated as a cyclic sequence of single \f$x\f$-monotone
segments).

View File

@ -234,7 +234,7 @@ void test()
gps.oriented_side(pt);
gps.oriented_side(pgn1);
gps.oriented_side(pgn_with_holes1);
gps.oriented_side(pgn_with_holes1);
gps.oriented_side(pgn_with_holes2);
gps.oriented_side(gps);
gps.locate(pt, pgn_with_holes1);

View File

@ -5,7 +5,7 @@ namespace CGAL {
\ingroup PkgBoundingVolumesRef
The class `Min_sphere_annulus_d_traits_2` is a traits class for the \f$ d\f$-dimensional
optimisation algorithms using the two-dimensional \cgal kernel.
optimization algorithms using the two-dimensional \cgal kernel.
\tparam K must bea model for `Kernel`.
\tparam ET NT are models for `RingNumberType`. Their default type is `K::RT`.

View File

@ -5,7 +5,7 @@ namespace CGAL {
\ingroup PkgBoundingVolumesRef
The class `Min_sphere_annulus_d_traits_3` is a traits class for the \f$ d\f$-dimensional
optimisation algorithms using the three-dimensional \cgal kernel.
optimization algorithms using the three-dimensional \cgal kernel.
\tparam K must be a model for `Kernel`.
\tparam ET NT are models for `RingNumberType`. Their default type is `K::RT`.

View File

@ -5,7 +5,7 @@ namespace CGAL {
\ingroup PkgBoundingVolumesRef
The class `Min_sphere_annulus_d_traits_d` is a traits class for the \f$ d\f$-dimensional
optimisation algorithms using the \f$ d\f$-dimensional \cgal kernel.
optimization algorithms using the \f$ d\f$-dimensional \cgal kernel.
\tparam K must be a model for `Kernel`.
\tparam ET NT are models for `RingNumberType`. Their default type is `K::RT`.

View File

@ -71,7 +71,7 @@ namespace CGAL {
std::vector<const Point *> P; // input points
int n; // number of input points, i.e., P.size()
// This class comes in two flavours:
// This class comes in two flavors:
//
// (i) When Embed is false, the input points are taken to be
// ordinary points in R^{d_P}, where d_P is the dimension of the

View File

@ -33,7 +33,7 @@ namespace CGAL_MINIBALL_NAMESPACE {
// they are convertible to double.
// This is indeed the least invasive fix dropint the function that were
// defined here and cause linkage bug.
// You can still have a behaviour of instantiating only if a type
// You can still have a behavior of instantiating only if a type
// is convertibale to double (by using type_traits together with _if)
// but until "the whole design should be overhauled at some point"
// this is fine.

View File

@ -376,7 +376,7 @@ min_rectangle_2(
// quadruple of points defining the current rectangle
ForwardIterator curr[4];
// initialised to the points defining the bounding box
// initialized to the points defining the bounding box
convex_bounding_box_2(f, l, curr, t);
// curr[i] can be advanced (cyclically) until it reaches limit[i]
@ -482,7 +482,7 @@ min_parallelogram_2(ForwardIterator f,
// quadruple of points defining the bounding box
ForwardIterator curr[4];
// initialised to the points defining the bounding box
// initialized to the points defining the bounding box
convex_bounding_box_2(first, l, curr, t);
@ -659,7 +659,7 @@ min_strip_2(ForwardIterator f,
// quadruple of points defining the bounding box
ForwardIterator curr[4];
// initialised to the points defining the bounding box
// initialized to the points defining the bounding box
convex_bounding_box_2(first, l, curr, t);
ForwardIterator low = curr[0];

View File

@ -135,7 +135,7 @@ rectangular_3_center_2_type1(
rad = sdist(v(r, 2), v(r, 0));
// init to prevent default constructor requirement
Point bestpoint = *f;
// (initialisation avoids warning)
// (initialization avoids warning)
unsigned int bestrun = 0;
// two cases: top-left & bottom-right or top-right & bottom-left

View File

@ -11,7 +11,7 @@
// release : $CGAL_Revision: CGAL-wip $
// release_date : $CGAL_Date$
//
// chapter : $CGAL_Chapter: Optimisation $
// chapter : $CGAL_Chapter: Geometric Optimization $
// package : $CGAL_Package: MinSphere $
// file : min_sphere_test.C
// source : web/Optimisation/Min_sphere_d.aw

View File

@ -12,7 +12,7 @@
// release : $CGAL_Revision: CGAL-wip $
// release_date : $CGAL_Date$
//
// chapter : $CGAL_Chapter: Optimisation $
// chapter : $CGAL_Chapter: Geometric Optimization $
// package : $CGAL_Package: MinSphere $
// file : min_sphere_traits_2_test.C
// source : web/Optimisation/Min_sphere_d.aw

View File

@ -11,7 +11,7 @@
// release : $CGAL_Revision: CGAL-wip $
// release_date : $CGAL_Date$
//
// chapter : $CGAL_Chapter: Optimisation $
// chapter : $CGAL_Chapter: Geometric Optimization $
// package : $CGAL_Package: MinSphere $
// file : min_sphere_traits_3_test.C
// source : web/Optimisation/Min_sphere_d.aw

View File

@ -13,7 +13,7 @@
//
// file : test/Min_annulus_d/test_Min_annulus_d.h
// package : $CGAL_Package: Min_annulus_d $
// chapter : Geometric Optimisation
// chapter : Geometric Optimization
//
// source : web/Min_annulus_d.aw
// revision : $Id$

View File

@ -13,7 +13,7 @@
//
// file : test/Min_annulus_d/test_Min_annulus_d_2.cpp
// package : $CGAL_Package: Min_annulus_d $
// chapter : Geometric Optimisation
// chapter : Geometric Optimization
//
// revision : $Id$
// revision_date : $Date$

View File

@ -13,7 +13,7 @@
//
// file : test/Min_annulus_d/test_Min_annulus_d_3.cpp
// package : $CGAL_Package: Min_annulus_d $
// chapter : Geometric Optimisation
// chapter : Geometric Optimization
//
// revision : $Id$
// revision_date : $Date$

View File

@ -13,7 +13,7 @@
//
// file : test/Min_annulus_d/test_Min_annulus_d_d.cpp
// package : $CGAL_Package: Min_annulus_d $
// chapter : Geometric Optimisation
// chapter : Geometric Optimization
//
// revision : $Id$
// revision_date : $Date$

View File

@ -13,7 +13,7 @@
//
// file : test/Min_circle_2/test_Min_circle_2.C
// package : $CGAL_Package: Min_circle_2 $
// chapter : Geometric Optimisation
// chapter : Geometric Optimization
//
// source : web/Min_circle_2.aw
// revision : $Id$

View File

@ -13,7 +13,7 @@
//
// file : test/Min_ellipse_2/test_Min_ellipse_2.C
// package : $CGAL_Package: Min_ellipse_2 $
// chapter : Geometric Optimisation
// chapter : Geometric Optimization
//
// source : web/Min_ellipse_2.aw
// revision : $Id$

View File

@ -595,7 +595,7 @@ public:
}
void operator delete( void *p, size_t ){
MemoryPool<ConstPolyRep>::global_allocator().free(p);
(MemoryPool<ConstPolyRep>::global_allocator().free)(p);
}
private:
@ -1248,7 +1248,7 @@ void * AddSubRep<O>::operator new( size_t size)
template <typename O>
void AddSubRep<O>::operator delete( void *p, size_t )
{ MemoryPool<AddSubRep<O> >::global_allocator().free(p); }
{ (MemoryPool<AddSubRep<O> >::global_allocator().free)(p); }
/// \typedef AddRep

View File

@ -51,14 +51,14 @@
CGAL_INLINE_FUNCTION void *T::operator new( size_t size) \
{ return MemoryPool<T>::global_allocator().allocate(size); } \
CGAL_INLINE_FUNCTION void T::operator delete( void *p, size_t ) \
{ MemoryPool<T>::global_allocator().free(p); }
{ (MemoryPool<T>::global_allocator().free)(p); }
#define CORE_MEMORY_IMPL_TEMPLATE_WITH_ONE_ARG(C) \
template <typename T> \
CGAL_INLINE_FUNCTION void *C<T>::operator new( size_t size) \
{ return MemoryPool<C<T> >::global_allocator().allocate(size); } \
template <typename T> \
CGAL_INLINE_FUNCTION void C<T>::operator delete( void *p, size_t ) \
{ MemoryPool<C<T> >::global_allocator().free(p); }
{ (MemoryPool<C<T> >::global_allocator().free)(p); }
#endif
// include some common header files

View File

@ -73,7 +73,7 @@ public:
void* allocate(std::size_t size);
void free(void* p);
void free BOOST_PREVENT_MACRO_SUBSTITUTION (void* p);
// Access the corresponding static global allocator.
static MemoryPool<T,nObjects>& global_allocator() {
@ -116,7 +116,7 @@ void* MemoryPool< T, nObjects >::allocate(std::size_t) {
}
template< class T, int nObjects >
void MemoryPool< T, nObjects >::free(void* t) {
void MemoryPool< T, nObjects >::free BOOST_PREVENT_MACRO_SUBSTITUTION (void* t) {
CGAL_assertion(t != 0);
if (t == 0) return; // for safety
if(blocks.empty()){

View File

@ -154,7 +154,7 @@ void * Realbase_for<T>::operator new( size_t size)
template <class T>
void Realbase_for<T>::operator delete( void *p, size_t )
{ MemoryPool<Realbase_for<T> >::global_allocator().free(p); }
{ (MemoryPool<Realbase_for<T> >::global_allocator().free)(p); }
typedef Realbase_for<long> RealLong;
typedef Realbase_for<double> RealDouble;

View File

@ -21,7 +21,7 @@
#include <CGAL/ImageIO.h>
/* read analyse format header
/* read analyze format header
return:
-1: error

View File

@ -108,8 +108,8 @@ typedef std::uint32_t CGAL_UINT32;
*/
/*
* Bitmapfileheader defines a single bitmap image. Its analogue in the
* Windows SDK is the Bitmapfileheader. Its analogues in the OS/2 Toolkit are
* Bitmapfileheader defines a single bitmap image. Its analog in the
* Windows SDK is the Bitmapfileheader. Its analogs in the OS/2 Toolkit are
* the Bitmapfileheader and Bitmapfileheader2 structures.
*
* A BITMAPHEADER structure is always concatenated to the end of a
@ -128,7 +128,7 @@ typedef struct Bitmapfileheader
/*
* BITMAPARRAYHEADER is used to establish a linked list of Bitmapfileheader
* structures for a bitmap file with multiple images in it. There is no
* equivalent structure in the Windows SDK. Its analogues in the OS/2 toolkit
* equivalent structure in the Windows SDK. Its analogs in the OS/2 toolkit
* are the BITMAPARRAYFILEHEADER and BITMAPARRAYFILEHEADER2 structures.
*
* A Bitmapfileheader structure is always concatenated to the end of a
@ -145,9 +145,9 @@ typedef struct BITMAPARRAYHEADER
/*
* BITMAPHEADER defines the properties of a bitmap. Its analogues in the
* BITMAPHEADER defines the properties of a bitmap. Its analogs in the
* Windows SDK are the BITMAPCOREINFOHEADER and BITMAPINFOHEADER structures.
* Its analogues in the OS/2 Toolkit are the BITMAPINFOHEADER and
* Its analogs in the OS/2 Toolkit are the BITMAPINFOHEADER and
* BITMAPINFOHEADER2 structures.
*
* A color table is concatenated to this structure. The number of elements in
@ -188,8 +188,8 @@ typedef struct BITMAPHEADER
/*
* RGB defines a single color palette entry. Its analogues in the Windows SDK
* are the RGBTRIPLE and RGBQUAD structures. Its analogues in the OS/2
* RGB defines a single color palette entry. Its analogs in the Windows SDK
* are the RGBTRIPLE and RGBQUAD structures. Its analogs in the OS/2
* Toolkit are the RGB and RGB2 structure.
*/
typedef struct RGB

View File

@ -283,7 +283,7 @@ RFcoefficientType * InitRecursiveCoefficients( double x,
b0 /= x;
b1 /= x;
/*--- normalisation ---*/
/*--- normalization ---*/
switch ( derivative ) {
default :
CGAL_FALLTHROUGH;

View File

@ -25,7 +25,7 @@ Compares the \f$ \theta\f$-coordinates of `p` and `q` relatively to `sphere`.
\sa \link compare_x_grp `CGAL::compare_x()` \endlink
\sa \link compare_xy_grp `CGAL::compare_xy()` \endlink
\sa \link compare_xy_grp `CGAL::compare_xy()` \endlink
\sa \link compare_xyz_grp `CGAL::compare_xyz()` \endlink
\sa \link compare_x_at_y_grp `CGAL::compare_x_at_y()` \endlink
\sa \link compare_y_grp `CGAL::compare_y()` \endlink
\sa \link compare_yx_grp `CGAL::compare_yx()` \endlink

View File

@ -75,7 +75,7 @@ Data structures specialized to classify clusters.
\cgalPkgDependsOn{\ref PkgSolverInterface, \ref PkgSpatialSearchingD}
\cgalPkgBib{cgal:lm-clscm-12}
\cgalPkgLicense{\ref licensesGPL "GPL"}
\cgalPkgDemo{Operations on Polyhedra,polyhedron_3.zip}
\cgalPkgDemo{CGAL Lab,CGALlab.zip}
\cgalPkgShortInfoEnd
\cgalPkgDescriptionEnd

View File

@ -130,7 +130,7 @@ public:
std::nth_element (z.begin(), z.begin() + (z.size() / 10), z.end());
dtm_x(i,j) = z[z.size() / 10];
}
dem.free();
(dem.free)();
if (grid.width() * grid.height() > input.size())
values.resize (input.size(), compressed_float(0));
@ -162,7 +162,7 @@ public:
values[*it] = v;
}
}
dtm_x.free();
(dtm_x.free)();
}

View File

@ -100,7 +100,7 @@ public:
std::size_t J = grid.y(i);
values[i] = float(dtm(I,J) - get (point_map, *(input.begin() + i)).z());
}
dtm.free();
(dtm.free)();
}
}

View File

@ -100,7 +100,7 @@ public:
std::size_t J = grid.y(i);
values[i] = float(get (point_map, *(input.begin() + i)).z() - dtm(I,J));
}
dtm.free();
(dtm.free)();
}
}

View File

@ -102,7 +102,7 @@ public:
std::size_t J = grid.y(i);
values[i] = dtm(I,J);
}
dtm.free();
(dtm.free)();
}
}

View File

@ -71,7 +71,7 @@ public:
{
}
void free()
void free BOOST_PREVENT_MACRO_SUBSTITUTION ()
{
m_raw.reset();
m_sparse.reset();

View File

@ -662,7 +662,7 @@ namespace CGAL {
}
/** Create a new dart and add it to the map.
* The marks of the darts are initialised with mmask_marks, i.e. the dart
* The marks of the darts are initialized with mmask_marks, i.e. the dart
* is unmarked for all the marks.
* @return a Dart_descriptor on the new dart.
*/
@ -3707,6 +3707,9 @@ namespace CGAL {
this->automatic_attributes_management = newval;
}
void set_automatic_attributes_management_without_correction(bool newval)
{ this->automatic_attributes_management = newval; }
/** Create an half-edge.
* @return a dart of the new half-edge.
*/
@ -4111,7 +4114,7 @@ namespace CGAL {
}
if (ah != null_descriptor)
{
// We initialise the 0-atttrib to ah
// We initialize the 0-atttrib to ah
internal::Set_i_attribute_of_dart_functor<Self, 0>::
run(*this, d1, ah);
}

View File

@ -228,7 +228,7 @@ struct Call_functor_if_both_attributes_have_point
const Pointconverter&)
{ return Map2::null_descriptor; }
};
// Specialisation with i==0 and both attributes have points.
// Specialization with i==0 and both attributes have points.
template< typename Map1, typename Map2, typename Pointconverter >
struct Call_functor_if_both_attributes_have_point<Map1, Map2, 0,
Pointconverter, true, true>
@ -285,7 +285,7 @@ struct Copy_attribute_functor_if_nonvoid
cmap2.template set_attribute<i>(dh2, res);
}
};
// Specialisation when attr1 is void, and attr2 is non void i==0. Nothing to
// Specialization when attr1 is void, and attr2 is non void i==0. Nothing to
// copy, but if 0-attributes has point and i==0, we need to create
// vertex attributes.
template<typename Map1, typename Map2, typename Converters,
@ -310,7 +310,7 @@ struct Copy_attribute_functor_if_nonvoid<Map1, Map2, Converters,
set_attribute<0>(dh2, cmap2.template create_attribute<0>());
}
};
// Specialisation when attr1 is void, and attr2 is non void i!=0.
// Specialization when attr1 is void, and attr2 is non void i!=0.
// Nothing to do.
template<typename Map1, typename Map2, typename Converters, unsigned int i,
typename Pointconverter, typename Attr2>
@ -360,7 +360,7 @@ struct Copy_dart_info_functor_if_nonvoid
const DartInfoConverter& converter)
{ converter(map1, map2, dh1, dh2); }
};
// Specialisation when Info1 is void.
// Specialization when Info1 is void.
template<typename Map1, typename Map2, typename DartInfoConverter,
typename Info2>
struct Copy_dart_info_functor_if_nonvoid<Map1, Map2, DartInfoConverter,
@ -373,7 +373,7 @@ struct Copy_dart_info_functor_if_nonvoid<Map1, Map2, DartInfoConverter,
const DartInfoConverter&)
{}
};
// Specialisation when Info2 is void.
// Specialization when Info2 is void.
template<typename Map1, typename Map2, typename DartInfoConverter,
typename Info1>
struct Copy_dart_info_functor_if_nonvoid<Map1, Map2, DartInfoConverter,
@ -386,7 +386,7 @@ struct Copy_dart_info_functor_if_nonvoid<Map1, Map2, DartInfoConverter,
const DartInfoConverter&)
{}
};
// Specialisation when both Info1 and Info2 are void.
// Specialization when both Info1 and Info2 are void.
template<typename Map1, typename Map2, typename DartInfoConverter>
struct Copy_dart_info_functor_if_nonvoid<Map1, Map2, DartInfoConverter,
CGAL::Void, CGAL::Void>

View File

@ -36,7 +36,7 @@ namespace CGAL
{
static bool run(const CMap& amap, typename CMap::Dart_const_descriptor adart)
{
// TODO? Optimisation for dim-2, and to not test all the darts of the cell?
// TODO? Optimization for dim-2, and to not test all the darts of the cell?
bool res = true;
for ( CGAL::CMap_dart_const_iterator_of_cell<CMap,i> it(amap, adart);
res && it.cont(); ++it )
@ -462,7 +462,7 @@ namespace CGAL
{
static bool run(const CMap& amap, typename CMap::Dart_const_descriptor adart)
{
// TODO ? Optimisation possible to not test all the darts of the cell ?
// TODO ? Optimization possible to not test all the darts of the cell ?
bool res = true;
for ( CGAL::CMap_dart_const_iterator_of_cell<CMap,i> it(amap, adart);
res && it.cont(); ++it )

View File

@ -168,7 +168,7 @@ namespace CGAL {
void init_storage()
{
// Allocate a dart for null_dart_descriptor
assert(mdarts.empty()); // the compact container is empty
CGAL_assertion(mdarts.empty()); // the compact container is empty
Dart_index local_null_dart_descriptor = mdarts.emplace();
if(local_null_dart_descriptor!=0)
{

View File

@ -106,7 +106,7 @@ public:
void init()
{
m_free_list=std::stack<size_type>();
assert(m_free_list.empty());
CGAL_assertion(m_free_list.empty());
if(m_cc_with_index->capacity()>0)
{ m_used.assign(m_cc_with_index->capacity(), false); }
else { m_used.clear(); }

View File

@ -141,7 +141,7 @@ namespace CGAL {
Dart_descriptor get_f(unsigned int i) const
{
assert(i<=dimension);
CGAL_assertion(i<=dimension);
return mf[i];
}
@ -156,7 +156,7 @@ namespace CGAL {
}
protected:
/** Default constructor: no real initialisation,
/** Default constructor: no real initialization,
* because this is done in the combinatorial map class.
*/
Dart_without_info()
@ -300,7 +300,7 @@ namespace CGAL {
{ return Base::operator==(other) && minfo==other.minfo; }
protected:
/** Default constructor: no real initialisation,
/** Default constructor: no real initialization,
* because this is done in the combinatorial or generalized map class.
*/
Dart()=default; // default => zero-initializing built-in types

View File

@ -115,7 +115,7 @@ public:
#if defined(CGAL_USE_LEDA) || defined(CGAL_USE_CORE)
/*
The specialised functor for computing the directions of cone boundaries exactly
The specialized functor for computing the directions of cone boundaries exactly
with a given cone number and a given initial direction.
*/
template <>

View File

@ -199,7 +199,7 @@ protected:
std::vector<typename Graph_::vertex_descriptor> S(vit, ve);
std::sort(S.begin (), S.end (), orderD1);
// Step 2: Initialise an empty set to store vertices sorted by orderD2
// Step 2: initialize an empty set to store vertices sorted by orderD2
typedef CGAL::ThetaDetail::Plane_scan_tree<typename Graph_::vertex_descriptor,
typename Graph_::vertex_descriptor,
Less_by_direction,

View File

@ -185,7 +185,7 @@ protected:
std::vector<typename Graph_::vertex_descriptor> S(vit, ve);
std::sort(S.begin (), S.end (), orderD1);
// Step 2: Initialise an empty set to store vertices sorted by orderD2
// Step 2: initialize an empty set to store vertices sorted by orderD2
Point_set pst(orderD2);
// Step 3: visit S in orderD1

View File

@ -93,7 +93,7 @@ std::string gnuplot_vertex_list (const Graph& g);
/* This struct is defined to use partial specialization to generate arrow styles differently for
* directed and undirected graphs.
* Note: Need to use structs because C++ before 11 doesn't allow partial specialisation
* Note: Need to use structs because C++ before 11 doesn't allow partial specialization
* for functions
*/
template <typename Graph, typename Directedness=typename Graph::directed_selector>

File diff suppressed because one or more lines are too long

View File

@ -17,7 +17,7 @@ configuration.
create <B>a single executable</B> for 'source' linked with
compilations of all other source files
(`*.cc`, `*.cp`, `*.cxx`, `*.cpp`, `*.CPP`, `*.c++`, or `*.C`).
This behaviour is usually needed for (graphical) demos.
This behavior is usually needed for (graphical) demos.
If the parameter is not given, the script creates <B>one executable for each given
source file</B>.

View File

@ -47,7 +47,7 @@ also avoid CMake to link with the native threads support library on your system.
Much of the \cgal code contains assert statements for preconditions, and postconditions of functions
as well as in the code. These assertions can be switched on and off per package
and the user can change the error behaviour. For details see Section \ref secchecks
and the user can change the error behavior. For details see Section \ref secchecks
of Chapter \ref Chapter_STL_Extensions_for_CGAL.
\section Preliminaries_flags Compile-time Flags to Control Inlining

View File

@ -15,7 +15,7 @@ supporting C++17 or later.
| | `Clang` \cgalFootnote{<A HREF="https://clang.llvm.org/">\cgalFootnoteCode{https://clang.llvm.org/}</A>} compiler version 15.0.7 |
| \ms Windows | \gnu `g++` 11.4.0 or later\cgalFootnote{<A HREF="https://gcc.gnu.org/">\cgalFootnoteCode{https://gcc.gnu.org/}</A>} |
| | \ms Visual `C++` 15.9, 16.10, 17.0 (\visualstudio 2017, 2019, and 2022)\cgalFootnote{<A HREF="https://visualstudio.microsoft.com/">\cgalFootnoteCode{https://visualstudio.microsoft.com/}</A>} |
| MacOS X | \gnu `g++` 11.4.0 or later\cgalFootnote{<A HREF="https://gcc.gnu.org/">\cgalFootnoteCode{https://gcc.gnu.org/}</A>} |
| macOS | \gnu `g++` 11.4.0 or later\cgalFootnote{<A HREF="https://gcc.gnu.org/">\cgalFootnoteCode{https://gcc.gnu.org/}</A>} |
| | Apple `Clang` compiler versions 10.0.1, 12.0.5, and 15.0.0 |
<!-- Windows supported version are also listed on windows.html (must change both) -->

View File

@ -193,7 +193,7 @@ An example of a raster image with a rainbow ramp representing height
is given in \cgalFigureRef{TutorialGISFigRastering}.
\cgalFigureBegin{TutorialGISFigRastering, raster.jpg}
Raster visualisation of height using a rainbow ramp, ranging from
Raster visualization of height using a rainbow ramp, ranging from
light blue for low values to dark red for high values.
\cgalFigureEnd

View File

@ -38,7 +38,7 @@ other contexts can be done by obtaining a commercial license from
[GeometryFactory](https://www.geometryfactory.com). For more details
see the \ref license "License" page.
<h2>Acknowledgement</h2>
<h2>Acknowledgment</h2>
We provide bibtex entries for each package so that you can cite \cgal correctly in your publications,
see the page \ref how_to_cite_cgal.

View File

@ -189,7 +189,7 @@
}
@techreport{a-am3sa-91
, author = "C. Aarmstrong"
, author = "C. Armstrong"
, title = "Abstraction and meshing of 3d stress analysis models"
, type = "Progress Report"
, institution = "SERC Directorate"
@ -7875,7 +7875,7 @@ cell neighborhood in $O(m)$ time."
@article{ah-epmfc-77
, author = "K. Appel and W. Haken"
, title = "Every planar map is four colourable, Part {I}: discharging"
, title = "Every planar map is four colorable, Part {I}: discharging"
, journal = "Illinois J. Math."
, volume = 21
, year = 1977
@ -9513,7 +9513,7 @@ sites with respect to the geodesic metric within a simple $n$-sided polygon."
, number = 1
, year = 1993
, pages = "27--35"
, keywords = "polygon, triagulation"
, keywords = "polygon, triangulation"
, update = "95.05 korneenko"
}
@ -28105,7 +28105,7 @@ determinants."
}
@inproceedings{b-afvab-91
, author = "B. Bruenning"
, author = "L. Bruenning"
, title = "Air Force Vulnerability Analyses from {BRL-CAD} models"
, booktitle = "Proc. BRL-CAD Symposium `91"
, publisher = "American Defense Preparadness Assoc."
@ -42334,7 +42334,7 @@ Contains C code."
, pages = "122--128"
, annote = "Describes some choices for data structures for
representing a triangulation, and methods for
point-location, edge-neighbour and vertex-neighbour
point-location, edge-neighbor and vertex-neighbor
problems."
}
@ -48823,7 +48823,7 @@ library."
@article{d-cpcp-89
, author = "Z. Drezner"
, title = "Conditional $p$-centre problems"
, title = "Conditional $p$-center problems"
, journal = "Transp. Sci."
, volume = 23
, number = 1
@ -52672,13 +52672,14 @@ library."
, pages = "259--277"
}
@article{es-nfnpp-?
@article{es-nfnpp-89
, author = "H. Edelsbrunner and Steven S. Skiena"
, title = "On the number of furthest neighbour pairs in a point set"
, journal = "Amer. Math. Monthly"
, volume = "?"
, year = "?"
, pages = "?"
, volume = "96"
, number = "7"
, year = "1989"
, pages = "614--618"
, keywords = "pointset, furthest pair"
, succeeds = "es-nfnpp-86"
, update = "98.03 mitchell, 95.09 korneenko"
@ -52692,7 +52693,7 @@ library."
, institution = "Dept. Comput. Sci., Univ. Illinois"
, address = "Urbana, IL"
, year = 1986
, precedes = "es-nfnpp-?"
, precedes = "es-nfnpp-89"
, update = "98.03 mitchell, 95.09 korneenko"
}
@ -58899,7 +58900,7 @@ reflection formula and derives a surprising relationship between them."
@inproceedings{fs-erqnn-95
, author = "Robin Y. Flatland and Charles V. Stewart"
, title = "Extending Range Queries and Nearest Neighbours"
, title = "Extending Range Queries and Nearest Neighbors"
, booktitle = "Proc. 7th Canad. Conf. Comput. Geom."
, year = 1995
, pages = "267--272"
@ -58908,7 +58909,7 @@ reflection formula and derives a surprising relationship between them."
@article{fs-erqnn-00
, author = "R. Y. Flatland and C. V. Stewart"
, title = "Extending range queries and nearest neighbours"
, title = "Extending range queries and nearest neighbors"
, journal = "Comput. Geom. Theory Appl."
, volume = 17
, year = 2000
@ -61110,7 +61111,7 @@ Complete thesis available only on microfilm from Harvard, since Harvard did not
, volume = 23
, year = 1977
, pages = "111--121"
, annote = "Uses Least Diagonal Neighbour Triangulation and Linear
, annote = "Uses Least Diagonal Neighbor Triangulation and Linear
approximation over triangles to weighted VD to estimate
area of weighted VD polygon of a given tree."
}
@ -65127,7 +65128,7 @@ Complete thesis available only on microfilm from Harvard, since Harvard did not
, title = "A computational theoretic framework for {Minkowski} addition and decomposition of boundary represented regions"
, type = "Report"
, number = "??"
, institution = "National Centre Softw. Develop. Comput. Tech., Tata Inst. Fund. Res."
, institution = "National Centre for Softw. Develop. and Comput. Tech., Tata Inst. of Fund. Res."
, address = "Bombay, India"
, year = 1985
}
@ -70200,7 +70201,7 @@ cos, etc."
@article{g-pcief-92
, author = "S. Guha"
, title = "Parallel computation of internal and external farthest neighbours in simple polygons"
, title = "Parallel computation of internal and external farthest neighbors in simple polygons"
, journal = "Internat. J. Comput. Geom. Appl."
, volume = 2
, number = 2
@ -76237,7 +76238,7 @@ processing. Contains C code."
@inproceedings{hns-saann-88
, author = "K. Hinrichs and J. Nievergelt and P. Schorn"
, title = "A sweep algorithm for the all-nearest-neighbours problem"
, title = "A sweep algorithm for the all-nearest-neighbors problem"
, booktitle = "Computational Geometry and its Applications"
, nickname = "CG '88"
, site = "W{\"u}rzburg"
@ -76264,7 +76265,7 @@ processing. Contains C code."
@inproceedings{hns-arsa2-90
, author = "K. Hinrichs and J. Nievergelt and P. Schorn"
, title = "An all-round sweep algorithm for $2$-dimensional nearest-neighbour problems"
, title = "An all-round sweep algorithm for $2$-dimensional nearest-neighbor problems"
, booktitle = "Proc. 2nd Canad. Conf. Comput. Geom."
, year = 1990
, pages = "343--346"
@ -101937,7 +101938,7 @@ used in many computational geometry algorithms. Contains C++ code."
@inproceedings{mp-drlvd-84
, author = "T. Matsuyama and T. Phillips"
, title = "Digital Realization of the Labelled {Voronoi} Diagram and its Application to Closed Boundary Detection"
, title = "Digital Realization of the Labeled {Voronoi} Diagram and its Application to Closed Boundary Detection"
, booktitle = "Proc. IEEE Internat. Conf. Pattern Recogn."
, year = 1984
, pages = "478--480"
@ -102354,7 +102355,7 @@ used in many computational geometry algorithms. Contains C++ code."
, title = "Priority search trees"
, type = "Technical {Report}"
, number = "CSL-81-5"
, institution = "XEROX Palo Alto Research Centre"
, institution = "XEROX Palo Alto Research Center"
, address = "Palo Alto, CA"
, year = 1981
, update = "97.11 bibrelex"
@ -108313,7 +108314,7 @@ problems in computational geometry is presented."
@inproceedings{mnsw-cnnsq-95
, author = "David M. Mount and Nathan S. Netanyahu and Ruth Silverman and Angela Y. Wu"
, title = "Chromatic Nearest Neighbour Searching: a Query Sensitive Approach"
, title = "Chromatic Nearest Neighbor Searching: a Query Sensitive Approach"
, booktitle = "Proc. 7th Canad. Conf. Comput. Geom."
, year = 1995
, pages = "261--266"
@ -108323,7 +108324,7 @@ problems in computational geometry is presented."
@article{mnsw-cnnsq-00
, author = "David M. Mount and Nathan S. Netanyahu and Ruth Silverman and Angela Y. Wu"
, title = "Chromatic Nearest Neighbour Searching: a Query Sensitive Approach"
, title = "Chromatic Nearest Neighbor Searching: a Query Sensitive Approach"
, journal = "Comput. Geom. Theory Appl."
, volume = 17
, year = 2000
@ -109256,7 +109257,7 @@ problems in computational geometry is presented."
, update = "95.01 korneenko"
, annote = "Exposition of author's research in CGeo \& CTop in
three directions: geometric modelling algorithms via partition
of unity; discrete analogue of the index of vector field
of unity; discrete analog of the index of vector field
rotation for singular point and separatrix search; distance
functions and shortest paths on metric spaces."
}
@ -116182,7 +116183,7 @@ dither and stipple patterns."
@techreport{plvt-edecl-96
, author = "P. Parodi and R. Lancewicki and A. Vijh and J. K. Tsotsos"
, title = "Empirically-derived Estimates of the Complexity of Labelling Line Drawings of Polyhedral Scenes"
, title = "Empirically-derived Estimates of the Complexity of Labeling Line Drawings of Polyhedral Scenes"
, number = "RBCV-TR-96-52"
, institution = "Dept. Comput. Sci., Univ. Toronto"
, address = "Toronto, ON"
@ -116759,7 +116760,7 @@ dither and stipple patterns."
@article{p-rflg-72
, author = "T. Pavlidis"
, title = "Representation of figures by labelled graphs"
, title = "Representation of figures by labeled graphs"
, journal = "Pattern Recogn."
, volume = 4
, year = 1972
@ -133233,7 +133234,7 @@ Contains C code."
@incollection{s-bdnni-81
, author = "R. Sibson"
, title = "A Brief Description of Natural Neighbour Interpolation"
, title = "A Brief Description of Natural Neighbor Interpolation"
, editor = "Vic Barnet"
, booktitle = "Interpreting Multivariate Data"
, publisher = "John Wiley \& Sons"
@ -133630,7 +133631,7 @@ Contains C code."
@inproceedings{sc-aipta-86
, author = "J. K. Sircar and J. A. Cerbrian"
, title = "Application of image processing techniques to the automated labelling of raster digitized contours"
, title = "Application of image processing techniques to the automated labeling of raster digitized contours"
, booktitle = "Proc. 2nd Internat. Sympos. Spatial Data Handling"
, year = 1986
, pages = "171--184"
@ -141509,7 +141510,7 @@ of geometric optics."
@incollection{ty-vrndt-88
, author = "J. Toriwaki and S. Yokoi"
, title = "Voronoi and related neighbours on digitized two-dimensional space with applications to texture analysis"
, title = "Voronoi and related neighbors on digitized two-dimensional space with applications to texture analysis"
, editor = "G. T. Toussaint"
, booktitle = "Computational Morphology"
, publisher = "North-Holland"
@ -151991,7 +151992,7 @@ month = {jun},
articleno = {156},
numpages = {14},
keywords = {polygonal surface mesh, Surface reconstruction, kinetic framework, surface approximation}
}
}
@article{levismooth,
title={Smooth Rotation Enhanced As-Rigid-As-Possible Mesh Animation},

View File

@ -6,10 +6,10 @@
var current_version_local = 'master'
var all_versions = [
'master',
'6.0',
'6.0.1',
'latest',
'5.6.1',
'5.5.4',
'5.6.2',
'5.5.5',
'5.4.5',
'5.3.2',
'5.2.4',

View File

@ -6,10 +6,10 @@
var current_version_local = 'master'
var all_versions = [
'master',
'6.0',
'6.0.1',
'latest',
'5.6.1',
'5.5.4',
'5.6.2',
'5.5.5',
'5.4.5',
'5.3.2',
'5.2.4',

View File

@ -6,10 +6,10 @@
var current_version_local = 'master'
var all_versions = [
'master',
'6.0',
'6.0.1',
'latest',
'5.6.1',
'5.5.4',
'5.6.2',
'5.5.5',
'5.4.5',
'5.3.2',
'5.2.4',

View File

@ -111,14 +111,24 @@ template<class T>inline std::enable_if_t<std::is_empty<T>::value, T> approx(T){r
template<class T>inline std::enable_if_t<std::is_empty<T>::value, int> depth(T){return -1;}
namespace internal{
template <typename AT, typename ET, typename E2A>
struct Evaluate<Lazy<AT,ET,E2A>>
{
void operator()(const Lazy<AT,ET,E2A>& l)
template <typename AT, typename ET, typename E2A>
struct Evaluate<Lazy<AT, ET, E2A>>
{
exact(l);
}
void operator()(const Lazy<AT, ET, E2A>& l)
{
exact(l);
}
};
template <typename ET>
struct Evaluate<Lazy_exact_nt<ET>>
{
void operator()(const Lazy_exact_nt<ET>& l)
{
exact(l);
}
};
} // internal namespace
// For an iterator, exact/approx applies to the objects it points to
@ -1377,7 +1387,7 @@ struct Ith {
typedef T2 result_type;
// We keep a Sign member object
// for future utilisation, in case
// for future utilization, in case
// we have pairs of 2 T2 objects e.g.
// for a numeric_point vector returned
// from a construction of a possible

View File

@ -24,7 +24,7 @@ namespace CGAL {
* - GMap_cell_iterator<Map,i,dim>: one dart per each i-cell
* - GMap_one_dart_per_incident_cell_iterator<Map,Ite,i,dim>
* - GMap_one_dart_per_cell_iterator<Map,Ite,i,dim>
* - one specialisation of the CMap_cell_iterator for the
* - one specialization of the CMap_cell_iterator for the
* GMap_dart_iterator_basic_of_all iterator
*/

View File

@ -249,7 +249,7 @@ namespace CGAL {
class GMap_dart_iterator_basic_of_two_alpha;
/* Class CMap_dart_iterator_basic_of_two_alpha<Ai,1>: to iterate
* on the darts of the orbit <Ai,Ai+1>: Ai<Ai+1<=dimension.
* specialisation because here Aio(Ai+1) is not an involution.
* specialization because here Aio(Ai+1) is not an involution.
* Basic classes do not guaranty correct marks (i.e. do not unmark darts in
* the destructor, possible problem with the rewind). If you are not sure,
* use CMap_dart_iterator_basic_of_two_alpha.

View File

@ -568,7 +568,7 @@ namespace CGAL {
}
/** Create a new dart and add it to the map.
* The marks of the darts are initialised with mmask_marks, i.e. the dart
* The marks of the darts are initialized with mmask_marks, i.e. the dart
* is unmarked for all the marks.
* @return a Dart_descriptor on the new dart.
*/
@ -2946,6 +2946,9 @@ namespace CGAL {
this->automatic_attributes_management = newval;
}
void set_automatic_attributes_management_without_correction(bool newval)
{ this->automatic_attributes_management = newval; }
/** Create an half-edge.
* @return a dart of the new half-edge.
*/
@ -3352,7 +3355,7 @@ namespace CGAL {
}
if (ah != null_descriptor)
{
// We initialise the 0-atttrib to ah
// We initialize the 0-atttrib to ah
CGAL::internal::Set_i_attribute_of_dart_functor<Self, 0>::
run(*this, d1, ah);
mark(*it, amark);
@ -3471,7 +3474,7 @@ namespace CGAL {
<CGAL::internal::GMap_group_attribute_functor_of_dart<Self>, 0>::
run(*this,d1,d2);
// We initialise the 0-atttrib to ah
// We initialize the 0-atttrib to ah
CGAL::internal::Set_i_attribute_of_dart_functor<Self, 0>::
run(*this, d2, ah);
}

View File

@ -35,7 +35,7 @@ namespace CGAL
{
static bool run(const GMap& amap, typename GMap::Dart_const_descriptor adart)
{
// TODO? Optimisation for dim-2, and to not test all the darts of the cell?
// TODO? Optimization for dim-2, and to not test all the darts of the cell?
bool res = true;
for ( CGAL::GMap_dart_const_iterator_of_cell<GMap,i> it(amap, adart);
res && it.cont(); ++it )
@ -258,7 +258,7 @@ namespace CGAL
{
static bool run(const GMap& amap, typename GMap::Dart_const_descriptor adart)
{
// TODO ? Optimisation possible to not test all the darts of the cell ?
// TODO ? Optimization possible to not test all the darts of the cell ?
bool res = true;
for ( CGAL::GMap_dart_const_iterator_of_cell<GMap,i> it(amap, adart);
res && it.cont(); ++it )

View File

@ -15,7 +15,7 @@ a <I>state</I> that uniquely determines the subsequent numbers being
produced.
It can be very useful, e.g. for debugging, to reproduce a sequence of
random numbers. This can be done by either initialising with a fixed
random numbers. This can be done by either initializing with a fixed
seed, or by using the state functions as described below.
\note A `Random` object is not deterministic when used by several threads at

View File

@ -62,7 +62,7 @@ public:
const double& size() const { return second; }
const double& sine() const { return first; }
// q1<q2 means q1 is prioritised over q2
// q1<q2 means q1 is prioritized over q2
// ( q1 == *this, q2 == q )
bool operator<(const Quality& q) const
{

View File

@ -59,6 +59,11 @@ public:
public Q_SLOTS:
void processInput(CGAL::Object o);
void setZValue(int z)
{
pi->setZValue(z);
}
typedef CGAL::Polygon_2<K> Polygon;
typedef CGAL::Polygon_with_holes_2<K> Polygon_with_holes;
@ -89,6 +94,7 @@ GraphicsViewPolygonWithHolesInput<K>::GraphicsViewPolygonWithHolesInput(QObject
{
pwhItem = new CGAL::Qt::PolygonWithHolesGraphicsItem<Polygon_with_holes>(&pwh);
pwhItem->setBrush(::Qt::yellow);
pwhItem->setZValue(8);
scene_->addItem(pwhItem);
pwhItem->hide();

View File

@ -50,6 +50,11 @@ public:
bool eventFilter(QObject *obj, QEvent *event);
void setZValue(int v)
{
z = v;
}
protected:
// protected constructor
GraphicsViewPolylineInput_non_templated_base(QObject* parent,
@ -80,6 +85,7 @@ private:
int n_;
QPointF sp;
QGraphicsScene *scene_;
int z;
}; // end class GraphicsViewPolylineInput_non_templated_base
template <typename K>

View File

@ -82,6 +82,7 @@ GraphicsViewPolylineInput_non_templated_base::mousePressEvent(QGraphicsSceneMous
qpp.addPolygon(polygon);
path_item = new QGraphicsPathItem(qpp);
path_item->setPen(QPen(::Qt::red, 0, ::Qt::SolidLine, ::Qt::RoundCap, ::Qt::RoundJoin));
path_item->setZValue(z);
scene_->addItem(path_item);
return true;
}
@ -98,11 +99,13 @@ GraphicsViewPolylineInput_non_templated_base::rubberbands(const QPointF& p)
}
if(!b && closed_ ){
b = new QGraphicsLineItem();
b->setZValue(z);
b->setPen(QPen(::Qt::red, 0, ::Qt::SolidLine, ::Qt::RoundCap, ::Qt::RoundJoin));
scene_->addItem(b);
}
if( !e){
e = new QGraphicsLineItem();
e->setZValue(z);
e->setPen(QPen(::Qt::red, 0, ::Qt::SolidLine, ::Qt::RoundCap, ::Qt::RoundJoin));
scene_->addItem(e);
}
@ -165,6 +168,7 @@ GraphicsViewPolylineInput_non_templated_base::keyPressEvent ( QKeyEvent * event
QPainterPath qpp;
qpp.addPolygon(polygon);
path_item = new QGraphicsPathItem(qpp);
path_item->setZValue(z);
path_item->setPen(QPen(::Qt::red, 0, ::Qt::SolidLine, ::Qt::RoundCap, ::Qt::RoundJoin));
scene_->addItem(path_item);
rubberbands(sp);

View File

@ -0,0 +1,235 @@
// Copyright (c) 2024 GeometryFactory Sarl (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) : Andreas Fabri <Andreas.Fabri@geometryfactory.com>
// Laurent Rineau <Laurent.Rineau@geometryfactory.com>
#ifndef CGAL_QT_MULTIPOLYGON_WITH_HOLES_GRAPHICS_ITEM_H
#define CGAL_QT_MULTIPOLYGON_WITH_HOLES_GRAPHICS_ITEM_H
#include <CGAL/license/GraphicsView.h>
#include <CGAL/Bbox_2.h>
#include <CGAL/Multipolygon_with_holes_2.h>
#include <CGAL/Qt/PainterOstream.h>
#include <CGAL/Qt/GraphicsItem.h>
#include <CGAL/Qt/Converter.h>
#include <QGraphicsScene>
#include <QPainter>
#include <QStyleOption>
namespace CGAL {
namespace Qt {
template <typename P>
class MultipolygonWithHolesGraphicsItem : public GraphicsItem
{
typedef typename P::Traits Traits;
public:
MultipolygonWithHolesGraphicsItem(P* p_);
void modelChanged();
public:
QRectF boundingRect() const;
void paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget);
const QBrush& brush() const
{
return brush_;
}
void setBrush(const QBrush& b)
{
brush_ = b;
}
const QPen& verticesPen() const
{
return vertices_pen;
}
const QPen& edgesPen() const
{
return edges_pen;
}
void setVerticesPen(const QPen& pen)
{
vertices_pen = pen;
}
void setEdgesPen(const QPen& pen)
{
edges_pen = pen;
}
bool drawVertices() const
{
return draw_vertices;
}
void setDrawVertices(const bool b)
{
draw_vertices = b;
update();
}
protected:
void updateBoundingBox();
P * poly;
QPainter* m_painter;
PainterOstream<Traits> painterostream;
typename Traits::Point_2 p;
QRectF bounding_rect;
QBrush brush_;
QPen vertices_pen;
QPen edges_pen;
bool draw_vertices;
};
template <typename P>
MultipolygonWithHolesGraphicsItem<P>::MultipolygonWithHolesGraphicsItem(P * p_)
: poly(p_), painterostream(0),
draw_vertices(true)
{
setVerticesPen(QPen(::Qt::red, 3.));
if(poly->number_of_polygons_with_holes() == 0){
this->hide();
}
updateBoundingBox();
setZValue(0);
}
template <typename P>
QRectF
MultipolygonWithHolesGraphicsItem<P>::boundingRect() const
{
return bounding_rect;
}
template <typename P>
void
MultipolygonWithHolesGraphicsItem<P>::paint(QPainter *painter,
const QStyleOptionGraphicsItem * /*option*/,
QWidget * /*widget*/)
{
using Polygon_with_holes_2 = typename P::Polygon_with_holes_2;
using General_polygon_2 = typename Polygon_with_holes_2::General_polygon_2;
Converter<Traits> convert;
for(const auto& pwh : poly->polygons_with_holes()){
QPainterPath border;
General_polygon_2 boundary = pwh.outer_boundary();
painter->setPen(this->edgesPen());
typename General_polygon_2::Vertex_iterator it = pwh.outer_boundary().vertices_begin();
QPointF firstPoint = convert(*it);
border.moveTo(firstPoint);
painterostream = PainterOstream<Traits>(painter);
for(++it;
it != pwh.outer_boundary().vertices_end();
++it){
border.lineTo(convert(*it));
}
border.lineTo(firstPoint);
for(typename Polygon_with_holes_2::Hole_const_iterator hit = pwh.holes_begin();
hit != pwh.holes_end();
++hit){
typename General_polygon_2::Vertex_iterator it = hit->vertices_begin();
QPointF firstPoint = convert(*it);
border.moveTo(firstPoint);
for(++it;
it != hit->vertices_end();
++it){
border.lineTo(convert(*it));
}
border.lineTo(firstPoint);
}
painter->setBrush(this->brush());
painter->drawPath(border);
}
if(drawVertices()) {
painter->setPen(verticesPen());
QTransform matrix = painter->worldTransform();
painter->resetTransform();
for(const auto& pwh : poly->polygons_with_holes()){
for(typename General_polygon_2::Vertex_iterator it = pwh.outer_boundary().vertices_begin();
it != pwh.outer_boundary().vertices_end();
it++){
QPointF point = matrix.map(convert(*it));
painter->drawPoint(point);
}
for(typename Polygon_with_holes_2::Hole_const_iterator hit = pwh.holes_begin();
hit != pwh.holes_end();
++hit){
for(typename General_polygon_2::Vertex_iterator it = hit->vertices_begin();
it != hit->vertices_end();
it++){
QPointF point = matrix.map(convert(*it));
painter->drawPoint(point);
}
}
}
}
}
// We let the bounding box only grow, so that when vertices get removed
// the maximal bbox gets refreshed in the GraphicsView
template <typename P>
void
MultipolygonWithHolesGraphicsItem<P>::updateBoundingBox()
{
Converter<Traits> convert;
prepareGeometryChange();
if(poly->number_of_polygons_with_holes() == 0){
return;
}
bounding_rect = convert(poly->bbox());
}
template <typename P>
void
MultipolygonWithHolesGraphicsItem<P>::modelChanged()
{
if((poly->number_of_polygons_with_holes() == 0) ){
this->hide();
} else if((poly->number_of_polygons_with_holes() > 0) && (! this->isVisible())){
this->show();
}
updateBoundingBox();
update();
}
} // namespace Qt
} // namespace CGAL
#endif // CGAL_QT_MYLTIPOLYGON_WITH_HOLES_GRAPHICS_ITEM_H

View File

@ -1225,7 +1225,7 @@ Vec Camera::pivotPoint() const { return frame()->pivotPoint(); }
/*! Sets the Camera's position() and orientation() from an OpenGL ModelView
matrix.
This enables a Camera initialisation from an other OpenGL application. \p
This enables a Camera initialization from an other OpenGL application. \p
modelView is a 16 GLdouble vector representing a valid OpenGL ModelView matrix,
such as one can get using: \code GLdouble mvm[16];
glGetDoublev(GL_MODELVIEW_MATRIX, mvm);

View File

@ -270,13 +270,11 @@ private Q_SLOTS:
/*! @name Mouse event handlers */
//@{
protected:
virtual void mousePressEvent(QMouseEvent *const event, Camera *const camera);
virtual void mouseMoveEvent(QMouseEvent *const event, Camera *const camera);
virtual void mouseReleaseEvent(QMouseEvent *const event,
Camera *const camera);
virtual void mouseDoubleClickEvent(QMouseEvent *const event,
Camera *const camera);
virtual void wheelEvent(QWheelEvent *const event, Camera *const camera);
void mousePressEvent (QMouseEvent *const event, Camera *const camera) override;
void mouseMoveEvent (QMouseEvent *const event, Camera *const camera) override;
void mouseReleaseEvent (QMouseEvent *const event, Camera *const camera) override;
void mouseDoubleClickEvent(QMouseEvent *const event, Camera *const camera) override;
void wheelEvent(QWheelEvent *const event, Camera *const camera) override;
//@}
public:
@ -299,7 +297,7 @@ public:
/*! @name MouseGrabber implementation */
//@{
public:
virtual void checkIfGrabsMouse(int x, int y, const Camera *const camera);
void checkIfGrabsMouse(int x, int y, const Camera *const camera) override;
//@}
#ifndef DOXYGEN

Some files were not shown because too many files have changed in this diff Show More