summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorweigao <weigao@multicorewareinc.com>2014-07-26 19:29:44 +0800
committerMarkus Mohrhard <markus.mohrhard@collabora.co.uk>2014-07-30 21:45:26 +0200
commit8828dbfa0870cb834efda035bc5e041a1434166b (patch)
tree339da07d8e429fcf749c9af3d0d17f872c96b473
parentadd click event animation for benchmark (diff)
downloadcore-8828dbfa0870cb834efda035bc5e041a1434166b.tar.gz
core-8828dbfa0870cb834efda035bc5e041a1434166b.zip
add drag animation for benchmark
Change-Id: Ie9146272dd88b7b51edace7023048629874c360f
-rw-r--r--chart2/source/view/charttypes/GL3DBarChart.cxx28
1 files changed, 20 insertions, 8 deletions
diff --git a/chart2/source/view/charttypes/GL3DBarChart.cxx b/chart2/source/view/charttypes/GL3DBarChart.cxx
index a613e9990cf1..cb484525a56c 100644
--- a/chart2/source/view/charttypes/GL3DBarChart.cxx
+++ b/chart2/source/view/charttypes/GL3DBarChart.cxx
@@ -181,7 +181,6 @@ public:
{
}
- void SetAnimationCamera(glm::vec3 aStartPos, glm::vec3 aEndPos, sal_Int32 nSteps);
protected:
virtual void execute() SAL_OVERRIDE;
private:
@@ -189,6 +188,7 @@ private:
void MoveCamera();
void MoveToBar();
void MoveToDefault();
+ void MoveToCorner();
private:
glm::vec3 maStartPos;
glm::vec3 maEndPos;
@@ -200,13 +200,6 @@ private:
size_t mnStepsTotal;
};
-void RenderBenchMarkThread::SetAnimationCamera(glm::vec3 startPos, glm::vec3 endPos, sal_Int32 steps)
-{
- maStartPos = startPos;
- maEndPos = endPos;
- mnSteps = steps;
-}
-
void RenderBenchMarkThread::MoveCamera()
{
if(mnStep < mnStepsTotal)
@@ -277,6 +270,18 @@ void RenderBenchMarkThread::MoveToBar()
MoveCamera();
}
+void RenderBenchMarkThread::MoveToCorner()
+{
+ if (!mbExecuting)
+ {
+ mnStepsTotal = STEPS;
+ maStep = (mpChart->getCornerPosition(mpChart->mnCornerId) - mpChart->maCameraPosition) / float(mnStepsTotal);
+ maStepDirection = (glm::vec3(mpChart->mnMaxX/2.0f, mpChart->mnMaxY/2.0f, 0) - mpChart->maCameraDirection)/ float(mnStepsTotal);
+ mbExecuting = true;
+ }
+ MoveCamera();
+}
+
void RenderBenchMarkThread::ProcessMouseEvent()
{
if (mpChart->maRenderEvent == EVENT_CLICK)
@@ -287,6 +292,10 @@ void RenderBenchMarkThread::ProcessMouseEvent()
{
MoveToDefault();
}
+ else if ((mpChart->maRenderEvent == EVENT_DRAG_LEFT) || (mpChart->maRenderEvent == EVENT_DRAG_RIGHT))
+ {
+ MoveToCorner();
+ }
}
void RenderBenchMarkThread::execute()
@@ -710,6 +719,9 @@ void GL3DBarChart::render()
void GL3DBarChart::mouseDragMove(const Point& rStartPos, const Point& rEndPos, sal_uInt16 )
{
long direction = rEndPos.X() - rStartPos.X();
+ osl::MutexGuard aGuard(maMutex);
+ if (maRenderEvent == EVENT_NON)
+ maRenderEvent = direction > 0 ? EVENT_DRAG_RIGHT : EVENT_DRAG_LEFT;
if(direction < 0)
{
mnCornerId = (mnCornerId + 1) % 4;