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

add click fly back code

Change-Id: Ib4d5ce06f50ab7413fe8ecb5b61397b41e4fedd2
üst e3d4a488
...@@ -180,12 +180,15 @@ public: ...@@ -180,12 +180,15 @@ public:
RenderBenchMarkThread(GL3DBarChart * pChart): RenderBenchMarkThread(GL3DBarChart * pChart):
RenderThread(pChart), RenderThread(pChart),
mbExecuting(false), mbExecuting(false),
miFrameCount(0) miFrameCount(0),
mbNeedFlyBack(false)
{ {
osl_getSystemTime(&mafpsRenderStartTime); osl_getSystemTime(&mafpsRenderStartTime);
osl_getSystemTime(&mafpsRenderEndTime); osl_getSystemTime(&mafpsRenderEndTime);
osl_getSystemTime(&maScreenTextUpdateStartTime); osl_getSystemTime(&maScreenTextUpdateStartTime);
osl_getSystemTime(&maScreenTextUpdateEndTime); osl_getSystemTime(&maScreenTextUpdateEndTime);
osl_getSystemTime(&maClickFlyBackStartTime);
osl_getSystemTime(&maClickFlyBackEndTime);
} }
protected: protected:
virtual void execute() SAL_OVERRIDE; virtual void execute() SAL_OVERRIDE;
...@@ -198,12 +201,14 @@ private: ...@@ -198,12 +201,14 @@ private:
void ProcessScroll(); void ProcessScroll();
void UpdateScreenText(); void UpdateScreenText();
void UpdateFPS(); void UpdateFPS();
int calcTimeInterval(TimeValue &startTime, TimeValue &endTime); int CalcTimeInterval(TimeValue &startTime, TimeValue &endTime);
void ProcessClickFlyBack();
private: private:
glm::vec3 maStartPos; glm::vec3 maStartPos;
glm::vec3 maEndPos; glm::vec3 maEndPos;
sal_Int32 mnSteps; sal_Int32 mnSteps;
bool mbExecuting; bool mbExecuting;
bool mbNeedFlyBack;
glm::vec3 maStep; glm::vec3 maStep;
glm::vec3 maStepDirection; glm::vec3 maStepDirection;
size_t mnStep; size_t mnStep;
...@@ -212,6 +217,8 @@ private: ...@@ -212,6 +217,8 @@ private:
TimeValue mafpsRenderEndTime; TimeValue mafpsRenderEndTime;
TimeValue maScreenTextUpdateStartTime; TimeValue maScreenTextUpdateStartTime;
TimeValue maScreenTextUpdateEndTime; TimeValue maScreenTextUpdateEndTime;
TimeValue maClickFlyBackStartTime;
TimeValue maClickFlyBackEndTime;
int miFrameCount; int miFrameCount;
OUString maFPS; OUString maFPS;
}; };
...@@ -231,7 +238,14 @@ void RenderBenchMarkThread::MoveCamera() ...@@ -231,7 +238,14 @@ void RenderBenchMarkThread::MoveCamera()
mnStep = 0; mnStep = 0;
mbExecuting = false; mbExecuting = false;
if (mpChart->maRenderEvent == EVENT_CLICK) if (mpChart->maRenderEvent == EVENT_CLICK)
{
mpChart->mpRenderer->EndClick(); mpChart->mpRenderer->EndClick();
mbNeedFlyBack = true;
osl_getSystemTime(&maClickFlyBackStartTime);
osl_getSystemTime(&maClickFlyBackEndTime);
}
else
mbNeedFlyBack = false;
mpChart->maRenderEvent = EVENT_NONE; mpChart->maRenderEvent = EVENT_NONE;
} }
} }
...@@ -307,8 +321,21 @@ void RenderBenchMarkThread::ProcessScroll() ...@@ -307,8 +321,21 @@ void RenderBenchMarkThread::ProcessScroll()
mpChart->maRenderEvent = EVENT_NONE; mpChart->maRenderEvent = EVENT_NONE;
} }
void RenderBenchMarkThread::ProcessClickFlyBack()
{
if (!mbNeedFlyBack)
return;
osl_getSystemTime(&maClickFlyBackEndTime);
int aDeltaMs = CalcTimeInterval(maClickFlyBackStartTime, maClickFlyBackEndTime);
if(aDeltaMs >= 10000)
{
mpChart->maRenderEvent = EVENT_MOVE_TO_DEFAULT;
}
}
void RenderBenchMarkThread::ProcessMouseEvent() void RenderBenchMarkThread::ProcessMouseEvent()
{ {
ProcessClickFlyBack();
if (mpChart->maRenderEvent == EVENT_CLICK) if (mpChart->maRenderEvent == EVENT_CLICK)
{ {
MoveToBar(); MoveToBar();
...@@ -327,7 +354,7 @@ void RenderBenchMarkThread::ProcessMouseEvent() ...@@ -327,7 +354,7 @@ void RenderBenchMarkThread::ProcessMouseEvent()
} }
} }
int RenderBenchMarkThread::calcTimeInterval(TimeValue &startTime, TimeValue &endTime) int RenderBenchMarkThread::CalcTimeInterval(TimeValue &startTime, TimeValue &endTime)
{ {
TimeValue aTime; TimeValue aTime;
aTime.Seconds = endTime.Seconds - startTime.Seconds - 1; aTime.Seconds = endTime.Seconds - startTime.Seconds - 1;
...@@ -339,11 +366,11 @@ int RenderBenchMarkThread::calcTimeInterval(TimeValue &startTime, TimeValue &end ...@@ -339,11 +366,11 @@ int RenderBenchMarkThread::calcTimeInterval(TimeValue &startTime, TimeValue &end
void RenderBenchMarkThread::UpdateFPS() void RenderBenchMarkThread::UpdateFPS()
{ {
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;
...@@ -364,7 +391,7 @@ void RenderBenchMarkThread::UpdateFPS() ...@@ -364,7 +391,7 @@ void RenderBenchMarkThread::UpdateFPS()
void RenderBenchMarkThread::UpdateScreenText() void RenderBenchMarkThread::UpdateScreenText()
{ {
int aDeltaMs = calcTimeInterval(maScreenTextUpdateStartTime, maScreenTextUpdateEndTime); int aDeltaMs = CalcTimeInterval(maScreenTextUpdateStartTime, maScreenTextUpdateEndTime);
if (aDeltaMs >= 20) if (aDeltaMs >= 20)
{ {
mpChart->mpRenderer->ReleaseScreenTextShapes(); mpChart->mpRenderer->ReleaseScreenTextShapes();
......
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