@@ -524,12 +524,11 @@ struct bisectx
524524 {
525525 }
526526
527- inline void bisect (double sx, double sy, double px, double py, double *bx, double *by ) const
527+ inline auto bisect (double sx, double sy, double px, double py) const
528528 {
529- *bx = m_x;
530529 double dx = px - sx;
531530 double dy = py - sy;
532- *by = sy + dy * ((m_x - sx) / dx);
531+ return std::tuple (m_x, sy + dy * ((m_x - sx) / dx) );
533532 }
534533};
535534
@@ -565,12 +564,11 @@ struct bisecty
565564 {
566565 }
567566
568- inline void bisect (double sx, double sy, double px, double py, double *bx, double *by ) const
567+ inline auto bisect (double sx, double sy, double px, double py) const
569568 {
570- *by = m_y;
571569 double dx = px - sx;
572570 double dy = py - sy;
573- *bx = sx + dx * ((m_y - sy) / dy);
571+ return std::tuple ( sx + dx * ((m_y - sy) / dy), m_y );
574572 }
575573};
576574
@@ -615,8 +613,7 @@ inline void clip_to_rect_one_step(const Polygon &polygon, Polygon &result, const
615613 pinside = filter.is_inside (px, py);
616614
617615 if (sinside ^ pinside) {
618- double bx, by;
619- filter.bisect (sx, sy, px, py, &bx, &by);
616+ auto [bx, by] = filter.bisect (sx, sy, px, py);
620617 result.emplace_back (bx, by);
621618 }
622619
0 commit comments