if (durationDiff == GenTime()) return;
//kDebug() << "-- RESCALE DIFF=" << durationDiff.frames(25) << ", CLIP: " << startPos().frames(25) << "-" << endPos().frames(25);
- if (type() == AVWIDGET) {
- if (hasSizeLimit && cropStart() + durationDiff < GenTime())
+ if (type() == AVWIDGET && hasSizeLimit && cropStart() + durationDiff < GenTime()) {
durationDiff = GenTime() - cropStart();
} else if (durationDiff >= cropDuration()) {
return;
//kDebug()<<"// DURATION DIFF: "<<durationDiff.frames(25)<<", POS: "<<pos().x();
m_info.startPos += durationDiff;
- if (type() == AVWIDGET) {
+ if (type() == AVWIDGET)
m_info.cropStart += durationDiff;
- }
- m_info.cropDuration = m_info.cropDuration - durationDiff;
+ m_info.cropDuration -= durationDiff;
setRect(0, 0, cropDuration().frames(m_fps) - 0.02, rect().height());
moveBy(durationDiff.frames(m_fps), 0);
if (m_info.startPos != GenTime(posx, m_fps)) {
//kDebug()<<"////// WARNING, DIFF IN XPOS: "<<pos().x()<<" == "<<m_startPos.frames(m_fps);
- GenTime diff = m_info.startPos - GenTime((int) posx, m_fps);
+ GenTime diff = m_info.startPos - GenTime(posx, m_fps);
- if (type() == AVWIDGET) {
+ if (type() == AVWIDGET)
m_info.cropStart += diff;
- }
- m_info.cropDuration = m_info.cropDuration - diff;
+
+ m_info.cropDuration -= diff;
setRect(0, 0, cropDuration().frames(m_fps) - 0.02, rect().height());
//kDebug()<<"// NEW START: "<<m_startPos.frames(25)<<", NW DUR: "<<m_cropDuration.frames(25);
}
double GenTime::s_delta = 0.00001;
-/** Creates a time object, with a time of 0 seconds. */
GenTime::GenTime()
{
m_time = 0.0;
}
-/** Creates a time object, with time given in seconds. */
GenTime::GenTime(double seconds)
{
m_time = seconds;
}
-/** Creates a time object, by passing number of frames and how many frames per second */
GenTime::GenTime(int frames, double framesPerSecond)
{
m_time = (double) frames / framesPerSecond;
}
-/** Returns the time, in milliseconds */
+double GenTime::seconds() const
+{
+ return m_time;
+}
+
double GenTime::ms() const
{
return m_time * 1000;
}
-/** Returns the time in frames, after being given the number of frames per second */
double GenTime::frames(double framesPerSecond) const
{
return floor(m_time * framesPerSecond + 0.5);
}
-GenTime::~GenTime()
+GenTime& GenTime::roundNearestFrame(double framesPerSecond)
{
-}
+ m_time = floor((m_time * framesPerSecond) + 0.5) / framesPerSecond;
+ return *this;
+}
\ No newline at end of file
#include <cmath>
-/**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. */
+ /** @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 */
+ /** @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;
+ /** @brief Rounds the GenTime's value to the nearest frame.
+ * @param framesPerSecond Number of frames per second */
+ GenTime & roundNearestFrame(double framesPerSecond);
+
+
+ /*
+ * Operators.
+ */
+
GenTime & operator+=(GenTime op) {
m_time += op.m_time;
return *this;
}
- /** Adds two GenTimes */ GenTime operator+(GenTime op) const {
+
+ GenTime & operator-=(GenTime op) {
+ m_time -= op.m_time;
+ return *this;
+ }
+
+ /** @brief Adds two GenTimes. */
+ GenTime operator+(GenTime op) const {
return GenTime(m_time + op.m_time);
}
- /** Subtracts one genTime from another */ GenTime operator-(GenTime op) const {
+
+ /** @brief Subtracts one genTime from another. */
+ GenTime operator-(GenTime op) const {
return GenTime(m_time - op.m_time);
}
- /** Multiplies one GenTime by a double value, returning a GenTime */
+
+ /** @brief Multiplies one GenTime by a double value, returning a GenTime. */
GenTime operator*(double op) const {
return GenTime(m_time * op);
}
- /** Divides one GenTime by a double value, returning a GenTime */
+
+ /** @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 + s_delta < op.m_time;
}
- /* Implementation of > operator; Works identically as with basic types. */
+
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 + s_delta >= op.m_time;
}
- /* Implementation of <= operator; Works identically as with basic types. */
+
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;
}
- /* Implementation of != operator; Works identically as with basic types. */
+
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;
- }
- ~GenTime();
-private: // Private attributes
+private:
/** Holds the time for this object. */
double m_time;