Move mouse highlight data to a separate struct.

This commit is contained in:
Bartosz Taudul 2018-03-04 22:21:35 +01:00
parent f7829a7eae
commit dee7fd27be
2 changed files with 15 additions and 12 deletions

View File

@ -161,7 +161,6 @@ View::View( const char* addr )
, m_zoneInfoWindow( nullptr ) , m_zoneInfoWindow( nullptr )
, m_lockHighlight { -1 } , m_lockHighlight { -1 }
, m_gpuInfoWindow( nullptr ) , m_gpuInfoWindow( nullptr )
, m_drawRegion( false )
, m_gpuThread( 0 ) , m_gpuThread( 0 )
, m_gpuStart( 0 ) , m_gpuStart( 0 )
, m_gpuEnd( 0 ) , m_gpuEnd( 0 )
@ -193,7 +192,6 @@ View::View( FileRead& f )
, m_zvScroll( 0 ) , m_zvScroll( 0 )
, m_zoneInfoWindow( nullptr ) , m_zoneInfoWindow( nullptr )
, m_gpuInfoWindow( nullptr ) , m_gpuInfoWindow( nullptr )
, m_drawRegion( false )
, m_gpuThread( 0 ) , m_gpuThread( 0 )
, m_gpuStart( 0 ) , m_gpuStart( 0 )
, m_gpuEnd( 0 ) , m_gpuEnd( 0 )
@ -608,16 +606,16 @@ void View::HandleZoneViewMouse( int64_t timespan, const ImVec2& wpos, float w, d
if( ImGui::IsMouseClicked( 0 ) ) if( ImGui::IsMouseClicked( 0 ) )
{ {
m_drawRegion = true; m_highlight.active = true;
m_regionEnd = m_regionStart = m_zvStart + ( io.MousePos.x - wpos.x ) * nspx; m_highlight.start = m_highlight.end = m_zvStart + ( io.MousePos.x - wpos.x ) * nspx;
} }
else if( ImGui::IsMouseDragging( 0, 0 ) ) else if( ImGui::IsMouseDragging( 0, 0 ) )
{ {
m_regionEnd = m_zvStart + ( io.MousePos.x - wpos.x ) * nspx; m_highlight.end = m_zvStart + ( io.MousePos.x - wpos.x ) * nspx;
} }
else else
{ {
m_drawRegion = false; m_highlight.active = false;
} }
if( ImGui::IsMouseDragging( 1, 0 ) ) if( ImGui::IsMouseDragging( 1, 0 ) )
@ -1062,10 +1060,10 @@ void View::DrawZones()
draw->AddRect( ImVec2( wpos.x + px0, linepos.y ), ImVec2( wpos.x + px1, linepos.y + lineh ), 0x4488DD88 ); draw->AddRect( ImVec2( wpos.x + px0, linepos.y ), ImVec2( wpos.x + px1, linepos.y + lineh ), 0x4488DD88 );
} }
if( m_drawRegion && m_regionStart != m_regionEnd ) if( m_highlight.active && m_highlight.start != m_highlight.end )
{ {
const auto s = std::min( m_regionStart, m_regionEnd ); const auto s = std::min( m_highlight.start, m_highlight.end );
const auto e = std::max( m_regionStart, m_regionEnd ); const auto e = std::max( m_highlight.start, m_highlight.end );
draw->AddRectFilled( ImVec2( wpos.x + ( s - m_zvStart ) * pxns, linepos.y ), ImVec2( wpos.x + ( e - m_zvStart ) * pxns, linepos.y + lineh ), 0x22DD8888 ); draw->AddRectFilled( ImVec2( wpos.x + ( s - m_zvStart ) * pxns, linepos.y ), ImVec2( wpos.x + ( e - m_zvStart ) * pxns, linepos.y + lineh ), 0x22DD8888 );
draw->AddRect( ImVec2( wpos.x + ( s - m_zvStart ) * pxns, linepos.y ), ImVec2( wpos.x + ( e - m_zvStart ) * pxns, linepos.y + lineh ), 0x44DD8888 ); draw->AddRect( ImVec2( wpos.x + ( s - m_zvStart ) * pxns, linepos.y ), ImVec2( wpos.x + ( e - m_zvStart ) * pxns, linepos.y + lineh ), 0x44DD8888 );

View File

@ -32,6 +32,13 @@ class View
double lenMod; double lenMod;
}; };
struct Region
{
bool active = false;
int64_t start;
int64_t end;
};
public: public:
View() : View( "127.0.0.1" ) {} View() : View( "127.0.0.1" ) {}
View( const char* addr ); View( const char* addr );
@ -142,9 +149,7 @@ private:
const GpuEvent* m_gpuHighlight; const GpuEvent* m_gpuHighlight;
uint64_t m_gpuInfoWindowThread; uint64_t m_gpuInfoWindowThread;
bool m_drawRegion; Region m_highlight;
int64_t m_regionStart;
int64_t m_regionEnd;
uint64_t m_gpuThread; uint64_t m_gpuThread;
int64_t m_gpuStart; int64_t m_gpuStart;