From 227f6b1d6992938eb1b467d5ba08432d19013042 Mon Sep 17 00:00:00 2001 From: Thomas Goyne Date: Fri, 18 Jun 2010 07:14:17 +0000 Subject: [PATCH] In the vector clip tool, draw the line to be inserted between the right points when there are multiple paths in the clip Originally committed to SVN as r4547. --- aegisub/src/visual_tool_vector_clip.cpp | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/aegisub/src/visual_tool_vector_clip.cpp b/aegisub/src/visual_tool_vector_clip.cpp index f49899a21..590490720 100644 --- a/aegisub/src/visual_tool_vector_clip.cpp +++ b/aegisub/src/visual_tool_vector_clip.cpp @@ -118,12 +118,15 @@ static void APIENTRY glMultiDrawArraysFallback(GLenum mode, GLint *first, GLsize } } +static bool is_move(SplineCurve const& c) { + return c.type == CURVE_POINT; +} + void VisualToolVectorClip::Draw() { if (spline.empty()) return; GL_EXT(PFNGLMULTIDRAWARRAYSPROC, glMultiDrawArrays); - // Get line AssDialogue *line = GetActiveDialogueLine(); if (!line) return; @@ -215,7 +218,7 @@ void VisualToolVectorClip::Draw() { // Draw preview of inserted line if (mode == 1 || mode == 2) { if (spline.size() && video.x > INT_MIN && video.y > INT_MIN) { - SplineCurve *c0 = &spline.front(); + Spline::reverse_iterator c0 = std::find_if(spline.rbegin(), spline.rend(), is_move); SplineCurve *c1 = &spline.back(); DrawDashedLine(video.x,video.y,c0->p1.x,c0->p1.y,6); DrawDashedLine(video.x,video.y,c1->EndPoint().x,c1->EndPoint().y,6);