X-Git-Url: https://git.sesse.net/?a=blobdiff_plain;f=src%2Ftimecode.cpp;h=789b286103d2bf0659513ec0c6fc04da94b64cf9;hb=c3302003093710ee247ad84c0fe2ef3c579d417f;hp=d60fa3554cf83404e271290f980432b2854072ab;hpb=3f792a879e99ee97e1cf3bb2ce09e19ed820ed41;p=kdenlive diff --git a/src/timecode.cpp b/src/timecode.cpp index d60fa355..789b2861 100644 --- a/src/timecode.cpp +++ b/src/timecode.cpp @@ -117,7 +117,7 @@ bool Timecode::df() const return m_dropFrameTimecode; } -const QString Timecode::mask(GenTime t) const +const QString Timecode::mask(const GenTime& t) const { if (t < GenTime()) { if (m_dropFrameTimecode) return "#99:99:99,99"; @@ -142,13 +142,17 @@ int Timecode::getDisplayFrameCount(const QString &duration, bool frameDisplay) c int Timecode::getFrameCount(const QString &duration) const { + if (duration.isEmpty()) { + return 0; + } int hours, minutes, seconds, frames; int offset = 0; if (duration.at(0) == '-') { offset = 1; hours = duration.mid(1, 2).toInt(); + } else { + hours = duration.left(2).toInt(); } - else hours = duration.left(2).toInt(); minutes = duration.mid(3 + offset, 2).toInt(); seconds = duration.mid(6 + offset, 2).toInt(); frames = duration.right(2).toInt(); @@ -161,7 +165,7 @@ int Timecode::getFrameCount(const QString &duration) const int frameNumber = ((m_displayedFramesPerSecond * 3600 * hours) + (m_displayedFramesPerSecond * 60 * minutes) + (m_displayedFramesPerSecond * seconds) + frames) - (m_dropFrames * (totalMinutes - floor(totalMinutes / 10))); return frameNumber; } - return (int)(hours * 3600.0 + minutes * 60.0 + seconds * m_realFps + frames); + return (int)((hours * 3600.0 + minutes * 60.0 + seconds) * m_realFps + frames); } QString Timecode::getDisplayTimecode(const GenTime & time, bool frameDisplay) const @@ -206,7 +210,7 @@ const QString Timecode::getTimecodeFromFrames(int frames) const //static -QString Timecode::getStringTimecode(int frames, const double &fps) +QString Timecode::getStringTimecode(int frames, const double &fps, bool showFrames) { // Returns the timecode in an hh:mm:ss format @@ -217,6 +221,7 @@ QString Timecode::getStringTimecode(int frames, const double &fps) } int seconds = (int)(frames / fps); + int frms = frames % (int) (fps + 0.5); int minutes = seconds / 60; seconds = seconds % 60; int hours = minutes / 60; @@ -229,6 +234,10 @@ QString Timecode::getStringTimecode(int frames, const double &fps) text.append(QString::number(minutes).rightJustified(2, '0', false)); text.append(':'); text.append(QString::number(seconds).rightJustified(2, '0', false)); + if (showFrames) { + text.append('.'); + text.append(QString::number(frms).rightJustified(2, '0', false)); + } return text; }