diff --git a/Userland/Libraries/LibGfx/Path.h b/Userland/Libraries/LibGfx/Path.h index 71bbd701e1d..3f6a8de792f 100644 --- a/Userland/Libraries/LibGfx/Path.h +++ b/Userland/Libraries/LibGfx/Path.h @@ -166,13 +166,13 @@ public: void quadratic_bezier_curve_to(FloatPoint through, FloatPoint point) { - append_segment(point, through); + append_segment(through, point); invalidate_split_lines(); } void cubic_bezier_curve_to(FloatPoint c1, FloatPoint c2, FloatPoint p2) { - append_segment(p2, c1, c2); + append_segment(c1, c2, p2); invalidate_split_lines(); } @@ -254,14 +254,14 @@ private: void segmentize_path(); template - void append_segment(FloatPoint point, Args&&... args) + void append_segment(Args&&... args) { - constexpr auto point_count = sizeof...(Args) + 1; + constexpr auto point_count = sizeof...(Args); static_assert(point_count == PathSegment::points_per_command(command)); - m_commands.append(command); - // Place the current path point after any extra control points so `m_points.last()` is always the last point. - FloatPoint points[] { args..., point }; + FloatPoint points[] { args... }; + // Note: This should maintain the invariant that `m_points.last()` is always the last point in the path. m_points.append(points, point_count); + m_commands.append(command); } Vector m_points {};