From ee832d642dd619ea6ac0db7838eb21c65d1dc727 Mon Sep 17 00:00:00 2001 From: Rodrigo Braz Monteiro Date: Sat, 7 Jul 2007 07:27:28 +0000 Subject: [PATCH] Implemented delete point function to vector clip tool. Originally committed to SVN as r1388. --- aegisub/visual_tool.cpp | 24 ++++++++++++++---------- aegisub/visual_tool.h | 1 + aegisub/visual_tool_vector_clip.cpp | 25 +++++++++++++++++++++++-- 3 files changed, 38 insertions(+), 12 deletions(-) diff --git a/aegisub/visual_tool.cpp b/aegisub/visual_tool.cpp index 515463815..d3b53a8e6 100644 --- a/aegisub/visual_tool.cpp +++ b/aegisub/visual_tool.cpp @@ -175,8 +175,7 @@ void VisualTool::OnMouseEvent (wxMouseEvent &event) { if (realTime) { // Commit CommitDrag(features[curFeature]); - grid->editBox->CommitText(true); - grid->CommitChanges(false,true); + Commit(); } } @@ -188,9 +187,7 @@ void VisualTool::OnMouseEvent (wxMouseEvent &event) { // Commit dragging = false; CommitDrag(features[curFeature]); - grid->editBox->CommitText(); - grid->ass->FlagAsModified(_("visual typesetting")); - grid->CommitChanges(false); + Commit(true); // Clean up curFeature = -1; @@ -227,8 +224,7 @@ void VisualTool::OnMouseEvent (wxMouseEvent &event) { if (realTime) { // Commit CommitHold(); - grid->editBox->CommitText(true); - grid->CommitChanges(false,true); + Commit(); } } @@ -240,9 +236,7 @@ void VisualTool::OnMouseEvent (wxMouseEvent &event) { // Commit holding = false; CommitHold(); - grid->editBox->CommitText(); - grid->ass->FlagAsModified(_("visual typesetting")); - grid->CommitChanges(false); + Commit(true); // Clean up curDiag = NULL; @@ -257,6 +251,16 @@ void VisualTool::OnMouseEvent (wxMouseEvent &event) { } +////////// +// Commit +void VisualTool::Commit(bool full) { + SubtitlesGrid *grid = VideoContext::Get()->grid; + if (full) grid->editBox->CommitText(); + grid->ass->FlagAsModified(_("visual typesetting")); + grid->CommitChanges(false,!full); +} + + //////////////////////////// // Get active dialogue line AssDialogue* VisualTool::GetActiveDialogueLine() { diff --git a/aegisub/visual_tool.h b/aegisub/visual_tool.h index d05660425..620704586 100644 --- a/aegisub/visual_tool.h +++ b/aegisub/visual_tool.h @@ -115,6 +115,7 @@ protected: AssDialogue *GetActiveDialogueLine(); int GetHighlightedFeature(); void DrawAllFeatures(); + void Commit(bool full=false); void ConnectButton(wxButton *button); virtual void OnButton(wxCommandEvent &event) {} diff --git a/aegisub/visual_tool_vector_clip.cpp b/aegisub/visual_tool_vector_clip.cpp index 32e2412fd..fa371cdb7 100644 --- a/aegisub/visual_tool_vector_clip.cpp +++ b/aegisub/visual_tool_vector_clip.cpp @@ -46,9 +46,9 @@ enum { BUTTON_DRAG = VISUAL_SUB_TOOL_START, BUTTON_LINE, BUTTON_BICUBIC, + BUTTON_CONVERT, BUTTON_INSERT, BUTTON_REMOVE, - BUTTON_CONVERT, BUTTON_FREEHAND, BUTTON_FREEHAND_SMOOTH, BUTTON_LAST // Leave this at the end and don't use it @@ -256,6 +256,27 @@ void VisualToolVectorClip::CommitDrag(VisualDraggableFeature &feature) { ///////////////////// // Clicked a feature void VisualToolVectorClip::ClickedFeature(VisualDraggableFeature &feature) { + // Delete a control point + if (mode == 5) { + int i = 0; + for (std::list::iterator cur=spline.curves.begin();cur!=spline.curves.end();i++,cur++) { + if (i == feature.value) { + // Update next + if (i != 0 || feature.value2 != 0) { + std::list::iterator next = cur; + next++; + if (next != spline.curves.end()) next->p1 = cur->p1; + } + + // Erase and save changes + spline.curves.erase(cur); + SetOverride(_T("\\clip"),_T("(") + spline.EncodeToASS() + _T(")")); + curFeature = -1; + Commit(true); + return; + } + } + } } @@ -375,7 +396,7 @@ void VisualToolVectorClip::DoRefresh() { wxString vect; int scale; vect = GetLineVectorClip(line,scale); - if (vect.IsEmpty()) return; + //if (!vect.IsEmpty()) return; spline.DecodeFromASS(vect); PopulateFeatureList(); }