Sélectionner une révision Git
TimingScene.cc 4,04 Kio
#include "TimingScene.hh"
#include "../../Lib/Utils.hh"
#include "../../Lib/Ass/Ass.hh"
#include "../../Lib/Document/VivyDocument.hh"
#include <QGraphicsLineItem>
#include <QGraphicsPixmapItem>
#include <QGraphicsView>
#include <QLabel>
#include <QMessageBox>
#include <QMouseEvent>
#include <QPainter>
#include <QGraphicsSceneMouseEvent>
#include <QScrollArea>
#include <QScrollBar>
#include <QVBoxLayout>
using namespace Vivy;
TimingScene::TimingScene(QWidget *parent) noexcept
: QGraphicsScene(parent)
{
}
TimingScene::TimingScene(QImage img_, AudioContext::StreamPtr stream, QWidget *parent) noexcept
: QGraphicsScene(parent)
, img(img_)
, audioStream(stream)
{
QPixmap pixmap(QPixmap::fromImage(img));
backgroundImg = addPixmap(pixmap);
ax = new TimingAxis(stream, 0, pixmap.width(), 10);
addItem(ax);
ax->refreshTicks();
if (auto assDocument = currentVivyDocument->getAssSubDocument()){
QVector<Ass::LinePtr> lines = assDocument->getLines();
for (int i = 0; i < lines.size(); ++i) {
if (auto line = lines.at(i).get()){
qreal xstart = posFromTime(line->getStart());
TimingBar* bar = new TimingBar(QLine(int(xstart), 30, int(xstart), int(height())), QColor(127,0,0));
bar->setZValue(10);
addItem(bar);
qreal xend = posFromTime(line->getEnd());
bar = new TimingBar(QLine(int(xend), 30, int(xend), int(height())), QColor(127,0,0));
bar->setZValue(10);
addItem(bar);
QGraphicsRectItem* rect = new QGraphicsRectItem(xstart, 30, xend-xstart, int(height())-30);
addItem(rect);
rect->setBrush(Qt::blue);
rect->setOpacity(0.1);
QGraphicsTextItem* text = new QGraphicsTextItem(line->getContentAsText());
addItem(text);
text->setZValue(5);
text->setTextWidth(xend-xstart-10);
text->setPos(xstart+5, 30+(height()-30)/2);
}
}
}
}
void
TimingScene::mousePressEvent(QGraphicsSceneMouseEvent *event) noexcept
{
QPointF pos = event->scenePos();
QGraphicsItem *got = itemAt(pos, QTransform());
Ass::LinePtr p = currentLine.lock();