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

showing bar info until fly back

Change-Id: Idc13f652d359baf2c91758ee1efd5b908b4b9483
üst 42d5cfcf
...@@ -28,7 +28,7 @@ ...@@ -28,7 +28,7 @@
#define SHAPE_START_ID 10 #define SHAPE_START_ID 10
#define DATA_UPDATE_TIME 15 #define DATA_UPDATE_TIME 15
#define FPS_TIME 500 #define FPS_TIME 500
#define DATAUPDATE_FPS_TIME 500 #define DATAUPDATE_FPS_TIME 1000
#define HISTORY_NUM 5 #define HISTORY_NUM 5
#define SHOW_VALUE_COUNT 15 #define SHOW_VALUE_COUNT 15
#define SHOW_SCROLL_TEXT_DISTANCE 1000 #define SHOW_SCROLL_TEXT_DISTANCE 1000
...@@ -241,14 +241,16 @@ void RenderBenchMarkThread::MoveCamera() ...@@ -241,14 +241,16 @@ void RenderBenchMarkThread::MoveCamera()
mbAutoFlyExecuting = false; mbAutoFlyExecuting = false;
if ((mpChart->maRenderEvent == EVENT_CLICK) || (mpChart->maRenderEvent == EVENT_AUTO_FLY)) if ((mpChart->maRenderEvent == EVENT_CLICK) || (mpChart->maRenderEvent == EVENT_AUTO_FLY))
{ {
mpChart->mpRenderer->EndClick();
mbNeedFlyBack = true; mbNeedFlyBack = true;
osl_getSystemTime(&maClickFlyBackStartTime); osl_getSystemTime(&maClickFlyBackStartTime);
osl_getSystemTime(&maClickFlyBackEndTime); osl_getSystemTime(&maClickFlyBackEndTime);
mpChart->maRenderEvent = EVENT_SHOW_SELECT;
} }
else else
{
mbNeedFlyBack = false; mbNeedFlyBack = false;
mpChart->maRenderEvent = EVENT_NONE; mpChart->maRenderEvent = EVENT_NONE;
}
} }
} }
...@@ -278,19 +280,20 @@ void RenderBenchMarkThread::MoveToBar() ...@@ -278,19 +280,20 @@ void RenderBenchMarkThread::MoveToBar()
{ {
if (!mbExecuting) if (!mbExecuting)
{ {
mpChart->mpRenderer->EndClick();
mpChart->mpRenderer->SetPickingMode(true); mpChart->mpRenderer->SetPickingMode(true);
mpChart->mpCamera->render(); mpChart->mpCamera->render();
mpChart->mpRenderer->ProcessUnrenderedShape(mpChart->mbNeedsNewRender); mpChart->mpRenderer->ProcessUnrenderedShape(mpChart->mbNeedsNewRender);
mpChart->mSelectBarId = mpChart->mpRenderer->GetPixelColorFromPoint(mpChart->maClickPos.X(), mpChart->maClickPos.Y()); mpChart->mnSelectBarId = mpChart->mpRenderer->GetPixelColorFromPoint(mpChart->maClickPos.X(), mpChart->maClickPos.Y());
mpChart->mpRenderer->SetPickingMode(false); mpChart->mpRenderer->SetPickingMode(false);
std::map<sal_uInt32, const GL3DBarChart::BarInformation>::const_iterator itr = mpChart->maBarMap.find(mpChart->mSelectBarId); std::map<sal_uInt32, const GL3DBarChart::BarInformation>::const_iterator itr = mpChart->maBarMap.find(mpChart->mnSelectBarId);
if(itr == mpChart->maBarMap.end()) if(itr == mpChart->maBarMap.end())
{ {
mpChart->maRenderEvent = EVENT_NONE; mpChart->mnSelectBarId = mpChart->mnPreSelectBarId;
mpChart->maRenderEvent = mpChart->maPreRenderEvent;
mpChart->maClickCond.set(); mpChart->maClickCond.set();
return; return;
} }
mpChart->mpRenderer->EndClick();
const GL3DBarChart::BarInformation& rBarInfo = itr->second; const GL3DBarChart::BarInformation& rBarInfo = itr->second;
mnStep = 0; mnStep = 0;
mnStepsTotal = STEPS; mnStepsTotal = STEPS;
...@@ -304,7 +307,7 @@ void RenderBenchMarkThread::MoveToBar() ...@@ -304,7 +307,7 @@ void RenderBenchMarkThread::MoveToBar()
maStepDirection = (maTargetDirection - mpChart->maCameraDirection)/((float)mnStepsTotal); maStepDirection = (maTargetDirection - mpChart->maCameraDirection)/((float)mnStepsTotal);
mpChart->maClickCond.set(); mpChart->maClickCond.set();
mbExecuting = true; mbExecuting = true;
mpChart->mpRenderer->StartClick(mpChart->mSelectBarId); mpChart->mpRenderer->StartClick(mpChart->mnSelectBarId);
} }
MoveCamera(); MoveCamera();
} }
...@@ -314,7 +317,7 @@ void RenderBenchMarkThread::AutoMoveToBar() ...@@ -314,7 +317,7 @@ void RenderBenchMarkThread::AutoMoveToBar()
if (!mbAutoFlyExecuting) if (!mbAutoFlyExecuting)
{ {
mpChart->mpRenderer->EndClick(); mpChart->mpRenderer->EndClick();
std::map<sal_uInt32, const GL3DBarChart::BarInformation>::const_iterator itr = mpChart->maBarMap.find(mpChart->mnAutoFlyBarID); std::map<sal_uInt32, const GL3DBarChart::BarInformation>::const_iterator itr = mpChart->maBarMap.find(mpChart->mnSelectBarId);
if(itr == mpChart->maBarMap.end()) if(itr == mpChart->maBarMap.end())
{ {
mpChart->maRenderEvent = EVENT_NONE; mpChart->maRenderEvent = EVENT_NONE;
...@@ -331,7 +334,7 @@ void RenderBenchMarkThread::AutoMoveToBar() ...@@ -331,7 +334,7 @@ void RenderBenchMarkThread::AutoMoveToBar()
maTargetDirection.x += BAR_SIZE_X / 2.0f; maTargetDirection.x += BAR_SIZE_X / 2.0f;
maTargetDirection.y += BAR_SIZE_Y / 2.0f; maTargetDirection.y += BAR_SIZE_Y / 2.0f;
maStepDirection = (maTargetDirection - mpChart->maCameraDirection)/((float)mnStepsTotal); maStepDirection = (maTargetDirection - mpChart->maCameraDirection)/((float)mnStepsTotal);
mpChart->mpRenderer->StartClick(mpChart->mnAutoFlyBarID); mpChart->mpRenderer->StartClick(mpChart->mnSelectBarId);
mbAutoFlyExecuting = true; mbAutoFlyExecuting = true;
} }
MoveCamera(); MoveCamera();
...@@ -450,7 +453,9 @@ GL3DBarChart::GL3DBarChart( ...@@ -450,7 +453,9 @@ GL3DBarChart::GL3DBarChart(
mbCameraInit(false), mbCameraInit(false),
mbRenderDie(false), mbRenderDie(false),
maRenderEvent(EVENT_NONE), maRenderEvent(EVENT_NONE),
mSelectBarId(0), maPreRenderEvent(EVENT_NONE),
mnSelectBarId(0),
mnPreSelectBarId(0),
miScrollRate(0), miScrollRate(0),
mbScrollFlg(false), mbScrollFlg(false),
mbScreenTextNewRender(false), mbScreenTextNewRender(false),
...@@ -459,7 +464,6 @@ GL3DBarChart::GL3DBarChart( ...@@ -459,7 +464,6 @@ GL3DBarChart::GL3DBarChart(
miFrameCount(0), miFrameCount(0),
miDataUpdateCounter(0), miDataUpdateCounter(0),
mnColorRate(0), mnColorRate(0),
mnAutoFlyBarID(0),
mbBenchMarkMode(false), mbBenchMarkMode(false),
maHistoryCounter(0) maHistoryCounter(0)
{ {
...@@ -788,7 +792,8 @@ void GL3DBarChart::moveToDefault() ...@@ -788,7 +792,8 @@ void GL3DBarChart::moveToDefault()
if(mbBenchMarkMode) if(mbBenchMarkMode)
{ {
// add correct handling here!! // add correct handling here!!
if ((maRenderEvent != EVENT_NONE) && (maRenderEvent != EVENT_SHOW_SCROLL) && (maRenderEvent != EVENT_AUTO_FLY)) if ((maRenderEvent != EVENT_NONE) && (maRenderEvent != EVENT_SHOW_SCROLL) &&
(maRenderEvent != EVENT_AUTO_FLY) && (maRenderEvent != EVENT_SHOW_SELECT))
return; return;
{ {
...@@ -829,12 +834,15 @@ void GL3DBarChart::clickedAt(const Point& rPos, sal_uInt16 nButtons) ...@@ -829,12 +834,15 @@ void GL3DBarChart::clickedAt(const Point& rPos, sal_uInt16 nButtons)
if (mbBenchMarkMode) if (mbBenchMarkMode)
{ {
// add correct handling here !! // add correct handling here !!
if ((maRenderEvent != EVENT_NONE) && (maRenderEvent != EVENT_SHOW_SCROLL) && (maRenderEvent != EVENT_AUTO_FLY)) if ((maRenderEvent != EVENT_NONE) && (maRenderEvent != EVENT_SHOW_SCROLL) &&
(maRenderEvent != EVENT_AUTO_FLY) && (maRenderEvent != EVENT_SHOW_SELECT))
return; return;
{ {
osl::MutexGuard aGuard(maMutex); osl::MutexGuard aGuard(maMutex);
maClickPos = rPos; maClickPos = rPos;
mnPreSelectBarId = mnSelectBarId;
maPreRenderEvent = maRenderEvent;
maRenderEvent = EVENT_CLICK; maRenderEvent = EVENT_CLICK;
maClickCond.reset(); maClickCond.reset();
} }
...@@ -900,7 +908,8 @@ void GL3DBarChart::mouseDragMove(const Point& rStartPos, const Point& rEndPos, s ...@@ -900,7 +908,8 @@ void GL3DBarChart::mouseDragMove(const Point& rStartPos, const Point& rEndPos, s
{ {
long nDirection = rEndPos.X() - rStartPos.X(); long nDirection = rEndPos.X() - rStartPos.X();
osl::MutexGuard aGuard(maMutex); osl::MutexGuard aGuard(maMutex);
if ((maRenderEvent == EVENT_NONE) || (maRenderEvent == EVENT_SHOW_SCROLL) || (maRenderEvent == EVENT_AUTO_FLY)) if ((maRenderEvent == EVENT_NONE) || (maRenderEvent == EVENT_SHOW_SCROLL) ||
(maRenderEvent == EVENT_AUTO_FLY) || (maRenderEvent == EVENT_SHOW_SELECT))
maRenderEvent = nDirection > 0 ? EVENT_DRAG_RIGHT : EVENT_DRAG_LEFT; maRenderEvent = nDirection > 0 ? EVENT_DRAG_RIGHT : EVENT_DRAG_LEFT;
if(nDirection < 0) if(nDirection < 0)
{ {
...@@ -975,7 +984,8 @@ void GL3DBarChart::scroll(long nDelta) ...@@ -975,7 +984,8 @@ void GL3DBarChart::scroll(long nDelta)
{ {
{ {
osl::MutexGuard aGuard(maMutex); osl::MutexGuard aGuard(maMutex);
if ((maRenderEvent != EVENT_NONE) && (maRenderEvent != EVENT_SHOW_SCROLL) && (maRenderEvent != EVENT_AUTO_FLY)) if ((maRenderEvent != EVENT_NONE) && (maRenderEvent != EVENT_SHOW_SCROLL) &&
(maRenderEvent != EVENT_AUTO_FLY) && (maRenderEvent == EVENT_SHOW_SELECT))
return; return;
glm::vec3 maDir = glm::normalize(maCameraPosition - maCameraDirection); glm::vec3 maDir = glm::normalize(maCameraPosition - maCameraDirection);
maCameraPosition -= (float((nDelta/10)) * maDir); maCameraPosition -= (float((nDelta/10)) * maDir);
...@@ -1082,10 +1092,9 @@ void GL3DBarChart::recordBarHistory(sal_uInt32 &nBarID, float &nVal) ...@@ -1082,10 +1092,9 @@ void GL3DBarChart::recordBarHistory(sal_uInt32 &nBarID, float &nVal)
void GL3DBarChart::updateClickEvent() void GL3DBarChart::updateClickEvent()
{ {
if (maRenderEvent == EVENT_CLICK || maRenderEvent == EVENT_AUTO_FLY) if (maRenderEvent == EVENT_CLICK || maRenderEvent == EVENT_AUTO_FLY || maRenderEvent == EVENT_SHOW_SELECT)
{ {
sal_uInt32 nBarId = maRenderEvent == EVENT_CLICK ? mSelectBarId : mnAutoFlyBarID; std::list<float>& aList = maBarHistory[mnSelectBarId];
std::list<float>& aList = maBarHistory[nBarId];
sal_uInt32 aIdex = 0; sal_uInt32 aIdex = 0;
OUString aTitle; OUString aTitle;
OUString aBarValue; OUString aBarValue;
...@@ -1105,7 +1114,7 @@ void GL3DBarChart::updateClickEvent() ...@@ -1105,7 +1114,7 @@ void GL3DBarChart::updateClickEvent()
maScreenTextShapes.push_back(new opengl3D::ScreenText(mpRenderer.get(), *mpTextCache, aBarValue, glm::vec4(0.0f, 0.0f, 1.0f, 1.0f), CALC_POS_EVENT_ID)); maScreenTextShapes.push_back(new opengl3D::ScreenText(mpRenderer.get(), *mpTextCache, aBarValue, glm::vec4(0.0f, 0.0f, 1.0f, 1.0f), CALC_POS_EVENT_ID));
const opengl3D::TextCacheItem& rTextCache = mpTextCache->getText(aBarValue); const opengl3D::TextCacheItem& rTextCache = mpTextCache->getText(aBarValue);
float nRectWidth = (float)rTextCache.maSize.Width() / (float)rTextCache.maSize.Height() * 0.03; float nRectWidth = (float)rTextCache.maSize.Width() / (float)rTextCache.maSize.Height() * 0.03;
std::map<sal_uInt32, const BarInformation>::const_iterator itr = maBarMap.find(nBarId); std::map<sal_uInt32, const BarInformation>::const_iterator itr = maBarMap.find(mnSelectBarId);
const BarInformation& rBarInfo = itr->second; const BarInformation& rBarInfo = itr->second;
glm::vec3 aTextPos = glm::vec3(rBarInfo.maPos.x + BAR_SIZE_X / 2.0f, glm::vec3 aTextPos = glm::vec3(rBarInfo.maPos.x + BAR_SIZE_X / 2.0f,
rBarInfo.maPos.y + BAR_SIZE_Y / 2.0f, rBarInfo.maPos.y + BAR_SIZE_Y / 2.0f,
...@@ -1282,7 +1291,8 @@ void GL3DBarChart::processAutoFly(sal_uInt32 nId, sal_uInt32 nColor) ...@@ -1282,7 +1291,8 @@ void GL3DBarChart::processAutoFly(sal_uInt32 nId, sal_uInt32 nColor)
if (nColorRate >= FLY_THRESHOLD) if (nColorRate >= FLY_THRESHOLD)
{ {
maRenderEvent = EVENT_AUTO_FLY; maRenderEvent = EVENT_AUTO_FLY;
mnAutoFlyBarID = nColorRate > mnColorRate ? nId : mnAutoFlyBarID; mnSelectBarId = nColorRate > mnColorRate ? nId : mnSelectBarId;
mnPreSelectBarId = mnSelectBarId;
mnColorRate = nColorRate > mnColorRate ? nColorRate : mnColorRate; mnColorRate = nColorRate > mnColorRate ? nColorRate : mnColorRate;
} }
} }
......
...@@ -47,6 +47,7 @@ enum RenderEventType ...@@ -47,6 +47,7 @@ enum RenderEventType
EVENT_DRAG_RIGHT, EVENT_DRAG_RIGHT,
EVENT_SCROLL, EVENT_SCROLL,
EVENT_SHOW_SCROLL, EVENT_SHOW_SCROLL,
EVENT_SHOW_SELECT,
EVENT_AUTO_FLY, EVENT_AUTO_FLY,
EVENT_DIE EVENT_DIE
}; };
...@@ -154,7 +155,9 @@ private: ...@@ -154,7 +155,9 @@ private:
bool mbRenderDie; bool mbRenderDie;
::osl::Condition maClickCond; ::osl::Condition maClickCond;
RenderEventType maRenderEvent; RenderEventType maRenderEvent;
sal_uInt32 mSelectBarId; RenderEventType maPreRenderEvent;
sal_uInt32 mnSelectBarId;
sal_uInt32 mnPreSelectBarId;
Point maClickPos; Point maClickPos;
sal_uInt32 miScrollRate; sal_uInt32 miScrollRate;
bool mbScrollFlg; bool mbScrollFlg;
...@@ -174,7 +177,6 @@ private: ...@@ -174,7 +177,6 @@ private:
std::map<sal_uInt32, float> maDistanceMap; std::map<sal_uInt32, float> maDistanceMap;
std::map<sal_uInt32, sal_uInt32> maBarColorMap; std::map<sal_uInt32, sal_uInt32> maBarColorMap;
int mnColorRate; int mnColorRate;
sal_uInt32 mnAutoFlyBarID;
bool mbBenchMarkMode; bool mbBenchMarkMode;
sal_uInt32 maHistoryCounter; sal_uInt32 maHistoryCounter;
}; };
......
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