mirror of https://github.com/odrling/Aegisub
Actually do the smoothing when drawing a smoothed freehand shape
Originally committed to SVN as r6759.
This commit is contained in:
parent
c4e36e00a5
commit
a05d469741
|
@ -248,17 +248,15 @@ void VisualTool<FeatureType>::OnMouseEvent(wxMouseEvent &event) {
|
|||
}
|
||||
}
|
||||
else if (holding) {
|
||||
if (event.LeftIsDown()) {
|
||||
UpdateHold();
|
||||
need_render = true;
|
||||
}
|
||||
// end hold
|
||||
else {
|
||||
if (!event.LeftIsDown()) {
|
||||
holding = false;
|
||||
|
||||
parent->ReleaseMouse();
|
||||
parent->SetFocus();
|
||||
}
|
||||
|
||||
UpdateHold();
|
||||
need_render = true;
|
||||
Commit();
|
||||
|
||||
}
|
||||
|
|
|
@ -333,6 +333,8 @@ bool VisualToolVectorClip::InitializeHold() {
|
|||
}
|
||||
|
||||
void VisualToolVectorClip::UpdateHold() {
|
||||
bool needs_save = true;
|
||||
|
||||
if (mode == 1) {
|
||||
spline.back().EndPoint() = mouse_pos;
|
||||
features.back().pos = mouse_pos;
|
||||
|
@ -360,20 +362,24 @@ void VisualToolVectorClip::UpdateHold() {
|
|||
// See if distance is enough
|
||||
Vector2D const& last = spline.back().EndPoint();
|
||||
float len = (last - mouse_pos).SquareLen();
|
||||
if (mode == 6 && len < 900) return;
|
||||
if (mode == 7 && len < 3600) return;
|
||||
|
||||
spline.push_back(SplineCurve(last, mouse_pos));
|
||||
MakeFeature(--spline.end());
|
||||
if ((mode == 6 && len >= 900) || (mode == 7 && len >= 3600)) {
|
||||
spline.push_back(SplineCurve(last, mouse_pos));
|
||||
MakeFeature(--spline.end());
|
||||
}
|
||||
else
|
||||
needs_save = false;
|
||||
}
|
||||
|
||||
if (mode == 3 || mode == 4) return;
|
||||
|
||||
// Smooth spline
|
||||
if (!holding && mode == 7)
|
||||
if (!holding && mode == 7) {
|
||||
spline.Smooth();
|
||||
needs_save = true;
|
||||
}
|
||||
|
||||
Save();
|
||||
if (needs_save)
|
||||
Save();
|
||||
|
||||
// End freedraw
|
||||
if (!holding && (mode == 6 || mode == 7)) {
|
||||
|
|
Loading…
Reference in New Issue