From 87cfd98b69827c3efe77bec531f656a20da4f061 Mon Sep 17 00:00:00 2001 From: Bartosz Taudul Date: Wed, 28 Feb 2018 15:38:32 +0100 Subject: [PATCH] No need for fractional time part on graph ticks. --- server/TracyView.cpp | 44 ++++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 42 insertions(+), 2 deletions(-) diff --git a/server/TracyView.cpp b/server/TracyView.cpp index 8a931d0d..ffb0fe44 100644 --- a/server/TracyView.cpp +++ b/server/TracyView.cpp @@ -62,6 +62,46 @@ static const char* TimeToString( int64_t ns ) return buf; } +static const char* TimeToStringInteger( int64_t ns ) +{ + enum { Pool = 8 }; + static char bufpool[Pool][64]; + static int bufsel = 0; + char* buf = bufpool[bufsel]; + bufsel = ( bufsel + 1 ) % Pool; + + const char* sign = ""; + if( ns < 0 ) + { + sign = "-"; + ns = -ns; + } + + if( ns < 1000 ) + { + sprintf( buf, "%s%" PRIi64 " ns", sign, ns ); + } + else if( ns < 1000ll * 1000 ) + { + sprintf( buf, "%s%.0f us", sign, ns / 1000. ); + } + else if( ns < 1000ll * 1000 * 1000 ) + { + sprintf( buf, "%s%.0f ms", sign, ns / ( 1000. * 1000. ) ); + } + else if( ns < 1000ll * 1000 * 1000 * 60 ) + { + sprintf( buf, "%s%.0f s", sign, ns / ( 1000. * 1000. * 1000. ) ); + } + else + { + const auto m = int64_t( ns / ( 1000ll * 1000 * 1000 * 60 ) ); + const auto s = int64_t( ns - m * ( 1000ll * 1000 * 1000 * 60 ) ); + sprintf( buf, "%s%" PRIi64 ":%02.0f", sign, m, s / ( 1000. * 1000. * 1000. ) ); + } + return buf; +} + static const char* RealToString( double val, bool separator ) { enum { Pool = 8 }; @@ -2801,7 +2841,7 @@ void View::DrawFindZone() if( tw == 0 || x > tx + tw + ty * 1.1 ) { tx = x; - auto txt = TimeToString( tt ); + auto txt = TimeToStringInteger( tt ); draw->AddText( wpos + ImVec2( x, yoff + round( ty * 0.5 ) ), 0x66FFFFFF, txt ); tw = ImGui::CalcTextSize( txt ).x; } @@ -2847,7 +2887,7 @@ void View::DrawFindZone() if( iter == 0 && ( tw == 0 || x > tx + tw + ty * 2 ) ) { tx = x; - auto txt = TimeToString( tt ); + auto txt = TimeToStringInteger( tt ); draw->AddText( wpos + ImVec2( xo + x, yoff + round( ty * 0.5 ) ), 0x66FFFFFF, txt ); tw = ImGui::CalcTextSize( txt ).x; }