From 1ba254ae8753b9679f38743057f16d945c3868b5 Mon Sep 17 00:00:00 2001 From: itsmattkc Date: Thu, 12 Dec 2019 15:50:08 +1100 Subject: [PATCH] implemented creating dual and single transitions The user can now create transitions on each side as well as transitions between blocks. --- app/widget/timelinewidget/timelinewidget.h | 2 ++ app/widget/timelinewidget/tool/transition.cpp | 5 ++++- 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/app/widget/timelinewidget/timelinewidget.h b/app/widget/timelinewidget/timelinewidget.h index 43049679d..3fe8bd47a 100644 --- a/app/widget/timelinewidget/timelinewidget.h +++ b/app/widget/timelinewidget/timelinewidget.h @@ -313,6 +313,8 @@ private: virtual void MouseMove(TimelineViewMouseEvent *event) override; virtual void MouseRelease(TimelineViewMouseEvent *event) override; protected: + private: + bool dual_transition_; }; void SetBlockLinksSelected(Block *block, bool selected); diff --git a/app/widget/timelinewidget/tool/transition.cpp b/app/widget/timelinewidget/tool/transition.cpp index f12cac925..5967b4996 100644 --- a/app/widget/timelinewidget/tool/transition.cpp +++ b/app/widget/timelinewidget/tool/transition.cpp @@ -27,12 +27,15 @@ void TimelineWidget::TransitionTool::MousePress(TimelineViewMouseEvent *event) rational transition_start_point; olive::timeline::MovementMode trim_mode; rational halfway_point = block_at_time->in() + block_at_time->length() / 2; + rational tenth_point = block_at_time->in() + block_at_time->length() / 10; if (cursor_frame < halfway_point) { transition_start_point = block_at_time->in(); trim_mode = olive::timeline::kTrimIn; + dual_transition_ = (cursor_frame < tenth_point); } else { transition_start_point = block_at_time->out(); trim_mode = olive::timeline::kTrimOut; + dual_transition_ = (cursor_frame > block_at_time->length() - tenth_point); } // Create ghost @@ -57,7 +60,7 @@ void TimelineWidget::TransitionTool::MouseMove(TimelineViewMouseEvent *event) return; } - MouseMoveInternal(event->GetCoordinates().GetFrame(), false); + MouseMoveInternal(event->GetCoordinates().GetFrame(), dual_transition_); } void TimelineWidget::TransitionTool::MouseRelease(TimelineViewMouseEvent *event)