// ====================================================================== // // Copyright (c) 1999 The CGAL Consortium // // This software and related documentation is part of an INTERNAL release // of the Computational Geometry Algorithms Library (CGAL). It is not // intended for general use. // // ---------------------------------------------------------------------- // // release : // release_date : // // file : predicate_classes_2.h // package : _2 // revision : $Revision$ // revision_date : $Date$ // author(s) : Stefan Schirra // // coordinator : MPI, Saarbruecken () // ====================================================================== #ifndef CGAL_PREDICATES_CLASSES_2_H #define CGAL_PREDICATES_CLASSES_2_H CGAL_BEGIN_NAMESPACE template struct X_equal_2; template struct Y_equal_2; template struct Compare_x_2; template struct Compare_y_2; template struct Compare_deltax_deltay_2; template struct Compare_xy_2; template struct Less_xy_2; template struct Compare_yx_2; template struct Less_yx_2; template struct Are_ordered_along_line_2 ; template struct Collinear_are_ordered_along_line_2; template struct Are_strictly_ordered_along_line_2; template struct Collinear_are_strictly_ordered_along_line_2; template struct Collinear_2; template struct Leftturn_2; template struct Rightturn_2; template struct Orientation_2; template struct Side_of_oriented_circle_2; template struct Side_of_bounded_circle_2; template class Compare_distance_to_point_2; template class Less_distance_to_point_2; template class Compare_signed_distance_to_line_2; template class Less_signed_distance_to_line_2; template class Compare_signed_distance_to_implicit_line_2; template class Less_signed_distance_to_implicit_line_2; template struct Compare_y_at_point_2; template struct Compare_y_at_implicit_point_2; template struct Compare_y_of_lines_at_point_2; template struct Compare_y_of_lines_at_implicit_point_2; template struct Compare_x_implicit_point_2; template struct Compare_x_implicit_points_2; template struct Compare_x_implicit_points_same_line_2; template struct Compare_y_implicit_point_2; template struct Compare_y_implicit_points_2; template struct Compare_y_implicit_points_same_line_2; template struct X_equal_2 : public CGAL_STD::binary_function< Point, Point, bool> { bool operator()( const Point& p, const Point& q) const { return x_equal( p, q); } }; template struct Y_equal_2 : public CGAL_STD::binary_function< Point, Point, bool> { bool operator()( const Point& p, const Point& q) const { return y_equal( p, q); } }; template struct Compare_x_2 : public CGAL_STD::binary_function< Point, Point, Comparison_result> { Comparison_result operator()( const Point& p, const Point& q) const { return compare_x( p, q); } }; template struct Compare_y_2 : public CGAL_STD::binary_function< Point, Point, Comparison_result> { Comparison_result operator()( const Point& p, const Point& q) const { return compare_y( p, q); } }; template struct Compare_deltax_deltay_2 { Comparison_result operator()( const Point& p, const Point& q, const Point& r, const Point& s ) { return compare_deltax_deltay( p,q,r,s); } }; template struct Compare_xy_2 : public CGAL_STD::binary_function< Point, Point, Comparison_result> { Comparison_result operator()( const Point& p, const Point& q) const { return compare_lexicographically_xy( p,q); } }; template struct p_Equal_xy : public CGAL_STD::binary_function< Point, Point, bool> { bool operator()( const Point& p, const Point& q) const { return equal_xy( p,q); } }; template struct Less_xy_2 : public CGAL_STD::binary_function< Point, Point, bool> { bool operator()( const Point& p, const Point& q) const { return lexicographically_xy_smaller( p,q); } }; template struct Compare_yx_2 : public CGAL_STD::binary_function< Point, Point, Comparison_result> { Comparison_result operator()( const Point& p, const Point& q) const { return compare_lexicographically_yx( p,q); } }; template struct Less_yx_2 : public CGAL_STD::binary_function< Point, Point, bool> { bool operator()( const Point& p, const Point& q) const { return lexicographically_yx_smaller( p,q); } }; template struct Are_ordered_along_line_2 { bool operator()( const Point& p, const Point& q, const Point& r) const { return are_ordered_along_line( p,q,r); } }; template struct Collinear_are_ordered_along_line_2 { bool operator()( const Point& p, const Point& q, const Point& r) const { return collinear_are_ordered_along_line( p,q,r); } }; template struct Are_strictly_ordered_along_line_2 { bool operator()( const Point& p, const Point& q, const Point& r) const { return are_strictly_ordered_along_line( p,q,r); } }; template struct Collinear_are_strictly_ordered_along_line_2 { bool operator()( const Point& p, const Point& q, const Point& r) const { return collinear_are_strictly_ordered_along_line( p,q,r); } }; template struct Collinear_2 { bool operator()( const Point& p, const Point& q, const Point& r) const { return collinear( p,q,r); } }; template struct Leftturn_2 { bool operator()( const Point& p, const Point& q, const Point& r) const { return leftturn( p,q,r); } }; template struct Rightturn_2 { bool operator()( const Point& p, const Point& q, const Point& r) const { return rightturn( p,q,r); } }; template struct Orientation_2 { Orientation operator()( const Point& p, const Point& q, const Point& r) const { return orientation( p,q,r); } }; template struct Side_of_oriented_circle_2 { Oriented_side operator()( const Point& p, const Point& q, const Point& r, const Point& s) { return side_of_oriented_circle( p,q,r,s); } }; template struct Side_of_bounded_circle_2 { Oriented_side operator()( const Point& p, const Point& q, const Point& r, const Point& s) { return side_of_bounded_circle( p,q,r,s); } }; template class Compare_distance_to_point_2 : public CGAL_STD::binary_function< Point, Point, Comparison_result> { public: Compare_distance_to_point_2( const Point& p) : _p(p) {} Comparison_result operator()( const Point& q, const Point& r) { return cmp_dist_to_point( _p,q,r); } private: Point _p; }; template class Less_distance_to_point_2 : public CGAL_STD::binary_function< Point, Point, bool> { public: Less_distance_to_point_2( const Point& p) : _p(p) {} bool operator()( const Point& q, const Point& r) { return has_smaller_dist_to_point( _p,q,r); } private: Point _p; }; template class Compare_signed_distance_to_line_2 : public CGAL_STD::binary_function< Point, Point, Comparison_result> { public: Compare_signed_distance_to_line_2( const Line& l) : _l(l) {} Comparison_result operator()( const Point& p, const Point& q) { return cmp_signed_dist_to_line( _l, p, q); } private: Line _l; }; template class Less_signed_distance_to_line_2 : public CGAL_STD::binary_function< Point, Point, bool> { public: Less_signed_distance_to_line_2( const Line& l) : _l(l) {} bool operator()( const Line& l, const Point& p, const Point& q) { return has_smaller_signed_dist_to_line( l, p, q); } private: Line _l; }; template class Compare_signed_distance_to_implicit_line_2 : public CGAL_STD::binary_function< Point, Point, Comparison_result> { public: Compare_signed_distance_to_implicit_line_2( const Point& p, const Point& q) : _p(p), _q(q) {} Comparison_result operator()( const Point& r, const Point& s) { return cmp_signed_dist_to_line( _p, _q, r, s); } private: Point _p; Point _q; }; template class Less_signed_distance_to_implicit_line_2 : public CGAL_STD::binary_function< Point, Point, bool> { public: Less_signed_distance_to_implicit_line_2( const Point& p, const Point& q) : _p(p), _q(q) {} bool operator()( const Point& r, const Point& s) { return has_smaller_signed_dist_to_line( _p, _q, r, s); } private: Point _p; Point _q; }; template struct Compare_y_at_point_2 : public CGAL_STD::binary_function< Point, Line, Comparison_result> { Comparison_result operator()( const Point& p, const Line& l) { return compare_y_at_x( p, l); } }; template struct Compare_y_at_implicit_point_2 { Comparison_result operator()( const Line& l1, const Line& l2, const Line& l) { return compare_y_at_x( l1, l2, l); } }; template struct Compare_y_of_lines_at_point_2 { Comparison_result operator()( const Point& p, const Line& l1, const Line& l2) { return compare_y_at_x( p, l1, l2); } }; template struct Compare_y_of_lines_at_implicit_point_2 { Comparison_result operator()( const Line& l1, const Line& l2, const Line& h1, const Line& h2) { return compare_y_at_x( l1, l2, h1, h2); } }; template struct Compare_x_implicit_point_2 { Comparison_result operator()( const Point& p, const Line& l1, const Line& l2) { return compare_x( p, l1, l2); } }; template struct Compare_x_implicit_points_2 { Comparison_result operator()( const Line& l1, const Line& l2, const Line& h1, const Line& h2) { return compare_x( l1, l2, h1, h2); } }; template struct Compare_x_implicit_points_same_line_2 { Comparison_result operator()( const Line& l, const Line& h1, const Line& h2) { return compare_x( l, h1, h2); } }; template struct Compare_y_implicit_point_2 { Comparison_result operator()( const Point& p, const Line& l1, const Line& l2) { return compare_y( p, l1, l2); } }; template struct Compare_y_implicit_points_2 { Comparison_result operator()( const Line& l1, const Line& l2, const Line& h1, const Line& h2) { return compare_y( l1, l2, h1, h2); } }; template struct Compare_y_implicit_points_same_line_2 { Comparison_result operator()( const Line& l, const Line& h1, const Line& h2) { return compare_y( l, h1, h2); } }; CGAL_END_NAMESPACE #endif // CGAL_PREDICATES_CLASSES_2_H