1212
1313namespace
1414{
15- #define GRAPHSTAT_HISTORY_SIZE 256
16-
1715 struct SGraphStatLine
1816 {
1917 TIMEUS prevData;
@@ -113,6 +111,11 @@ void CGraphStats::AddTimingPoint(const char* szName)
113111 if (!IsEnabled ())
114112 return ;
115113
114+ CGraphicsInterface* pGraphics = g_pCore->GetGraphics ();
115+
116+ std::uint32_t viewportWidth = pGraphics->GetViewportWidth ();
117+ std::uint32_t sizeX = viewportWidth / 4 ; // one quarter of screen width
118+
116119 // Start of next frame?
117120 if (szName[0 ] == 0 )
118121 {
@@ -133,7 +136,7 @@ void CGraphStats::AddTimingPoint(const char* szName)
133136 for (int i = 0 ; i < Dups; i++)
134137 {
135138 pLine->iDataPos ++;
136- if (pLine->iDataPos > GRAPHSTAT_HISTORY_SIZE - 1 )
139+ if (pLine->iDataPos > sizeX - 1 )
137140 pLine->iDataPos = 0 ;
138141 pLine->dataHistory [pLine->iDataPos ] = Data;
139142 }
@@ -153,7 +156,7 @@ void CGraphStats::AddTimingPoint(const char* szName)
153156 // Add new line
154157 MapSet (m_LineList, szName, SGraphStatLine ());
155158 pLine = MapFind (m_LineList, szName);
156- pLine->dataHistory .resize (GRAPHSTAT_HISTORY_SIZE );
159+ pLine->dataHistory .resize (sizeX );
157160 memset (&pLine->dataHistory [0 ], 0 , pLine->dataHistory .size ());
158161 pLine->iDataPos = 0 ;
159162 pLine->prevData = 0 ;
@@ -179,7 +182,7 @@ void CGraphStats::AddTimingPoint(const char* szName)
179182
180183 // Inc position
181184 pLine->iDataPos ++;
182- if (pLine->iDataPos > GRAPHSTAT_HISTORY_SIZE - 1 )
185+ if (pLine->iDataPos > sizeX - 1 )
183186 pLine->iDataPos = 0 ;
184187
185188 // Insert data point
@@ -199,44 +202,49 @@ void CGraphStats::Draw()
199202 return ;
200203
201204 CGraphicsInterface* pGraphics = g_pCore->GetGraphics ();
205+ CLocalGUI* pLocalGUI = g_pCore->GetLocalGUI ();
206+
207+ std::uint32_t viewportWidth = pGraphics->GetViewportWidth (); // get width of current resolution
208+ std::uint32_t viewportHeight = pGraphics->GetViewportHeight (); // get height of current resolution
209+ std::uint32_t originX = 10 ; // offset the graph by 10 pixels from left side of screen
210+ std::uint32_t originY = pLocalGUI->GetChatBottomPosition (); // get chat bottom screen position
211+ std::uint32_t sizeX = viewportWidth / 4 ; // set the width of graph to 1/4 of current resolution
212+ std::uint32_t sizeY = viewportHeight / 4 ; // set the height of graph to 1/4 of current resolution
213+ std::uint32_t rangeY = 100 ; // 100ms
214+
215+ originY = originY + sizeY + 30 ; // add graph height plus a little gap to the overall Y position
202216
203- uint uiViewportHeight = pGraphics->GetViewportHeight ();
204- uint uiOriginX = 10 ;
205- uint uiOriginY = std::min<int >(500 , uiViewportHeight - 10 );
206- uint uiSizeX = GRAPHSTAT_HISTORY_SIZE;
207- uint uiSizeY = 150 ;
208- uint uiRangeY = 100 ; // 100ms
209- float fLineScale = 1 / 1000 .f / uiRangeY * uiSizeY;
217+ float fLineScale = 1 / 1000 .f / rangeY * sizeY;
210218 float fLineHeight = pGraphics->GetDXFontHeight ();
211219
212220 // Backgroung box
213- pGraphics->DrawRectQueued (uiOriginX, uiOriginY - uiSizeY, uiSizeX, uiSizeY , SColorRGBA (0 , 0 , 0 , 128 ), true );
221+ pGraphics->DrawRectQueued (originX, originY - sizeY, sizeX, sizeY , SColorRGBA (0 , 0 , 0 , 128 ), true );
214222
215223 // Draw data lines
216- float fLabelX = uiOriginX + uiSizeX + 22 ;
217- float fLabelY = uiOriginY - m_LineList.size () * fLineHeight ;
224+ float fLabelX = originX + sizeX + 22 ;
225+ float fLabelY = originY - m_LineList.size () * fLineHeight ;
218226 for (const auto & dataLine : m_LineList)
219227 {
220228 const SGraphStatLine& line = dataLine.second ;
221229 int iDataPos = line.iDataPos ;
222230 int iDataPosPrev = iDataPos;
223231
224- for (int i = uiSizeX - 1 ; i > 0 ; i--)
232+ for (int i = sizeX - 1 ; i > 0 ; i--)
225233 {
226234 float fY0 = line.dataHistory [iDataPos] * fLineScale ;
227235 float fY1 = line.dataHistory [iDataPosPrev] * fLineScale ;
228236
229237 iDataPosPrev = iDataPos;
230238 iDataPos--;
231239 if (iDataPos == -1 )
232- iDataPos = GRAPHSTAT_HISTORY_SIZE - 1 ;
240+ iDataPos = sizeX - 1 ;
233241
234- pGraphics->DrawLineQueued (uiOriginX + i - 1 , uiOriginY - fY0 , uiOriginX + i, uiOriginY - fY1 , 1 , line.color , true );
242+ pGraphics->DrawLineQueued (originX + i - 1 , originY - fY0 , originX + i, originY - fY1 , 1 , line.color , true );
235243
236- if (i == uiSizeX - 1 )
244+ if (i == sizeX - 1 )
237245 {
238246 // Line from graph to label
239- pGraphics->DrawLineQueued (uiOriginX + i - 1 , uiOriginY - fY0 , fLabelX - 2 , fLabelY + fLineHeight / 2 , 1 , line.color , true );
247+ pGraphics->DrawLineQueued (originX + i - 1 , originY - fY0 , fLabelX - 2 , fLabelY + fLineHeight / 2 , 1 , line.color , true );
240248 }
241249 }
242250
0 commit comments