pub(crate) fn event_comparison_predicate_bii(
        lhs: &VSE::SiteEvent<I, F>,
        rhs: &VSE::SiteEvent<I, F>,
    ) -> bool {
        if lhs.x0() != rhs.x0() {
            return lhs.x0() < rhs.x0();
        }
        if !lhs.is_segment() {
            if !rhs.is_segment() {
                return lhs.y0() < rhs.y0();
            }
            if Predicates::<I, F>::is_vertical_2(rhs.point0(), rhs.point1()) {
                return lhs.y0() <= rhs.y0();
            }
            true
        } else {
            if Predicates::<I, F>::is_vertical_2(rhs.point0(), rhs.point1()) {
                if Predicates::<I, F>::is_vertical_2(lhs.point0(), lhs.point1()) {
                    return lhs.y0() < rhs.y0();
                }
                return false;
            }
            if Predicates::<I, F>::is_vertical_2(lhs.point0(), lhs.point1()) {
                return true;
            }
            if lhs.y0() != rhs.y0() {
                return lhs.y0() < rhs.y0();
            }
            return OrientationTest::<I, F>::eval_p(lhs.point1(), lhs.point0(), rhs.point1())
                == Orientation::Left;
        }
    }
/// boolean predicate between two sites (bool int int)
boolean predicate between two sites (bool int int)
boolean predicate between two sites ( bool int int )
pub(crate) fn event_comparison_predicate_bii(
        lhs: &VSE::SiteEvent<I, F>,
        rhs: &VSE::SiteEvent<I, F>,
    ) -> bool {
        if lhs.x0() != rhs.x0() {
            return lhs.x0() < rhs.x0();
        }
        if !lhs.is_segment() {
            if !rhs.is_segment() {
                return lhs.y0() < rhs.y0();
            }
            if Predicates::<I, F>::is_vertical_2(rhs.point0(), rhs.point1()) {
                return lhs.y0() <= rhs.y0();
            }
            true
        } else {
            if Predicates::<I, F>::is_vertical_2(rhs.point0(), rhs.point1()) {
                if Predicates::<I, F>::is_vertical_2(lhs.point0(), lhs.point1()) {
                    return lhs.y0() < rhs.y0();
                }
                return false;
            }
            if Predicates::<I, F>::is_vertical_2(lhs.point0(), lhs.point1()) {
                return true;
            }
            if lhs.y0() != rhs.y0() {
                return lhs.y0() < rhs.y0();
            }
            return OrientationTest::<I, F>::eval_p(lhs.point1(), lhs.point0(), rhs.point1())
                == Orientation::Left;
        }
    }
pub ( crate ) fn event_comparison_predicate_bii ( lhs : & VSE :: SiteEvent < I , F > , rhs : & VSE :: SiteEvent < I , F > , ) -> bool { if lhs . x0 ( ) != rhs . x0 ( ) { return lhs . x0 ( ) < rhs . x0 ( ) ; } if ! lhs . is_segment ( ) { if ! rhs . is_segment ( ) { return lhs . y0 ( ) < rhs . y0 ( ) ; } if Predicates :: < I , F > :: is_vertical_2 ( rhs . point0 ( ) , rhs . point1 ( ) ) { return lhs . y0 ( ) <= rhs . y0 ( ) ; } true } else { if Predicates :: < I , F > :: is_vertical_2 ( rhs . point0 ( ) , rhs . point1 ( ) ) { if Predicates :: < I , F > :: is_vertical_2 ( lhs . point0 ( ) , lhs . point1 ( ) ) { return lhs . y0 ( ) < rhs . y0 ( ) ; } return false ; } if Predicates :: < I , F > :: is_vertical_2 ( lhs . point0 ( ) , lhs . point1 ( ) ) { return true ; } if lhs . y0 ( ) != rhs . y0 ( ) { return lhs . y0 ( ) < rhs . y0 ( ) ; } return OrientationTest :: < I , F > :: eval_p ( lhs . point1 ( ) , lhs . point0 ( ) , rhs . point1 ( ) ) == Orientation :: Left ; } }
boolean predicate between two sites (bool int int)
boolean predicate between two sites ( bool int int )
lhs
&VSE::SiteEvent<I, F>
rhs
&VSE::SiteEvent<I, F>