X-Git-Url: https://git.sesse.net/?a=blobdiff_plain;f=src%2Fgentime.h;h=8b735b44ed290b0a3ab842e2359f8a05afb1f961;hb=c3302003093710ee247ad84c0fe2ef3c579d417f;hp=65e06d3c0be39b5ee6a68d286927f5fcf6f235e1;hpb=1ecbd5b62783247938e9873868e6ce625ef23b6c;p=kdenlive diff --git a/src/gentime.h b/src/gentime.h index 65e06d3c..8b735b44 100644 --- a/src/gentime.h +++ b/src/gentime.h @@ -18,86 +18,114 @@ #ifndef GENTIME_H #define GENTIME_H +#include #include -/**Encapsulates a time, which can be set in various forms and outputted in various forms. - *@author Jason Wood - */ +/** + * @class GenTime + * @brief Encapsulates a time, which can be set in various forms and outputted in various forms. + * @author Jason Wood + */ -class GenTime { - public: - /** Creates a time object, with a time of 0 seconds. */ +class GenTime +{ +public: + /** @brief Creates a GenTime object, with a time of 0 seconds. */ GenTime(); - /** Creates a time object, with time given in seconds. */ + /** @brief Creates a GenTime object, with time given in seconds. */ explicit GenTime(double seconds); - /** Creates a time object, by passing number of frames and how many frames per second */ - GenTime(int frames, double framesPerSecond); + /** @brief Creates a GenTime object, by passing number of frames and how many frames per second. */ + GenTime(int frames, double framesPerSecond); - /** returns the time, in seconds */ - double seconds() const { - return m_time; - } - /** Returns the time, in milliseconds */ double ms() const; + /** @brief Gets the time, in seconds. */ + double seconds() const; + + /** @brief Gets the time, in milliseconds */ + double ms() const; - /** Returns the time in frames, after being given the number of frames per second */ + /** @brief Gets the time in frames. + * @param framesPerSecond Number of frames per second */ double frames(double framesPerSecond) const; - GenTime & operator+=(GenTime op) { - m_time += op.m_time; - return *this; + /** @brief Rounds the GenTime's value to the nearest frame. + * @param framesPerSecond Number of frames per second */ + GenTime & roundNearestFrame(double framesPerSecond); + + QString toString() const; + + + /* + * Operators. + */ + + /// Unary minus + GenTime operator -() { + return GenTime(-m_time); + } + + /// Addition + GenTime & operator+=(GenTime op) { + m_time += op.m_time; + return *this; } - /** Adds two GenTimes */ GenTime operator+(GenTime op) const { - return GenTime(m_time + op.m_time); + + /// Subtraction + GenTime & operator-=(GenTime op) { + m_time -= op.m_time; + return *this; } - /** Subtracts one genTime from another */ GenTime operator-(GenTime op) const { - return GenTime(m_time - op.m_time); + + /** @brief Adds two GenTimes. */ + GenTime operator+(GenTime op) const { + return GenTime(m_time + op.m_time); } - /** Multiplies one GenTime by a double value, returning a GenTime */ - GenTime operator*(double op) const { - return GenTime(m_time * op); + + /** @brief Subtracts one genTime from another. */ + GenTime operator-(GenTime op) const { + return GenTime(m_time - op.m_time); } - /** Divides one GenTime by a double value, returning a GenTime */ - GenTime operator/(double op) const { - return GenTime(m_time / op); + + /** @brief Multiplies one GenTime by a double value, returning a GenTime. */ + GenTime operator*(double op) const { + return GenTime(m_time * op); } - /* Implementation of < operator; Works identically as with basic types. */ - bool operator<(GenTime op) const { - return m_time + s_delta < op.m_time; + + /** @brief Divides one GenTime by a double value, returning a GenTime. */ + GenTime operator/(double op) const { + return GenTime(m_time / op); } - /* Implementation of > operator; Works identically as with basic types. */ - bool operator>(GenTime op) const { - return m_time > op.m_time + s_delta; + + bool operator<(GenTime op) const { + return m_time + s_delta < op.m_time; } - /* Implementation of >= operator; Works identically as with basic types. */ - bool operator>=(GenTime op) const { - return m_time + s_delta >= op.m_time; + + bool operator>(GenTime op) const { + return m_time > op.m_time + s_delta; } - /* Implementation of <= operator; Works identically as with basic types. */ - bool operator<=(GenTime op) const { - return m_time <= op.m_time + s_delta; + + bool operator>=(GenTime op) const { + return m_time + s_delta >= op.m_time; } - /* Implementation of == operator; Works identically as with basic types. */ - bool operator==(GenTime op) const { - return fabs(m_time - op.m_time) < s_delta; + + bool operator<=(GenTime op) const { + return m_time <= op.m_time + s_delta; } - /* Implementation of != operator; Works identically as with basic types. */ - bool operator!=(GenTime op) const { - return fabs(m_time - op.m_time) >= s_delta; + + bool operator==(GenTime op) const { + return fabs(m_time - op.m_time) < s_delta; } - /* Rounds the GenTIme's value to the nearest frame */ - GenTime & roundNearestFrame(double framesPerSecond) { - m_time = floor((m_time * framesPerSecond) + 0.5) / framesPerSecond; - return *this; + + bool operator!=(GenTime op) const { + return fabs(m_time - op.m_time) >= s_delta; } - ~GenTime(); - private: // Private attributes - /** Holds the time for this object. */ +private: + /** Holds the time in seconds for this object. */ double m_time; - /** A delta value that is used to get around floating point rounding issues. */ + /** A delta value that is used to get around floating point rounding issues. */ static double s_delta; };