#include "TimingLine.hh" #include <QPainter> #include <QGraphicsScene> #include "TimingUtils.hh" #include "TimingSyl.hh" #include "TimingSeparator.hh" using namespace Vivy; TimingLine::TimingLine(Ass::Line *lineptr, QGraphicsItem *parent) : QGraphicsObject(parent) , line(*lineptr) { setPos(TimingUtils::posFromMs(int(line.getStart())*10), TimingUtils::axisHeight()); int currentTime = 0; QVector<Ass::Syl> syls = line.getContent(); for (int i = 0; i < syls.size(); ++i){ int endSyl = currentTime + 10 * int(syls.at(i).getDuration()); TimingSyl* timingSyl = new TimingSyl(syls.at(i), currentTime, this); // TODO: Here create the TimingSeparator and connect TimingSeparator* timingSeparatorStart = new TimingSeparator(currentTime, i != 0 ? TimingSeparator::SeparatorStyle::Middle : TimingSeparator::SeparatorStyle::Start, this); TimingSeparator* timingSeparatorEnd = new TimingSeparator(i != syls.size()-1 ? endSyl : int(10*line.getDuration()), i != syls.size()-1 ? TimingSeparator::SeparatorStyle::Middle : TimingSeparator::SeparatorStyle::End, this); currentTime = endSyl; } } QRectF TimingLine::boundingRect() const { return QRectF(0, 0, TimingUtils::posFromMs(int(10*(line.getEnd()-line.getStart()))), TimingUtils::audioHeight()); } void TimingLine::paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget) { painter->fillRect(QRectF(0, 0, TimingUtils::posFromMs(int(10*(line.getEnd()-line.getStart()))), TimingUtils::audioHeight()), QColor(0, 255, 255, 50)); }