wrote some clip drawing on timeline functions
This commit is contained in:
@@ -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) {
|
||||
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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
|
||||
)
|
||||
|
||||
@@ -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();
|
||||
|
||||
@@ -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
|
||||
@@ -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();
|
||||
|
||||
Reference in New Issue
Block a user