summaryrefslogtreecommitdiff
path: root/chart2
diff options
context:
space:
mode:
authorxukai <xukai@multicorewareinc.com>2014-09-22 19:50:26 +0800
committerKohei Yoshida <libreoffice@kohei.us>2014-09-23 15:03:25 +0000
commit080bab41b64d9531c9d2ae9e5125fd4876bca0bb (patch)
treed798ec3d5b6a13f7ab49814d2d158ef2e09ce684 /chart2
parente975f78a306df35663319d03c882cb679c12e20c (diff)
Add function:GetDiffOfTwoCameras
Change-Id: I3b3f4e8e18d5970d408adcf0457bfdd4e064e37c Reviewed-on: https://gerrit.libreoffice.org/11588 Reviewed-by: Kohei Yoshida <libreoffice@kohei.us> Tested-by: Kohei Yoshida <libreoffice@kohei.us>
Diffstat (limited to 'chart2')
-rw-r--r--chart2/source/view/inc/GL3DRenderer.hxx4
-rw-r--r--chart2/source/view/main/GL3DRenderer.cxx23
2 files changed, 27 insertions, 0 deletions
diff --git a/chart2/source/view/inc/GL3DRenderer.hxx b/chart2/source/view/inc/GL3DRenderer.hxx
index fe3e96d7836b..655120c5259e 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 5991a3f7071f..c3397a43e30c 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;