[Libreoffice-commits] core.git: chart2/source

xukai xukai at multicorewareinc.com
Tue Sep 23 08:03:54 PDT 2014


 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 <xukai at 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 <libreoffice at kohei.us>
    Tested-by: Kohei Yoshida <libreoffice at 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;


More information about the Libreoffice-commits mailing list