diff --git a/src/Lib/Ass/Line.cc b/src/Lib/Ass/Line.cc index af9448cb6ca28372faf56104ff0fad8025d07471..9e215edf10ed30057d0a6a277369c26b694f3dfc 100644 --- a/src/Lib/Ass/Line.cc +++ b/src/Lib/Ass/Line.cc @@ -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(); diff --git a/src/Lib/Ass/Line.hh b/src/Lib/Ass/Line.hh index 48dfd1d835996b89a294f600c6d041781989985c..9d84bc2a88576ad50a147b844bf7f49c27a1a30c 100644 --- a/src/Lib/Ass/Line.hh +++ b/src/Lib/Ass/Line.hh @@ -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 diff --git a/src/Lib/Ass/Syl.cc b/src/Lib/Ass/Syl.cc index f98b82895cc8ff7ab65458b23acc2059a3827f8a..dd8ba4737def942592d5304e3459204bdaf8870a 100644 --- a/src/Lib/Ass/Syl.cc +++ b/src/Lib/Ass/Syl.cc @@ -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 { diff --git a/src/Lib/Ass/Syl.hh b/src/Lib/Ass/Syl.hh index 1b00a40eb826e75b3b163d85799e2eca274d7ec4..91600b12b7ab75d8280888d6b8a9feffb69e09cf 100644 --- a/src/Lib/Ass/Syl.hh +++ b/src/Lib/Ass/Syl.hh @@ -32,6 +32,8 @@ public: QString getContent() const noexcept; quint64 getDuration() const noexcept; + QString getAssText() const noexcept; + void setDuration(quint64) noexcept; private: diff --git a/src/Lib/Document/CRTPSubDocument.hh b/src/Lib/Document/CRTPSubDocument.hh index 169c10961f5aa7ba9c784f18f5e31456d0086c48..92954fabd2f5557dda559bb0d86d0aa2080dde04 100644 --- a/src/Lib/Document/CRTPSubDocument.hh +++ b/src/Lib/Document/CRTPSubDocument.hh @@ -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; diff --git a/src/UI/DocumentViews/AudioVisualizer/TimingLine.cc b/src/UI/DocumentViews/AudioVisualizer/TimingLine.cc index ad2c0e57601ebf614719b6efebaf81112744e0df..2b41a8dcb75bbd53902e979113d8633ffcb773c1 100644 --- a/src/UI/DocumentViews/AudioVisualizer/TimingLine.cc +++ b/src/UI/DocumentViews/AudioVisualizer/TimingLine.cc @@ -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()); diff --git a/src/UI/DocumentViews/AudioVisualizer/TimingLine.hh b/src/UI/DocumentViews/AudioVisualizer/TimingLine.hh index fbaf7f0e1f7db0eb15c1bb30513b45ad6438523b..3d438f3c612c6916282bd3743ca16f18af4c2457 100644 --- a/src/UI/DocumentViews/AudioVisualizer/TimingLine.hh +++ b/src/UI/DocumentViews/AudioVisualizer/TimingLine.hh @@ -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; diff --git a/src/UI/DocumentViews/AudioVisualizer/TimingScene.cc b/src/UI/DocumentViews/AudioVisualizer/TimingScene.cc index ea47784c1b90fff8e1fd39a888fef3ed8c46b049..39760c37eeb61773c695e8ec30c09c574b1c70f6 100644 --- a/src/UI/DocumentViews/AudioVisualizer/TimingScene.cc +++ b/src/UI/DocumentViews/AudioVisualizer/TimingScene.cc @@ -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);