forked from mia/Aegisub
Significantly speed up dragging lots of vector clip control points
This commit is contained in:
parent
8d5a54ff5e
commit
cb549e5aa9
3 changed files with 8 additions and 14 deletions
|
@ -113,7 +113,7 @@ protected:
|
||||||
|
|
||||||
/// @brief Commit the current file state
|
/// @brief Commit the current file state
|
||||||
/// @param message Description of changes for undo
|
/// @param message Description of changes for undo
|
||||||
void Commit(wxString message = wxString());
|
virtual void Commit(wxString message = wxString());
|
||||||
bool IsDisplayed(AssDialogue *line) const;
|
bool IsDisplayed(AssDialogue *line) const;
|
||||||
|
|
||||||
/// Get the line's position if it's set, or it's default based on style if not
|
/// Get the line's position if it's set, or it's default based on style if not
|
||||||
|
|
|
@ -222,9 +222,13 @@ void VisualToolVectorClip::Save() {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void VisualToolVectorClip::Commit(wxString message) {
|
||||||
|
Save();
|
||||||
|
VisualToolBase::Commit(message);
|
||||||
|
}
|
||||||
|
|
||||||
void VisualToolVectorClip::UpdateDrag(Feature *feature) {
|
void VisualToolVectorClip::UpdateDrag(Feature *feature) {
|
||||||
spline.MovePoint(feature->curve, feature->point, feature->pos);
|
spline.MovePoint(feature->curve, feature->point, feature->pos);
|
||||||
Save();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
bool VisualToolVectorClip::InitializeDrag(Feature *feature) {
|
bool VisualToolVectorClip::InitializeDrag(Feature *feature) {
|
||||||
|
@ -251,7 +255,6 @@ bool VisualToolVectorClip::InitializeDrag(Feature *feature) {
|
||||||
}
|
}
|
||||||
active_feature = nullptr;
|
active_feature = nullptr;
|
||||||
|
|
||||||
Save();
|
|
||||||
MakeFeatures();
|
MakeFeatures();
|
||||||
Commit(_("delete control point"));
|
Commit(_("delete control point"));
|
||||||
|
|
||||||
|
@ -329,7 +332,6 @@ bool VisualToolVectorClip::InitializeHold() {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
Save();
|
|
||||||
MakeFeatures();
|
MakeFeatures();
|
||||||
Commit();
|
Commit();
|
||||||
return false;
|
return false;
|
||||||
|
@ -357,8 +359,6 @@ static bool in_box(Vector2D top_left, Vector2D bottom_right, Vector2D p) {
|
||||||
}
|
}
|
||||||
|
|
||||||
void VisualToolVectorClip::UpdateHold() {
|
void VisualToolVectorClip::UpdateHold() {
|
||||||
bool needs_save = true;
|
|
||||||
|
|
||||||
// Box selection
|
// Box selection
|
||||||
if (mode == 0) {
|
if (mode == 0) {
|
||||||
std::set<Feature *> boxed_features;
|
std::set<Feature *> boxed_features;
|
||||||
|
@ -415,20 +415,13 @@ void VisualToolVectorClip::UpdateHold() {
|
||||||
spline.emplace_back(last, mouse_pos);
|
spline.emplace_back(last, mouse_pos);
|
||||||
MakeFeature(--spline.end());
|
MakeFeature(--spline.end());
|
||||||
}
|
}
|
||||||
else
|
|
||||||
needs_save = false;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (mode == 3 || mode == 4) return;
|
if (mode == 3 || mode == 4) return;
|
||||||
|
|
||||||
// Smooth spline
|
// Smooth spline
|
||||||
if (!holding && mode == 7) {
|
if (!holding && mode == 7)
|
||||||
spline.Smooth();
|
spline.Smooth();
|
||||||
needs_save = true;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (needs_save)
|
|
||||||
Save();
|
|
||||||
|
|
||||||
// End freedraw
|
// End freedraw
|
||||||
if (!holding && (mode == 6 || mode == 7)) {
|
if (!holding && (mode == 6 || mode == 7)) {
|
||||||
|
|
|
@ -53,6 +53,7 @@ class VisualToolVectorClip : public VisualTool<VisualToolVectorClipDraggableFeat
|
||||||
void SetMode(int mode);
|
void SetMode(int mode);
|
||||||
|
|
||||||
void Save();
|
void Save();
|
||||||
|
void Commit(wxString message="") override;
|
||||||
|
|
||||||
void SelectAll();
|
void SelectAll();
|
||||||
void MakeFeature(Spline::iterator cur);
|
void MakeFeature(Spline::iterator cur);
|
||||||
|
|
Loading…
Reference in a new issue