[Libreoffice-commits] core.git: 2 commits - chart2/source
xukai
xukai at multicorewareinc.com
Tue Sep 23 08:04:59 PDT 2014
chart2/source/view/charttypes/GL3DBarChart.cxx | 74 +++++++++++++++++--------
1 file changed, 52 insertions(+), 22 deletions(-)
New commits:
commit 5c9ca2fb863e84ae2328f6b0186e137cd5f02ed6
Author: xukai <xukai at multicorewareinc.com>
Date: Fri Sep 19 15:18:41 2014 +0800
update effect of bar click
Change-Id: Ibb09537d418e78c7fc9b6760988abd56505268b3
Reviewed-on: https://gerrit.libreoffice.org/11539
Reviewed-by: Kohei Yoshida <libreoffice at kohei.us>
Tested-by: Kohei Yoshida <libreoffice at kohei.us>
diff --git a/chart2/source/view/charttypes/GL3DBarChart.cxx b/chart2/source/view/charttypes/GL3DBarChart.cxx
index d07653f..9b44421 100644
--- a/chart2/source/view/charttypes/GL3DBarChart.cxx
+++ b/chart2/source/view/charttypes/GL3DBarChart.cxx
@@ -567,6 +567,19 @@ void GL3DBarChart::create3DShapes(const boost::ptr_vector<VDataSeries>& rDataSer
{
SharedResourceAccess(maCond1, maCond2);
osl::MutexGuard aGuard(maMutex);
+ mnPreSelectBarId = mnSelectBarId;
+ mnSelectBarId -= 10;
+ sal_uInt32 nSelectRow = (mnSelectBarId - SHAPE_START_ID) / ID_STEP / (mnBarsInRow + 1);
+ sal_uInt32 nPreSelectRow = (mnPreSelectBarId - SHAPE_START_ID) / ID_STEP / (mnBarsInRow + 1);
+ if(nSelectRow != nPreSelectRow)
+ {
+ mnSelectBarId = mnPreSelectBarId;
+ }
+ else
+ {
+ mpRenderer->EndClick();
+ mpRenderer->StartClick(mnSelectBarId);
+ }
mpRenderer->ReleaseShapes();
// Each series of data flows from left to right, and multiple series are
// stacked vertically along y axis.
commit 32d267f556634d3bbceba4978efc4d8cb62b148c
Author: xukai <xukai at multicorewareinc.com>
Date: Mon Sep 22 20:08:26 2014 +0800
make Camera flythrough looks more smooth
Change-Id: I46f79bb6ede2da133fe8971319fc4b7257848382
Reviewed-on: https://gerrit.libreoffice.org/11590
Reviewed-by: Kohei Yoshida <libreoffice at kohei.us>
Tested-by: Kohei Yoshida <libreoffice at kohei.us>
diff --git a/chart2/source/view/charttypes/GL3DBarChart.cxx b/chart2/source/view/charttypes/GL3DBarChart.cxx
index 3474de3..d07653f 100644
--- a/chart2/source/view/charttypes/GL3DBarChart.cxx
+++ b/chart2/source/view/charttypes/GL3DBarChart.cxx
@@ -209,6 +209,7 @@ protected:
private:
void ProcessMouseEvent();
void MoveCamera();
+ void MoveCameraToBar();
void MoveToBar();
void MoveToDefault();
void MoveToCorner();
@@ -224,11 +225,14 @@ private:
bool mbNeedFlyBack;
glm::vec3 maStep;
glm::vec3 maStepDirection;
+ glm::mat4 maMatrixStep;
size_t mnStep;
size_t mnStepsTotal;
TimeValue maClickFlyBackStartTime;
TimeValue maClickFlyBackEndTime;
OUString maFPS;
+ glm::vec3 maTargetPosition;
+ glm::vec3 maTargetDirection;
};
void RenderBenchMarkThread::MoveCamera()
@@ -246,21 +250,36 @@ void RenderBenchMarkThread::MoveCamera()
mnStep = 0;
mbExecuting = false;
mbAutoFlyExecuting = false;
- if ((mpChart->maRenderEvent == EVENT_CLICK) || (mpChart->maRenderEvent == EVENT_AUTO_FLY))
- {
- mbNeedFlyBack = true;
- osl_getSystemTime(&maClickFlyBackStartTime);
- osl_getSystemTime(&maClickFlyBackEndTime);
- mpChart->maRenderEvent = EVENT_SHOW_SELECT;
- }
- else
- {
- mbNeedFlyBack = false;
- mpChart->maRenderEvent = EVENT_NONE;
- }
+ mbNeedFlyBack = false;
+ mpChart->maRenderEvent = EVENT_NONE;
+ }
+}
+
+void RenderBenchMarkThread::MoveCameraToBar()
+{
+ if(mnStep < mnStepsTotal)
+ {
+ ++mnStep;
+ mpChart->mpRenderer->AddMatrixDiff(maMatrixStep);
+ }
+ else
+ {
+ mpChart->maCameraPosition = maTargetPosition;
+ mpChart->maCameraDirection = maTargetDirection;
+ mpChart->mpCamera->setPosition(maTargetPosition);
+ mpChart->mpCamera->setDirection(maTargetDirection);
+ mpChart->mpRenderer->ResetMatrixDiff();
+ mnStep = 0;
+ mbExecuting = false;
+ mbAutoFlyExecuting = false;
+ mbNeedFlyBack = true;
+ osl_getSystemTime(&maClickFlyBackStartTime);
+ osl_getSystemTime(&maClickFlyBackEndTime);
+ mpChart->maRenderEvent = EVENT_SHOW_SELECT;
}
}
+
void RenderBenchMarkThread::MoveToDefault()
{
if ((mpChart->maCameraPosition == mpChart->maDefaultCameraDirection) &&
@@ -301,21 +320,20 @@ void RenderBenchMarkThread::MoveToBar()
const GL3DBarChart::BarInformation& rBarInfo = itr->second;
mnStep = 0;
mnStepsTotal = STEPS;
- glm::vec3 maTargetPosition = rBarInfo.maPos;
+ maTargetPosition = rBarInfo.maPos;
maTargetPosition.z += 240;
maTargetPosition.x += BAR_SIZE_X / 2.0f;
- glm::vec3 maTargetDirection = rBarInfo.maPos;
+ maTargetDirection = rBarInfo.maPos;
maTargetDirection.x += BAR_SIZE_X / 2.0f;
maTargetDirection.y += BAR_SIZE_Y / 2.0f;
maTargetPosition.y = maTargetDirection.y - 240;
- maStep = (maTargetPosition - mpChart->maCameraPosition)/((float)mnStepsTotal);
- maStepDirection = (maTargetDirection - mpChart->maCameraDirection)/((float)mnStepsTotal);
+ maMatrixStep = mpChart->mpRenderer->GetDiffOfTwoCameras(mpChart->maCameraPosition, maTargetPosition, mpChart->maCameraDirection, maTargetDirection)/((float)mnStepsTotal);
mpChart->maClickCond.set();
mbExecuting = true;
mbNeedFlyBack = false;
mpChart->mpRenderer->StartClick(mpChart->mnSelectBarId);
}
- MoveCamera();
+ MoveCameraToBar();
}
void RenderBenchMarkThread::AutoMoveToBar()
@@ -332,20 +350,19 @@ void RenderBenchMarkThread::AutoMoveToBar()
const GL3DBarChart::BarInformation& rBarInfo = itr->second;
mnStep = 0;
mnStepsTotal = STEPS;
- glm::vec3 maTargetPosition = rBarInfo.maPos;
+ maTargetPosition = rBarInfo.maPos;
maTargetPosition.z += 240;
maTargetPosition.x += BAR_SIZE_X / 2.0f;
- glm::vec3 maTargetDirection = rBarInfo.maPos;
+ maTargetDirection = rBarInfo.maPos;
maTargetDirection.x += BAR_SIZE_X / 2.0f;
maTargetDirection.y += BAR_SIZE_Y / 2.0f;
maTargetPosition.y = maTargetDirection.y - 240;
- maStep = (maTargetPosition - mpChart->maCameraPosition)/((float)mnStepsTotal);
- maStepDirection = (maTargetDirection - mpChart->maCameraDirection)/((float)mnStepsTotal);
+ maMatrixStep = mpChart->mpRenderer->GetDiffOfTwoCameras(mpChart->maCameraPosition, maTargetPosition, mpChart->maCameraDirection, maTargetDirection)/((float)mnStepsTotal);
mpChart->mpRenderer->StartClick(mpChart->mnSelectBarId);
mbAutoFlyExecuting = true;
mbNeedFlyBack = false;
}
- MoveCamera();
+ MoveCameraToBar();
}
void RenderBenchMarkThread::MoveToCorner()
More information about the Libreoffice-commits
mailing list