diff options
author | weigao <weigao@multicorewareinc.com> | 2014-07-26 19:29:44 +0800 |
---|---|---|
committer | Markus Mohrhard <markus.mohrhard@collabora.co.uk> | 2014-07-30 21:45:26 +0200 |
commit | 8828dbfa0870cb834efda035bc5e041a1434166b (patch) | |
tree | 339da07d8e429fcf749c9af3d0d17f872c96b473 /chart2/source | |
parent | 4e4047c288c8d93d7d2d6dd0389866033b9f40ef (diff) |
add drag animation for benchmark
Change-Id: Ie9146272dd88b7b51edace7023048629874c360f
Diffstat (limited to 'chart2/source')
-rw-r--r-- | chart2/source/view/charttypes/GL3DBarChart.cxx | 28 |
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; |