chart2/source/view/inc/GL3DRenderer.hxx | 4 ++++ chart2/source/view/main/GL3DRenderer.cxx | 23 +++++++++++++++++++++++ 2 files changed, 27 insertions(+)
New commits: commit 080bab41b64d9531c9d2ae9e5125fd4876bca0bb Author: xukai <xu...@multicorewareinc.com> Date: Mon Sep 22 19:50:26 2014 +0800 Add function:GetDiffOfTwoCameras Change-Id: I3b3f4e8e18d5970d408adcf0457bfdd4e064e37c Reviewed-on: https://gerrit.libreoffice.org/11588 Reviewed-by: Kohei Yoshida <libreoff...@kohei.us> Tested-by: Kohei Yoshida <libreoff...@kohei.us> diff --git a/chart2/source/view/inc/GL3DRenderer.hxx b/chart2/source/view/inc/GL3DRenderer.hxx index fe3e96d..655120c 100644 --- a/chart2/source/view/inc/GL3DRenderer.hxx +++ b/chart2/source/view/inc/GL3DRenderer.hxx @@ -282,6 +282,9 @@ private: void SetHighLightBar(BatchBarInfo &barInfo); void DisableHighLightBar(BatchBarInfo &barInfo); void CalcScrollMoveMatrix(bool bNewScene); + glm::mat4 GetDiffOfTwoCameras(const glm::vec3& rBeginPos, const glm::vec3& rEndPos, const glm::vec3& rBeginDirection, const glm::vec3& rEndDirection); + void AddMatrixDiff(const glm::mat4& aMat); + void ResetMatrixDiff(); private: struct ShaderResources @@ -478,6 +481,7 @@ private: float m_fCurDistance; glm::mat4 m_ScrollMoveMatrix; bool m_bUndrawFlag; + glm::mat4 m_matDiff; }; } diff --git a/chart2/source/view/main/GL3DRenderer.cxx b/chart2/source/view/main/GL3DRenderer.cxx index 5991a3f..c3397a4 100644 --- a/chart2/source/view/main/GL3DRenderer.cxx +++ b/chart2/source/view/main/GL3DRenderer.cxx @@ -96,6 +96,7 @@ OpenGL3DRenderer::OpenGL3DRenderer(): , m_fCurDistance(0.0f) , m_ScrollMoveMatrix(glm::mat4(1.0)) , m_bUndrawFlag(false) + , m_matDiff(glm::mat4(0.0)) { m_Polygon3DInfo.lineOnly = false; m_Polygon3DInfo.twoSidesLighting = false; @@ -2138,6 +2139,17 @@ void OpenGL3DRenderer::CreateSceneBoxView() m_3DView = glm::lookAt(m_CameraInfo.cameraPos, m_CameraInfo.cameraOrg, m_CameraInfo.cameraUp); + m_3DView = m_3DView + m_matDiff; +} + +void OpenGL3DRenderer::AddMatrixDiff(const glm::mat4& aMat) +{ + m_matDiff = m_matDiff + aMat; +} + +void OpenGL3DRenderer::ResetMatrixDiff() +{ + m_matDiff = glm::mat4(0.0); } void OpenGL3DRenderer::ClearBuffer() @@ -2440,6 +2452,17 @@ void OpenGL3DRenderer::CalcScrollMoveMatrix(bool bNewScene) m_bUndrawFlag = m_fCurDistance >= m_fScrollDistance ? true : false; } +glm::mat4 OpenGL3DRenderer::GetDiffOfTwoCameras(const glm::vec3& rBeginPos, const glm::vec3& rEndPos, const glm::vec3& rBeginDirection, const glm::vec3& rEndDirection) +{ + glm::mat4 aBegin = glm::lookAt(glm::vec3(m_GlobalScaleMatrix * glm::vec4(rBeginPos, 1.0)), + glm::vec3(m_GlobalScaleMatrix * glm::vec4(rBeginDirection, 1.0)), + glm::vec3(0, 0, 1)); + glm::mat4 aEnd = glm::lookAt(glm::vec3(m_GlobalScaleMatrix * glm::vec4(rEndPos, 1.0)), + glm::vec3(m_GlobalScaleMatrix * glm::vec4(rEndDirection, 1.0)), + glm::vec3(0, 0, 1)); + return aEnd - aBegin; +} + glm::mat4 OpenGL3DRenderer::GetProjectionMatrix() { return m_3DProjection; _______________________________________________ Libreoffice-commits mailing list libreoffice-comm...@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/libreoffice-commits