diff --git a/src/Lib/Ass/Line.cc b/src/Lib/Ass/Line.cc index 27a2c35ed8aaacadba6fe62504d6fdcc4b24faed..51158b433d8da193e525fae37af1148300f62758 100644 --- a/src/Lib/Ass/Line.cc +++ b/src/Lib/Ass/Line.cc @@ -158,3 +158,9 @@ Line::getContentAsText() const noexcept { return ___contentAsText; } + +void +Line::setContent(const QVector<Syl>& syls) noexcept +{ + content = syls; +} diff --git a/src/Lib/Ass/Line.hh b/src/Lib/Ass/Line.hh index a5fffb0d67e4398337dab433bdf8eddbce7fde28..8b8036b2c4fc1e4ebd0333257d57e0088a0d78fd 100644 --- a/src/Lib/Ass/Line.hh +++ b/src/Lib/Ass/Line.hh @@ -43,6 +43,7 @@ public: StyleProperties getStyleProperties() const noexcept; StyleWeakPtr getStyle() const noexcept; const QVector<Syl> &getContent() const noexcept; + void setContent(const QVector<Syl>&) noexcept; QVector<Syl> *getContentPtr() noexcept; // FIXME: remove me diff --git a/src/UI/DocumentViews/AudioVisualizer/TimingLine.cc b/src/UI/DocumentViews/AudioVisualizer/TimingLine.cc index a456223153ca2e7076e8dc7435b62d30d8b7030d..4092b07d525ba24ecfe1efdf88dbd7129977c754 100644 --- a/src/UI/DocumentViews/AudioVisualizer/TimingLine.cc +++ b/src/UI/DocumentViews/AudioVisualizer/TimingLine.cc @@ -112,7 +112,7 @@ qreal TimingLine::requestMove(int sepIndex, qreal x) { QRectF sceneRect = mapRectFromScene(scene()->sceneRect()); - QVector<Ass::Syl> *syls = line.getContentPtr(); + QVector<Ass::Syl> syls = line.getContent(); qreal ret = x; qreal mini, maxi; @@ -121,7 +121,7 @@ TimingLine::requestMove(int sepIndex, qreal x) prepareGeometryChange(); mini = sceneRect.left(); - maxi = sepIndex < syls->size() - 1 ? timingSyls[sepIndex + 1]->pos().x() + maxi = sepIndex < syls.size() - 1 ? timingSyls[sepIndex + 1]->pos().x() : TimingUtils::posFromMs(int(line.getDuration()) * 10); if (ret < mini) @@ -132,14 +132,14 @@ TimingLine::requestMove(int sepIndex, qreal x) tempOffset = ret; quint64 dur1 = quint64(TimingUtils::msFromPos(int(seps[1]->pos().x() - ret)) / 10); - (*syls)[0].setDuration(dur1); + syls[0].setDuration(dur1); timingSyls[0]->setLen(dur1); timingSyls[0]->setPos(ret, 0); line.setStart( quint64(TimingUtils::msFromPos(mapToScene(seps[0]->pos().x(), 0).x()) / 10)); } - else if (sepIndex >= syls->size()) { + else if (sepIndex >= syls.size()) { prepareGeometryChange(); mini = timingSyls[sepIndex - 1]->pos().x(); @@ -152,14 +152,14 @@ TimingLine::requestMove(int sepIndex, qreal x) quint64 dur2 = quint64(TimingUtils::msFromPos(int(ret - timingSyls[sepIndex - 1]->pos().x())) / 10); - (*syls)[sepIndex - 1].setDuration(dur2); + syls[sepIndex - 1].setDuration(dur2); timingSyls[sepIndex - 1]->setLen(dur2); line.setEnd(line.getStart() + quint64(TimingUtils::msFromPos(int(ret)) / 10)); } else { mini = timingSyls[sepIndex - 1]->pos().x(); - maxi = sepIndex < syls->size() - 1 ? timingSyls[sepIndex + 1]->pos().x() + maxi = sepIndex < syls.size() - 1 ? timingSyls[sepIndex + 1]->pos().x() : TimingUtils::posFromMs(int(line.getDuration() * 10)); if (ret < mini) @@ -167,7 +167,7 @@ TimingLine::requestMove(int sepIndex, qreal x) if (ret > maxi) ret = maxi; - quint64 sumDur = (*syls)[sepIndex].getDuration() + (*syls)[sepIndex - 1].getDuration(); + quint64 sumDur = syls[sepIndex].getDuration() + syls[sepIndex - 1].getDuration(); quint64 dur1 = quint64( TimingUtils::msFromPos(int(ret) - int(timingSyls[sepIndex - 1]->pos().x())) / 10); if (dur1 > sumDur) { @@ -175,13 +175,15 @@ TimingLine::requestMove(int sepIndex, qreal x) } quint64 dur2 = sumDur - dur1; - (*syls)[sepIndex - 1].setDuration(dur1); - (*syls)[sepIndex].setDuration(dur2); + syls[sepIndex - 1].setDuration(dur1); + syls[sepIndex].setDuration(dur2); timingSyls[sepIndex - 1]->setLen(dur1); timingSyls[sepIndex]->setPos(ret, 0); timingSyls[sepIndex]->setLen(dur2); } + line.setContent(syls); + return ret; }