mirror of
https://github.com/wolfpld/tracy.git
synced 2024-11-26 16:04:34 +00:00
Selection of time range on histogram.
This commit is contained in:
parent
dee7fd27be
commit
f42d8cee38
@ -2670,8 +2670,7 @@ void View::DrawFindZone()
|
|||||||
|
|
||||||
if( ImGui::Button( "Clear" ) )
|
if( ImGui::Button( "Clear" ) )
|
||||||
{
|
{
|
||||||
m_findZone.result.clear();
|
m_findZone.Reset();
|
||||||
m_findZone.match.clear();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if( ImGui::TreeNode( "Options" ) )
|
if( ImGui::TreeNode( "Options" ) )
|
||||||
@ -2687,8 +2686,7 @@ void View::DrawFindZone()
|
|||||||
|
|
||||||
if( findClicked )
|
if( findClicked )
|
||||||
{
|
{
|
||||||
m_findZone.result.clear();
|
m_findZone.Reset();
|
||||||
m_findZone.match.clear();
|
|
||||||
FindZones();
|
FindZones();
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -2742,8 +2740,21 @@ void View::DrawFindZone()
|
|||||||
ImGui::Checkbox( "Log values", &m_findZone.logVal );
|
ImGui::Checkbox( "Log values", &m_findZone.logVal );
|
||||||
ImGui::SameLine();
|
ImGui::SameLine();
|
||||||
ImGui::Checkbox( "Log time", &m_findZone.logTime );
|
ImGui::Checkbox( "Log time", &m_findZone.logTime );
|
||||||
|
ImGui::SameLine();
|
||||||
|
if( ImGui::Button( "Clear selection" ) ) m_findZone.highlight.active = false;
|
||||||
|
|
||||||
ImGui::Text( "Time range: %s - %s", TimeToString( tmin ), TimeToString( tmax ) );
|
ImGui::Text( "Time range: %s - %s (%s)", TimeToString( tmin ), TimeToString( tmax ), TimeToString( tmax - tmin ) );
|
||||||
|
|
||||||
|
if( m_findZone.highlight.active )
|
||||||
|
{
|
||||||
|
const auto s = std::min( m_findZone.highlight.start, m_findZone.highlight.end );
|
||||||
|
const auto e = std::max( m_findZone.highlight.start, m_findZone.highlight.end );
|
||||||
|
ImGui::Text( "Selection range: %s - %s (%s)", TimeToString( s ), TimeToString( e ), TimeToString( e - s ) );
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
ImGui::Text( "Selection range: none" );
|
||||||
|
}
|
||||||
|
|
||||||
const auto dt = double( tmax - tmin );
|
const auto dt = double( tmax - tmin );
|
||||||
|
|
||||||
@ -2958,6 +2969,38 @@ void View::DrawFindZone()
|
|||||||
ImGui::Text( "Time spent in the left bins: %s", TimeToString( tBefore ) );
|
ImGui::Text( "Time spent in the left bins: %s", TimeToString( tBefore ) );
|
||||||
ImGui::Text( "Time spent in the right bins: %s", TimeToString( tAfter ) );
|
ImGui::Text( "Time spent in the right bins: %s", TimeToString( tAfter ) );
|
||||||
ImGui::EndTooltip();
|
ImGui::EndTooltip();
|
||||||
|
|
||||||
|
if( ImGui::IsMouseClicked( 0 ) )
|
||||||
|
{
|
||||||
|
m_findZone.highlight.active = true;
|
||||||
|
m_findZone.highlight.start = t0;
|
||||||
|
m_findZone.highlight.end = t1;
|
||||||
|
}
|
||||||
|
else if( ImGui::IsMouseDragging( 0, 0 ) )
|
||||||
|
{
|
||||||
|
m_findZone.highlight.end = t1 > m_findZone.highlight.start ? t1 : t0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if( m_findZone.highlight.active && m_findZone.highlight.start != m_findZone.highlight.end )
|
||||||
|
{
|
||||||
|
const auto s = std::min( m_findZone.highlight.start, m_findZone.highlight.end );
|
||||||
|
const auto e = std::max( m_findZone.highlight.start, m_findZone.highlight.end );
|
||||||
|
|
||||||
|
float t0, t1;
|
||||||
|
if( m_findZone.logTime )
|
||||||
|
{
|
||||||
|
t0 = ( log10( s ) - log10( tmin ) ) / float( log10( tmax ) - log10( tmin ) ) * numBins;
|
||||||
|
t1 = ( log10( e ) - log10( tmin ) ) / float( log10( tmax ) - log10( tmin ) ) * numBins;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
t0 = ( s - tmin ) / float( tmax - tmin ) * numBins;
|
||||||
|
t1 = ( e - tmin ) / float( tmax - tmin ) * numBins;
|
||||||
|
}
|
||||||
|
|
||||||
|
draw->AddRectFilled( wpos + ImVec2( 2 + t0, 1 ), wpos + ImVec2( 2 + t1, Height-1 ), 0x22DD8888 );
|
||||||
|
draw->AddRect( wpos + ImVec2( 2 + t0, 1 ), wpos + ImVec2( 2 + t1, Height-1 ), 0x44DD8888 );
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -175,6 +175,14 @@ private:
|
|||||||
int maxDepth = -1;
|
int maxDepth = -1;
|
||||||
bool logVal = false;
|
bool logVal = false;
|
||||||
bool logTime = false;
|
bool logTime = false;
|
||||||
|
Region highlight;
|
||||||
|
|
||||||
|
void Reset()
|
||||||
|
{
|
||||||
|
result.clear();
|
||||||
|
match.clear();
|
||||||
|
highlight.active = false;
|
||||||
|
}
|
||||||
} m_findZone;
|
} m_findZone;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user