**
** \legal
** Copyright (c) 2002-2005 Robert B. Quattlebaum Jr., Adrian Bentley
-** Copyright (c) 2007 Chris Moore
+** Copyright (c) 2007, 2008 Chris Moore
+** Copyright (c) 2008 Gerco Ballintijn
+** Copyright (c) 2008 Carlos López
**
** This package is free software; you can redistribute it and/or
** modify it under the terms of the GNU General Public License as
if(ceil(time.value_)-time.value_<epsilon_())
time.value_=ceil(time.value_);
- int hour,minute;
-
- hour=time/3600;time-=hour*3600;
- minute=time/60;time-=minute*60;
-
+ int hour = 0, minute = 0;
+ if(!(format<=FORMAT_FRAMES))
+ {
+ hour=time/3600;time-=hour*3600;
+ minute=time/60;time-=minute*60;
+ }
// <= is redefined, so this means "is the FORMAT_VIDEO bit set in the format?"
if(format<=FORMAT_VIDEO)
{
return strprintf("%02d:%02d:%02d",hour,minute,second);
}
+ if (format <= FORMAT_FRAMES)
+ {
+ if (fps && fps>0)
+ return strprintf("%df", round_to_int(time * fps));
+ else
+ return strprintf("%ds", round_to_int(time * 1));
+ }
+
String ret;
bool started = false;
if(format<=FORMAT_FULL || minute)
{
- ret+=strprintf(format<=FORMAT_NOSPACES||!started?"%dm":" %dm",minute);
+ if (!(format<=FORMAT_NOSPACES) && started)
+ ret += " ";
+
+ ret += strprintf("%dm", minute);
started = true;
}
float frame;
second=time;time-=second;
frame=time*fps;
+
if(format<=FORMAT_FULL || second)
{
- ret+=strprintf(format<=FORMAT_NOSPACES||!started?"%ds":" %ds",(int)second);
+ if (!(format<=FORMAT_NOSPACES) && started)
+ ret += " ";
+
+ ret += strprintf("%ds", (int)second);
started = true;
}
- if(format<=FORMAT_FULL || frame || !started)
+ if(format<=FORMAT_FULL || abs(frame) > epsilon_() || !started)
{
- if(abs(frame-floor(frame)>=epsilon_()))
- ret+=strprintf(format<=FORMAT_NOSPACES||!started?"%0.3ff":" %0.3ff",frame);
+ if (!(format<=FORMAT_NOSPACES) && started)
+ ret += " ";
+
+ if(abs(frame-floor(frame) >= epsilon_()))
+ ret += strprintf("%0.3ff", frame);
else
- ret+=strprintf(format<=FORMAT_NOSPACES||!started?"%0.0ff":" %0.0ff",frame);
+ ret += strprintf("%0.0ff", frame);
}
}
else
second=time;
if(format<=FORMAT_FULL || second || !started)
{
+ if (!(format<=FORMAT_NOSPACES) && started)
+ ret += " ";
+
if(abs(second-floor(second))>=epsilon_())
{
String seconds(strprintf("%0.8f",second));