wrote some clip drawing on timeline functions

This commit is contained in:
itsmattkc
2019-08-01 00:32:50 -07:00
parent 171411de85
commit 28ab2cb570
10 changed files with 74 additions and 3 deletions
+4
View File
@@ -67,6 +67,10 @@ void TimelineOutput::AttachTimeline(TimelinePanel *timeline)
if (attached_timeline_ != nullptr) {
attached_timeline_->Clear();
// FIXME: TEST CODE ONLY
attached_timeline_->SetTimebase(rational(1001, 30000));
// END TEST CODE
Block* previous_block = attached_block();
while (previous_block != nullptr) {
+1
View File
@@ -58,6 +58,7 @@ void TimelinePanel::AddClip(ClipBlock *clip)
void TimelinePanel::SetTimebase(const rational &timebase)
{
ruler_->SetTimebase(timebase);
view_->SetTimebase(timebase);
}
void TimelinePanel::changeEvent(QEvent *e)
+2
View File
@@ -20,5 +20,7 @@ set(OLIVE_SOURCES
widget/timelineview/timelineview.cpp
widget/timelineview/timelineviewclipitem.h
widget/timelineview/timelineviewclipitem.cpp
widget/timelineview/timelineviewghostitem.h
widget/timelineview/timelineviewghostitem.cpp
PARENT_SCOPE
)
+10 -1
View File
@@ -6,6 +6,8 @@ TimelineView::TimelineView(QWidget *parent) :
QGraphicsView(parent)
{
setScene(&scene_);
setAlignment(Qt::AlignLeft | Qt::AlignVCenter);
setDragMode(RubberBandDrag);
}
void TimelineView::AddClip(ClipBlock *clip)
@@ -15,7 +17,9 @@ void TimelineView::AddClip(ClipBlock *clip)
scene_.addItem(clip_item);
// FIXME: Test code only
clip_item->setRect(clip->in().ToDouble(), 0, clip->out().ToDouble(), 100);
double framerate = timebase_.ToDouble();
double clip_item_x = clip->in().ToDouble() / framerate;
clip_item->setRect(clip_item_x, 0, clip->out().ToDouble() / framerate - clip_item_x - 1, 100);
// End test code
}
@@ -24,6 +28,11 @@ void TimelineView::SetScale(const double &scale)
scale_ = scale;
}
void TimelineView::SetTimebase(const rational &timebase)
{
timebase_ = timebase;
}
void TimelineView::Clear()
{
scene_.clear();
+4
View File
@@ -14,12 +14,16 @@ public:
void SetScale(const double& scale);
void SetTimebase(const rational& timebase);
void Clear();
private:
QGraphicsScene scene_;
double scale_;
rational timebase_;
};
#endif // TIMELINEVIEW_H
@@ -1,13 +1,43 @@
#include "timelineviewclipitem.h"
#include <QBrush>
#include <QPainter>
#include <QStyleOptionGraphicsItem>
TimelineViewClipItem::TimelineViewClipItem(QGraphicsItem* parent) :
QGraphicsRectItem(parent),
clip_(nullptr)
{
setBrush(Qt::white);
setFlag(QGraphicsItem::ItemIsSelectable, true);
}
void TimelineViewClipItem::SetClip(ClipBlock *clip)
{
clip_ = clip;
}
void TimelineViewClipItem::paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget)
{
Q_UNUSED(widget)
/*QLinearGradient grad;
grad.setStart(0, 0);
grad.setFinalStop(0, rect().height());
grad.setColorAt(0.0, QColor(192, 192, 255));
grad.setColorAt(1.0, QColor(128, 128, 192));
painter->fillRect(rect(), grad);*/
painter->fillRect(rect(), QColor(128, 128, 192));
if (option->state & QStyle::State_Selected) {
painter->fillRect(rect(), QColor(0, 0, 0, 64));
}
painter->setPen(Qt::white);
painter->drawLine(rect().topLeft(), QPointF(rect().right(), rect().top()));
painter->drawLine(rect().topLeft(), QPointF(rect().left(), rect().bottom() - 1));
painter->setPen(QColor(64, 64, 64));
painter->drawLine(QPointF(rect().left(), rect().bottom() - 1), QPointF(rect().right(), rect().bottom() - 1));
painter->drawLine(QPointF(rect().right(), rect().bottom() - 1), QPointF(rect().right(), rect().top()));
}
@@ -12,6 +12,9 @@ public:
void SetClip(ClipBlock* clip);
protected:
virtual void paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget = nullptr) override;
private:
ClipBlock* clip_;
};
@@ -0,0 +1,6 @@
#include "timelineviewghostitem.h"
TimelineViewGhostItem::TimelineViewGhostItem()
{
}
@@ -0,0 +1,12 @@
#ifndef TIMELINEVIEWGHOSTITEM_H
#define TIMELINEVIEWGHOSTITEM_H
#include <QGraphicsRectItem>
class TimelineViewGhostItem : public QGraphicsRectItem
{
public:
TimelineViewGhostItem();
};
#endif // TIMELINEVIEWGHOSTITEM_H
+1 -1
View File
@@ -13,7 +13,7 @@ TimeRuler::TimeRuler(bool text_visible, QWidget* parent) :
QWidget(parent),
scroll_(0),
centered_text_(true),
scale_(16.0), // FIXME: Temporary value
scale_(1.0), // FIXME: Temporary value
time_(0)
{
QFontMetrics fm = fontMetrics();