Skip to content
Extraits de code Groupes Projets
Valider a9cb3ea1 rédigé par Elliu's avatar Elliu
Parcourir les fichiers

Properly propagate line and syl changes to assDocument

parent 0e1eba18
Aucune branche associée trouvée
Aucune étiquette associée trouvée
Aucune requête de fusion associée trouvée
Pipeline #3213 réussi
......@@ -74,7 +74,7 @@ Line::updateContent() noexcept
{
___contentAsText = "";
for (const auto &syl : content)
___contentAsText.append(syl.getContent());
___contentAsText.append(syl.getAssText());
}
void
......@@ -191,7 +191,7 @@ Line::getLineAsText() const noexcept
}
void
Line::setContent(const QVector<Syl> &syls) noexcept
Line::setContent(const QVector<Syl> syls) noexcept
{
content = syls;
updateContent();
......
......@@ -46,7 +46,7 @@ public:
StyleProperties getStyleProperties() const noexcept;
StyleWeakPtr getStyle() const noexcept;
const QVector<Syl> &getContent() const noexcept;
void setContent(const QVector<Syl> &) noexcept;
void setContent(const QVector<Syl>) noexcept;
QVector<Syl> *getContentPtr() noexcept; // FIXME: remove me
......
......@@ -37,6 +37,12 @@ Syl::getContent() const noexcept
return content;
}
QString
Syl::getAssText() const noexcept
{
return QString("{\\k%1}").arg(duration) + content;
}
quint64
Syl::getDuration() const noexcept
{
......
......@@ -32,6 +32,8 @@ public:
QString getContent() const noexcept;
quint64 getDuration() const noexcept;
QString getAssText() const noexcept;
void setDuration(quint64) noexcept;
private:
......
......@@ -142,8 +142,7 @@ public:
} catch (const std::runtime_error &e) {
ret->logDebug() << "Failed to init ASS subdocument from internal: " << e.what();
ret.reset();
// FIXME: currently terminate, but should be changed to stop the loading of the document
throw e;
// FIXME: currently not re-throwing, but the loading of the document should be halted here
}
return ret;
......
......@@ -9,9 +9,9 @@ using namespace Vivy;
connect(sep, &TimingSeparator::enterPress, this, &TimingLine::sepEnterPress); \
connect(sep, &TimingSeparator::exitPress, this, &TimingLine::sepExitPress);
TimingLine::TimingLine(Ass::Line *lineptr, int index, QGraphicsItem *parent)
TimingLine::TimingLine(Ass::Line& _line, int index, QGraphicsItem *parent)
: QGraphicsObject(parent)
, line(*lineptr)
, line(_line)
, lineIndex(index)
{
setPos(TimingUtils::posFromMs(int(line.getStart()) * 10), TimingUtils::axisHeight());
......
......@@ -11,13 +11,13 @@ namespace Vivy
class TimingLine final : public QGraphicsObject {
Q_OBJECT
public:
explicit TimingLine(Ass::Line *, int, QGraphicsItem * = nullptr);
explicit TimingLine(Ass::Line&, int, QGraphicsItem * = nullptr);
QRectF boundingRect() const override;
void paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget) override;
private:
Ass::Line line;
Ass::Line& line;
QVector<TimingSeparator *> seps;
QVector<TimingSyl *> timingSyls;
int lineIndex;
......
......@@ -63,8 +63,8 @@ TimingScene::rebuildScene()
if (auto assDocument = rootVivyDocument.getAssSubDocument()) {
QVector<Ass::LinePtr> lines = assDocument->getLines();
for (int i = 0; i < lines.size(); ++i) {
if (auto line = lines.at(i).get()) {
TimingLine *l = new TimingLine(line, i);
if (auto line = lines.at(i)) {
TimingLine *l = new TimingLine(*line, i);
l->setVisible(false);
addItem(l);
timingLines.append(l);
......
0% Chargement en cours ou .
You are about to add 0 people to the discussion. Proceed with caution.
Veuillez vous inscrire ou vous pour commenter