Pass yMin, yMax through TimelineContext.

This commit is contained in:
Bartosz Taudul 2023-03-15 23:56:57 +01:00
parent c81ef177ab
commit 9538fa99ca
No known key found for this signature in database
GPG Key ID: B7FE2008B7575DF3
11 changed files with 21 additions and 18 deletions

View File

@ -110,6 +110,8 @@ void TimelineController::End( double pxns, const ImVec2& wpos, bool hover, bool
ctx.w = ImGui::GetContentRegionAvail().x - 1; ctx.w = ImGui::GetContentRegionAvail().x - 1;
ctx.ty = ImGui::GetTextLineHeight(); ctx.ty = ImGui::GetTextLineHeight();
ctx.scale = GetScale(); ctx.scale = GetScale();
ctx.yMin = yMin;
ctx.yMax = yMax;
ctx.pxns = pxns; ctx.pxns = pxns;
ctx.nspx = 1.0 / pxns; ctx.nspx = 1.0 / pxns;
ctx.wpos = wpos; ctx.wpos = wpos;
@ -127,7 +129,7 @@ void TimelineController::End( double pxns, const ImVec2& wpos, bool hover, bool
for( auto& item : m_items ) for( auto& item : m_items )
{ {
auto currentFrameItemHeight = item->GetNextFrameHeight(); auto currentFrameItemHeight = item->GetNextFrameHeight();
item->Draw( m_firstFrame, ctx, yOffset, hover, yMin, yMax ); item->Draw( m_firstFrame, ctx, yOffset, hover );
if( m_firstFrame ) currentFrameItemHeight = item->GetNextFrameHeight(); if( m_firstFrame ) currentFrameItemHeight = item->GetNextFrameHeight();
yOffset += currentFrameItemHeight; yOffset += currentFrameItemHeight;
} }

View File

@ -19,7 +19,7 @@ TimelineItem::TimelineItem( View& view, Worker& worker, const void* key, bool wa
{ {
} }
void TimelineItem::Draw( bool firstFrame, const TimelineContext& ctx, int yOffset, bool hover, float yMin, float yMax ) void TimelineItem::Draw( bool firstFrame, const TimelineContext& ctx, int yOffset, bool hover )
{ {
const auto yBegin = yOffset; const auto yBegin = yOffset;
auto yEnd = yOffset; auto yEnd = yOffset;
@ -45,7 +45,7 @@ void TimelineItem::Draw( bool firstFrame, const TimelineContext& ctx, int yOffse
yEnd += ostep; yEnd += ostep;
if( m_showFull ) if( m_showFull )
{ {
if( !DrawContents( ctx, yEnd, hover, yMin, yMax ) && !m_view.GetViewData().drawEmptyLabels ) if( !DrawContents( ctx, yEnd, hover ) && !m_view.GetViewData().drawEmptyLabels )
{ {
yEnd = yBegin; yEnd = yBegin;
AdjustThreadHeight( firstFrame, yBegin, yEnd ); AdjustThreadHeight( firstFrame, yBegin, yEnd );
@ -60,7 +60,7 @@ void TimelineItem::Draw( bool firstFrame, const TimelineContext& ctx, int yOffse
float labelWidth; float labelWidth;
const auto hdrOffset = yBegin; const auto hdrOffset = yBegin;
const bool drawHeader = yPos + ty >= yMin && yPos <= yMax; const bool drawHeader = yPos + ty >= ctx.yMin && yPos <= ctx.yMax;
if( drawHeader ) if( drawHeader )
{ {
const auto color = HeaderColor(); const auto color = HeaderColor();

View File

@ -15,6 +15,7 @@ class Worker;
struct TimelineContext struct TimelineContext
{ {
float w, ty, scale; float w, ty, scale;
float yMin, yMax;
double pxns, nspx; double pxns, nspx;
ImVec2 wpos; ImVec2 wpos;
}; };
@ -26,7 +27,7 @@ public:
virtual ~TimelineItem() = default; virtual ~TimelineItem() = default;
// draws the timeline item and also updates the next frame height value // draws the timeline item and also updates the next frame height value
void Draw( bool firstFrame, const TimelineContext& ctx, int yOffset, bool hover, float yMin, float yMax ); void Draw( bool firstFrame, const TimelineContext& ctx, int yOffset, bool hover );
bool WantPreprocess() const { return m_wantPreprocess; } bool WantPreprocess() const { return m_wantPreprocess; }
virtual void Preprocess( const TimelineContext& ctx ) { assert( false ); } virtual void Preprocess( const TimelineContext& ctx ) { assert( false ); }
@ -54,7 +55,7 @@ protected:
virtual int64_t RangeBegin() const = 0; virtual int64_t RangeBegin() const = 0;
virtual int64_t RangeEnd() const = 0; virtual int64_t RangeEnd() const = 0;
virtual bool DrawContents( const TimelineContext& ctx, int& offset, bool hover, float yMin, float yMax ) = 0; virtual bool DrawContents( const TimelineContext& ctx, int& offset, bool hover ) = 0;
virtual void DrawOverlay( const ImVec2& ul, const ImVec2& dr ) {} virtual void DrawOverlay( const ImVec2& ul, const ImVec2& dr ) {}
virtual bool IsEmpty() const { return false; } virtual bool IsEmpty() const { return false; }

View File

@ -38,9 +38,9 @@ int64_t TimelineItemCpuData::RangeEnd() const
return -1; return -1;
} }
bool TimelineItemCpuData::DrawContents( const TimelineContext& ctx, int& offset, bool hover, float yMin, float yMax ) bool TimelineItemCpuData::DrawContents( const TimelineContext& ctx, int& offset, bool hover )
{ {
return m_view.DrawCpuData( ctx.pxns, offset, ctx.wpos, hover, yMin, yMax ); return m_view.DrawCpuData( ctx.pxns, offset, ctx.wpos, hover, ctx.yMin, ctx.yMax );
} }
} }

View File

@ -24,7 +24,7 @@ protected:
int64_t RangeBegin() const override; int64_t RangeBegin() const override;
int64_t RangeEnd() const override; int64_t RangeEnd() const override;
bool DrawContents( const TimelineContext& ctx, int& offset, bool hover, float yMin, float yMax ) override; bool DrawContents( const TimelineContext& ctx, int& offset, bool hover ) override;
bool IsEmpty() const override; bool IsEmpty() const override;
}; };

View File

@ -188,9 +188,9 @@ int64_t TimelineItemGpu::RangeEnd() const
return t; return t;
} }
bool TimelineItemGpu::DrawContents( const TimelineContext& ctx, int& offset, bool hover, float yMin, float yMax ) bool TimelineItemGpu::DrawContents( const TimelineContext& ctx, int& offset, bool hover )
{ {
return m_view.DrawGpu( *m_gpu, ctx.pxns, offset, ctx.wpos, hover, yMin, yMax ); return m_view.DrawGpu( *m_gpu, ctx.pxns, offset, ctx.wpos, hover, ctx.yMin, ctx.yMax );
} }
} }

View File

@ -26,7 +26,7 @@ protected:
void HeaderTooltip( const char* label ) const override; void HeaderTooltip( const char* label ) const override;
void HeaderExtraContents( int offset, const ImVec2& wpos, float labelWidth, double pxns, bool hover ) override; void HeaderExtraContents( int offset, const ImVec2& wpos, float labelWidth, double pxns, bool hover ) override;
bool DrawContents( const TimelineContext& ctx, int& offset, bool hover, float yMin, float yMax ) override; bool DrawContents( const TimelineContext& ctx, int& offset, bool hover ) override;
bool IsEmpty() const override; bool IsEmpty() const override;

View File

@ -104,9 +104,9 @@ int64_t TimelineItemPlot::RangeEnd() const
return m_plot->data.back().time.Val(); return m_plot->data.back().time.Val();
} }
bool TimelineItemPlot::DrawContents( const TimelineContext& ctx, int& offset, bool hover, float yMin, float yMax ) bool TimelineItemPlot::DrawContents( const TimelineContext& ctx, int& offset, bool hover )
{ {
return m_view.DrawPlot( *m_plot, ctx.pxns, offset, ctx.wpos, hover, yMin, yMax ); return m_view.DrawPlot( *m_plot, ctx.pxns, offset, ctx.wpos, hover, ctx.yMin, ctx.yMax );
} }
} }

View File

@ -24,7 +24,7 @@ protected:
void HeaderTooltip( const char* label ) const override; void HeaderTooltip( const char* label ) const override;
void HeaderExtraContents( int offset, const ImVec2& wpos, float labelWidth, double pxns, bool hover ) override; void HeaderExtraContents( int offset, const ImVec2& wpos, float labelWidth, double pxns, bool hover ) override;
bool DrawContents( const TimelineContext& ctx, int& offset, bool hover, float yMin, float yMax ) override; bool DrawContents( const TimelineContext& ctx, int& offset, bool hover ) override;
bool IsEmpty() const override; bool IsEmpty() const override;

View File

@ -252,9 +252,9 @@ void TimelineItemThread::HeaderExtraContents( int offset, const ImVec2& wpos, fl
#endif #endif
} }
bool TimelineItemThread::DrawContents( const TimelineContext& ctx, int& offset, bool hover, float yMin, float yMax ) bool TimelineItemThread::DrawContents( const TimelineContext& ctx, int& offset, bool hover )
{ {
const auto res = m_view.DrawThread( *m_thread, ctx.pxns, offset, ctx.wpos, hover, yMin, yMax, m_ghost ); const auto res = m_view.DrawThread( *m_thread, ctx.pxns, offset, ctx.wpos, hover, ctx.yMin, ctx.yMax, m_ghost );
if( !res ) if( !res )
{ {
auto& crash = m_worker.GetCrashEvent(); auto& crash = m_worker.GetCrashEvent();

View File

@ -24,7 +24,7 @@ protected:
void HeaderTooltip( const char* label ) const override; void HeaderTooltip( const char* label ) const override;
void HeaderExtraContents( int offset, const ImVec2& wpos, float labelWidth, double pxns, bool hover ) override; void HeaderExtraContents( int offset, const ImVec2& wpos, float labelWidth, double pxns, bool hover ) override;
bool DrawContents( const TimelineContext& ctx, int& offset, bool hover, float yMin, float yMax ) override; bool DrawContents( const TimelineContext& ctx, int& offset, bool hover ) override;
void DrawOverlay( const ImVec2& ul, const ImVec2& dr ) override; void DrawOverlay( const ImVec2& ul, const ImVec2& dr ) override;
bool IsEmpty() const override; bool IsEmpty() const override;