Kaydet (Commit) 7a91a493 authored tarafından weigao's avatar weigao Kaydeden (comit) Markus Mohrhard

add data update text rendering

Change-Id: I022bb00b3704fd3e6bc00a625016716cc7092a99
üst 76fa5481
...@@ -404,9 +404,11 @@ GL3DBarChart::GL3DBarChart( ...@@ -404,9 +404,11 @@ GL3DBarChart::GL3DBarChart(
mSelectBarId(0), mSelectBarId(0),
miScrollRate(0), miScrollRate(0),
miFrameCount(0), miFrameCount(0),
miDataUpdateCounter(0),
mbScrollFlg(false), mbScrollFlg(false),
mbScreenTextNewRender(false), mbScreenTextNewRender(false),
maFPS(OUString("Render FPS: 0")) maFPS(OUString("Render FPS: 0")),
maDataUpdateFPS(OUString("Data Update FPS: 0"))
{ {
if (BENCH_MARK_MODE) if (BENCH_MARK_MODE)
{ {
...@@ -423,8 +425,10 @@ GL3DBarChart::GL3DBarChart( ...@@ -423,8 +425,10 @@ GL3DBarChart::GL3DBarChart(
maTimer.SetTimeout(DATA_UPDATE_TIME); maTimer.SetTimeout(DATA_UPDATE_TIME);
maTimer.SetTimeoutHdl(LINK(this, GL3DBarChart, updateTimer)); maTimer.SetTimeoutHdl(LINK(this, GL3DBarChart, updateTimer));
maTimer.Start(); maTimer.Start();
osl_getSystemTime(&mafpsRenderStartTime); osl_getSystemTime(&maFPSRenderStartTime);
osl_getSystemTime(&mafpsRenderEndTime); osl_getSystemTime(&maFPSRenderEndTime);
osl_getSystemTime(&maDataUpdateStartTime);
osl_getSystemTime(&maDataUpdateEndTime);
} }
Size aSize = mrWindow.GetSizePixel(); Size aSize = mrWindow.GetSizePixel();
mpRenderer->SetSize(aSize); mpRenderer->SetSize(aSize);
...@@ -665,6 +669,7 @@ void GL3DBarChart::create3DShapes(const boost::ptr_vector<VDataSeries>& rDataSer ...@@ -665,6 +669,7 @@ void GL3DBarChart::create3DShapes(const boost::ptr_vector<VDataSeries>& rDataSer
mrWindow.getContext().resetCurrent(); mrWindow.getContext().resetCurrent();
mpRenderThread->launch(); mpRenderThread->launch();
} }
miDataUpdateCounter++;
mbNeedsNewRender = true; mbNeedsNewRender = true;
} }
...@@ -912,9 +917,9 @@ void GL3DBarChart::contextDestroyed() ...@@ -912,9 +917,9 @@ void GL3DBarChart::contextDestroyed()
mbValidContext = false; mbValidContext = false;
} }
void GL3DBarChart::addScreenTextShape(OUString &nStr, glm::vec2 rLeftTop, float nTextHeight, glm::vec3 rPos) void GL3DBarChart::addScreenTextShape(OUString &nStr, glm::vec2 rLeftTop, float nTextHeight, glm::vec3 rPos, sal_uInt32 nEvent)
{ {
maScreenTextShapes.push_back(new opengl3D::ScreenText(mpRenderer.get(), *mpTextCache, nStr, 0)); maScreenTextShapes.push_back(new opengl3D::ScreenText(mpRenderer.get(), *mpTextCache, nStr, nEvent));
opengl3D::TextCacheItem tmpTextCache = mpTextCache->getText(nStr); opengl3D::TextCacheItem tmpTextCache = mpTextCache->getText(nStr);
float rectWidth = (float)tmpTextCache.maSize.Width() / (float)tmpTextCache.maSize.Height() * 0.05; float rectWidth = (float)tmpTextCache.maSize.Width() / (float)tmpTextCache.maSize.Height() * 0.05;
opengl3D::ScreenText* pScreenText = static_cast<opengl3D::ScreenText*>(&maScreenTextShapes.back()); opengl3D::ScreenText* pScreenText = static_cast<opengl3D::ScreenText*>(&maScreenTextShapes.back());
...@@ -923,17 +928,17 @@ void GL3DBarChart::addScreenTextShape(OUString &nStr, glm::vec2 rLeftTop, float ...@@ -923,17 +928,17 @@ void GL3DBarChart::addScreenTextShape(OUString &nStr, glm::vec2 rLeftTop, float
void GL3DBarChart::updateRenderFPS() void GL3DBarChart::updateRenderFPS()
{ {
int aDeltaMs = calcTimeInterval(mafpsRenderStartTime, mafpsRenderEndTime); int aDeltaMs = calcTimeInterval(maFPSRenderStartTime, maFPSRenderEndTime);
if(aDeltaMs >= 500) if(aDeltaMs >= 500)
{ {
osl_getSystemTime(&mafpsRenderEndTime); osl_getSystemTime(&maFPSRenderEndTime);
aDeltaMs = calcTimeInterval(mafpsRenderStartTime, mafpsRenderEndTime); aDeltaMs = calcTimeInterval(maFPSRenderStartTime, maFPSRenderEndTime);
int iFPS = miFrameCount * 1000 / aDeltaMs; int iFPS = miFrameCount * 1000 / aDeltaMs;
maFPS = OUString("Render FPS: ") + OUString::number(iFPS); maFPS = OUString("Render FPS: ") + OUString::number(iFPS);
miFrameCount = 0; miFrameCount = 0;
osl_getSystemTime(&mafpsRenderStartTime); osl_getSystemTime(&maFPSRenderStartTime);
} }
osl_getSystemTime(&mafpsRenderEndTime); osl_getSystemTime(&maFPSRenderEndTime);
addScreenTextShape(maFPS, glm::vec2(-0.99f, 0.99f), 0.1f, glm::vec3(0.0, 0.0, 0.0)); addScreenTextShape(maFPS, glm::vec2(-0.99f, 0.99f), 0.1f, glm::vec3(0.0, 0.0, 0.0));
} }
...@@ -953,9 +958,32 @@ void GL3DBarChart::updateScreenText() ...@@ -953,9 +958,32 @@ void GL3DBarChart::updateScreenText()
maScreenTextShapes.clear(); maScreenTextShapes.clear();
mpRenderer->ReleaseScreenTextShapes(); mpRenderer->ReleaseScreenTextShapes();
updateRenderFPS(); updateRenderFPS();
updateDataUpdateFPS();
mbScreenTextNewRender = true; mbScreenTextNewRender = true;
} }
void GL3DBarChart::updateDataUpdateFPS()
{
int aDeltaMs = calcTimeInterval(maDataUpdateStartTime, maDataUpdateEndTime);
if(aDeltaMs >= 500)
{
int iFPS = miDataUpdateCounter * 1000 / aDeltaMs;
if (iFPS)
{
maDataUpdateFPS = OUString("Data Update FPS: ") + OUString::number(iFPS);
}
else
{
float fFPS = (float)miDataUpdateCounter * 1000 / (float)aDeltaMs;
maDataUpdateFPS = OUString("Data Update FPS: ") + OUString::number(fFPS);
}
miDataUpdateCounter = 0;
osl_getSystemTime(&maDataUpdateStartTime);
}
osl_getSystemTime(&maDataUpdateEndTime);
addScreenTextShape(maDataUpdateFPS, glm::vec2(-0.69f, 0.99f), 0.1f, glm::vec3(0.0, 0.0, 0.0));
}
IMPL_LINK_NOARG(GL3DBarChart, updateTimer) IMPL_LINK_NOARG(GL3DBarChart, updateTimer)
{ {
maTimer.Stop(); maTimer.Stop();
......
...@@ -88,9 +88,10 @@ private: ...@@ -88,9 +88,10 @@ private:
void updateTimer(); void updateTimer();
void updateScreenText(); void updateScreenText();
void updateRenderFPS(); void updateRenderFPS();
void updateDataUpdateFPS();
DECL_LINK(updateTimer, void*); DECL_LINK(updateTimer, void*);
int calcTimeInterval(TimeValue &startTime, TimeValue &endTime); int calcTimeInterval(TimeValue &startTime, TimeValue &endTime);
void addScreenTextShape(OUString &nStr, glm::vec2 rLeftTop, float nTextHeight, glm::vec3 rPos); void addScreenTextShape(OUString &nStr, glm::vec2 rLeftTop, float nTextHeight, glm::vec3 rPos, sal_uInt32 nEvent = 0);
css::uno::Reference<css::chart2::XChartType> mxChartType; css::uno::Reference<css::chart2::XChartType> mxChartType;
boost::ptr_vector<opengl3D::Renderable3DObject> maShapes; boost::ptr_vector<opengl3D::Renderable3DObject> maShapes;
...@@ -148,9 +149,13 @@ private: ...@@ -148,9 +149,13 @@ private:
bool mbScreenTextNewRender; bool mbScreenTextNewRender;
boost::ptr_vector<opengl3D::Renderable3DObject> maScreenTextShapes; boost::ptr_vector<opengl3D::Renderable3DObject> maScreenTextShapes;
OUString maFPS; OUString maFPS;
OUString maDataUpdateFPS;
sal_uInt32 miFrameCount; sal_uInt32 miFrameCount;
TimeValue mafpsRenderStartTime; sal_uInt32 miDataUpdateCounter;
TimeValue mafpsRenderEndTime; TimeValue maFPSRenderStartTime;
TimeValue maFPSRenderEndTime;
TimeValue maDataUpdateStartTime;
TimeValue maDataUpdateEndTime;
}; };
} }
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment