Show time 3.0 as "3s" in the default (FORMAT_NORMAL) time display mode, rather than...
[synfig.git] / synfig-core / trunk / src / synfig / time.cpp
index ea59b8e..35232d4 100644 (file)
@@ -183,10 +183,11 @@ Time::get_string(float fps, Time::Format format)const
                time.value_=ceil(time.value_);
 
        int hour,minute;
-
-       hour=time/3600;time-=hour*3600;
-       minute=time/60;time-=minute*60;
-
+       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)
        {
@@ -204,6 +205,14 @@ Time::get_string(float fps, Time::Format format)const
                        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;
 
@@ -238,7 +247,7 @@ Time::get_string(float fps, Time::Format format)const
                        started = true;
                }
 
-               if(format<=FORMAT_FULL || frame || !started)
+               if(format<=FORMAT_FULL || abs(frame) > epsilon_() || !started)
                {
                        if (!(format<=FORMAT_NOSPACES) && started)
                                ret += " ";