Removed a bunch more DEBUGPOINT()s.
[synfig.git] / synfig-core / trunk / src / synfig / time.cpp
index 5cf03f1..6755b80 100644 (file)
@@ -101,7 +101,7 @@ Time::Time(const String &str_, float fps):
        int read;
        float amount;
 
-       // Now try to read it in the letter-abreviated format
+       // Now try to read it in the letter-abbreviated format
        while(pos<str.size() && sscanf(String(str,pos).c_str(),"%f%n",&amount,&read))
        {
                pos+=read;
@@ -193,7 +193,7 @@ Time::get_string(float fps, Time::Format format)const
                int second;
                second=time;time-=second;
 
-               if(fps)
+               if(fps && fps>1)
                {
                        int frame;
                        frame=round_to_int(time*fps);
@@ -219,7 +219,7 @@ Time::get_string(float fps, Time::Format format)const
                started = true;
        }
 
-       if(fps)
+       if(fps && fps>1)
        {
                int second;
                float frame;
@@ -246,7 +246,20 @@ Time::get_string(float fps, Time::Format format)const
                if(format<=FORMAT_FULL || second || !started)
                {
                        if(abs(second-floor(second))>=epsilon_())
-                               ret+=strprintf("%0.8fs",second);
+                       {
+                               String seconds(strprintf("%0.8f",second));
+
+                               // skip trailing zeros
+                               int count = 0;
+                               String::reverse_iterator i = seconds.rbegin();
+                               for ( ; (*i) == '0'; i++)
+                                       count++;
+
+                               // if we removed too many, go back one place, leaving one zero
+                               if (*i < '0' || *i > '9') count--;
+
+                               ret += seconds.substr(0, seconds.size()-count) + "s";
+                       }
                        else
                                ret+=strprintf("%0.0fs",second);
                }
@@ -270,6 +283,14 @@ Time::round(float fps)const
                return ceil(time)/fps;
 }
 
+#ifdef _DEBUG
+const char *
+Time::c_str()const
+{
+       return get_string().c_str();
+}
+#endif
+
 //! \writeme
 bool
 Time::is_valid()const