derived classes for timeline objects

This commit is contained in:
itsmattkc
2019-08-04 05:37:30 +10:00
parent 2060490ac9
commit e5481b19f5
5 changed files with 48 additions and 5 deletions
+6 -1
View File
@@ -109,7 +109,12 @@ void TimelineView::mousePressEvent(QMouseEvent *event)
TimelineViewGhostItem* ghost = new TimelineViewGhostItem();
TimelineViewClipItem* clip_item = static_cast<TimelineViewClipItem*>(item);
ghost->setRect(clip_item->rect());
ClipBlock* clip = clip_item->clip();
ghost->SetIn(clip->in());
ghost->SetOut(clip->out());
ghost->SetTimebase(timebase_);
ghost->setPos(clip_item->pos());
ghost_items_.append(ghost);
@@ -34,6 +34,11 @@ TimelineViewClipItem::TimelineViewClipItem(QGraphicsItem* parent) :
setFlag(QGraphicsItem::ItemIsSelectable, true);
}
ClipBlock *TimelineViewClipItem::clip()
{
return clip_;
}
void TimelineViewClipItem::SetClip(ClipBlock *clip)
{
clip_ = clip;
@@ -30,6 +30,7 @@ class TimelineViewClipItem : public TimelineViewRect
public:
TimelineViewClipItem(QGraphicsItem* parent = nullptr);
ClipBlock* clip();
void SetClip(ClipBlock* clip);
protected:
@@ -23,8 +23,31 @@
#include <QPainter>
TimelineViewGhostItem::TimelineViewGhostItem(QGraphicsItem *parent) :
QGraphicsRectItem(parent)
TimelineViewRect(parent)
{
setBrush(Qt::NoBrush);
setPen(QPen(Qt::yellow, 2));
setPen(QPen(Qt::yellow, 2)); // FIXME: Make customizable via CSS
}
void TimelineViewGhostItem::SetIn(const rational &in)
{
in_ = in;
UpdateRect();
}
void TimelineViewGhostItem::SetOut(const rational &out)
{
out_ = out;
UpdateRect();
}
void TimelineViewGhostItem::UpdateRect()
{
rational length = out_ - in_;
setRect(0, 0, TimeToScreenCoord(length), 100);
setPos(TimeToScreenCoord(in_), 0);
}
@@ -21,15 +21,24 @@
#ifndef TIMELINEVIEWGHOSTITEM_H
#define TIMELINEVIEWGHOSTITEM_H
#include <QGraphicsRectItem>
#include "timelineviewrect.h"
class TimelineViewGhostItem : public QGraphicsRectItem
class TimelineViewGhostItem : public TimelineViewRect
{
public:
TimelineViewGhostItem(QGraphicsItem* parent = nullptr);
void SetIn(const rational& in);
void SetOut(const rational& out);
protected:
virtual void UpdateRect() override;
// virtual void paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget = nullptr) override;
private:
rational in_;
rational out_;
};
#endif // TIMELINEVIEWGHOSTITEM_H