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

2014-08-20 Thread weigao
 chart2/source/view/charttypes/GL3DBarChart.cxx |  102 ++---
 chart2/source/view/inc/GL3DBarChart.hxx|5 +
 2 files changed, 98 insertions(+), 9 deletions(-)

New commits:
commit b7c78772571933b34ff618f07161697c958ba60a
Author: weigao 
Date:   Wed Aug 20 13:01:19 2014 +0200

add screen text to auto fly

Change-Id: I6a4549bf47f5126510c3ddb93733b2d56a4159e2

diff --git a/chart2/source/view/charttypes/GL3DBarChart.cxx 
b/chart2/source/view/charttypes/GL3DBarChart.cxx
index be8a561..fb6e912 100644
--- a/chart2/source/view/charttypes/GL3DBarChart.cxx
+++ b/chart2/source/view/charttypes/GL3DBarChart.cxx
@@ -189,11 +189,11 @@ class RenderBenchMarkThread : public RenderThread
 public:
 RenderBenchMarkThread(GL3DBarChart * pChart)
 : RenderThread(pChart)
+, mbAutoFlyExecuting(0)
 , mbExecuting(false)
 , mbNeedFlyBack(false)
 , mnStep(0)
 , mnStepsTotal(0)
-, mbAutoFlyExecuting(0)
 {
 osl_getSystemTime(&maClickFlyBackStartTime);
 osl_getSystemTime(&maClickFlyBackEndTime);
@@ -536,7 +536,6 @@ void GL3DBarChart::create3DShapes(const 
boost::ptr_vector& rDataSer
 if (BENCH_MARK_MODE)
 {
 mnColorRate = 0;
-mnAutoFlyBarID = 0;
 }
 maShapes.push_back(new opengl3D::Camera(mpRenderer.get()));
 mpCamera = static_cast(&maShapes.back());
@@ -601,8 +600,8 @@ void GL3DBarChart::create3DShapes(const 
boost::ptr_vector& rDataSer
 recordBarHistory(nId, nVal);
 if (BENCH_MARK_MODE)
 {
-std::map::const_iterator itr = 
maBarColorMap.find(nId);
-if (itr == maBarColorMap.end())
+std::map::const_iterator it = 
maBarColorMap.find(nId);
+if (it == maBarColorMap.end())
 {
 maBarColorMap[nId] = nColor;
 }
@@ -1070,9 +1069,10 @@ void GL3DBarChart::recordBarHistory(sal_uInt32 &nBarID, 
float &nVal)
 
 void GL3DBarChart::updateClickEvent()
 {
-if (maRenderEvent == EVENT_CLICK)
+if (maRenderEvent == EVENT_CLICK || maRenderEvent == EVENT_AUTO_FLY)
 {
-std::list& aList = maBarHistory[mSelectBarId];
+sal_uInt32 nBarId = maRenderEvent == EVENT_CLICK ? mSelectBarId : 
mnAutoFlyBarID;
+std::list& aList = maBarHistory[nBarId];
 sal_uInt32 idex = 0;
 for (std::list::iterator it = aList.begin();it != 
aList.end();++it)
 {
@@ -1083,7 +1083,7 @@ void GL3DBarChart::updateClickEvent()
 maScreenTextShapes.push_back(new 
opengl3D::ScreenText(mpRenderer.get(), *mpTextCache, aBarValue, 
CALC_POS_EVENT_ID));
 const opengl3D::TextCacheItem& rTextCache = 
mpTextCache->getText(aBarValue);
 float nRectWidth = (float)rTextCache.maSize.Width() / 
(float)rTextCache.maSize.Height() * 0.03;
-std::map::const_iterator itr 
= maBarMap.find(mSelectBarId);
+std::map::const_iterator itr 
= maBarMap.find(nBarId);
 const BarInformation& rBarInfo = itr->second;
 glm::vec3 aTextPos = glm::vec3(rBarInfo.maPos.x + BAR_SIZE_X / 
2.0f,
   rBarInfo.maPos.y + BAR_SIZE_Y / 
2.0f,
@@ -1240,7 +1240,7 @@ void GL3DBarChart::processAutoFly(sal_uInt32 nId, 
sal_uInt32 nColor)
 sal_uInt32 nPreColor = maBarColorMap[nId];
 maBarColorMap[nId] = nColor;
 //if has manul event, just record the color and process manul event first
-if ((maRenderEvent != EVENT_NONE) && (maRenderEvent != EVENT_AUTO_FLY))
+if ((maRenderEvent != EVENT_NONE))
 {
 return;
 }
commit 8434a2b6aaff9a1a9ce10d9eb9489ebf2929f724
Author: weigao 
Date:   Tue Aug 19 19:24:06 2014 +0800

add auto fly code

Change-Id: Id137892b855b4a70625335ede8015dfe6dce1e7e

diff --git a/chart2/source/view/charttypes/GL3DBarChart.cxx 
b/chart2/source/view/charttypes/GL3DBarChart.cxx
index 8f9d8ec..be8a561 100644
--- a/chart2/source/view/charttypes/GL3DBarChart.cxx
+++ b/chart2/source/view/charttypes/GL3DBarChart.cxx
@@ -33,6 +33,7 @@
 #define HISTORY_NUM 5
 #define SHOW_VALUE_COUNT 15
 #define SHOW_SCROLL_TEXT_DISTANCE 1000
+#define FLY_THRESHOLD 20
 
 
 using namespace com::sun::star;
@@ -192,6 +193,7 @@ public:
 , mbNeedFlyBack(false)
 , mnStep(0)
 , mnStepsTotal(0)
+, mbAutoFlyExecuting(0)
 {
 osl_getSystemTime(&maClickFlyBackStartTime);
 osl_getSystemTime(&maClickFlyBackEndTime);
@@ -207,9 +209,11 @@ private:
 void ProcessScroll();
 void UpdateScreenText();
 void ProcessClickFlyBack();
+void AutoMoveToBar();
 private:
 glm::vec3 maStartPos;
 glm::vec3 maEndPos;
+bool mbAutoFlyExecuting;
 bool mbExecuting;
 bool mbNeedFlyBack;
 glm::vec3 maStep;
@@ -235,7 +239,8 @@ void RenderBenchMarkThread::MoveCamera()
 {
 

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

2014-07-23 Thread weigao
 chart2/opengl/shape3DFragmentShaderBatch.glsl  |3 
 chart2/source/view/charttypes/GL3DBarChart.cxx |   79 -
 chart2/source/view/inc/GL3DBarChart.hxx|2 
 chart2/source/view/main/GL3DRenderer.cxx   |   18 -
 4 files changed, 94 insertions(+), 8 deletions(-)

New commits:
commit a2282e290f3b1378021787c91d10207bf9389f9c
Author: weigao 
Date:   Sat Jul 19 20:14:52 2014 +0800

modify the light to make the sence looks better

Change-Id: If6badae178ffc9be2192fcfdf41fc7d062dc32c4

diff --git a/chart2/opengl/shape3DFragmentShaderBatch.glsl 
b/chart2/opengl/shape3DFragmentShaderBatch.glsl
index b7bdc7e..be24dbf 100644
--- a/chart2/opengl/shape3DFragmentShaderBatch.glsl
+++ b/chart2/opengl/shape3DFragmentShaderBatch.glsl
@@ -66,8 +66,7 @@ void main()
 
 vec3 lightAmbient = Lights.ambient.rgb *
 MaterialDiffuseColor *
-Material.matralParameter.ambient.rgb
-* 5.0;
+Material.matralParameter.ambient.rgb;
 
 for (i = 0; i < Lights.lightNum; i++)
 {
diff --git a/chart2/source/view/main/GL3DRenderer.cxx 
b/chart2/source/view/main/GL3DRenderer.cxx
index d692e7b..f1769c1 100644
--- a/chart2/source/view/main/GL3DRenderer.cxx
+++ b/chart2/source/view/main/GL3DRenderer.cxx
@@ -31,8 +31,8 @@ namespace opengl3D {
 
 namespace {
 
-const int CORNER_DIVION_Y = 10;
-const int CORNER_DIVION_Z = 10;
+const int CORNER_DIVION_Y = 20;
+const int CORNER_DIVION_Z = 20;
 
 int static checkGLError(const char *file, int line)
 {
@@ -855,6 +855,10 @@ void OpenGL3DRenderer::RenderPolygon3D(const 
Polygon3DInfo& polygon)
 size_t verticesNum = polygon.verticesList.size();
 size_t normalsNum = polygon.normalsList.size();
 //check whether the number of vertices and normals are equal
+if (m_CameraInfo.cameraPos.z >= 0.0f)
+glPolygonOffset(1.0, 1.0);
+else
+glPolygonOffset(-1.0, -1.0);
 if (verticesNum != normalsNum)
 {
 return ;
@@ -1023,6 +1027,9 @@ void OpenGL3DRenderer::Set3DSenceInfo(sal_uInt32 nColor, 
bool twoSidesLighting)
 m_iLightNum = 0;
 m_Ambient = getColorAsVector(nColor);;
 }
+SetLightInfo(true, 0xFF, glm::vec4(-1.0, -1.0, 1.0, 0.0));
+SetLightInfo(true, 0xFF, glm::vec4(-1.0, 1.0, 1.0, 0.0));
+SetLightInfo(true, 0xFF, glm::vec4(1.0, -1.0, 1.0, 0.0));
 SetLightInfo(true, 0xFF, glm::vec4(1.0, 1.0, 1.0, 0.0));
 }
 
@@ -1038,7 +1045,7 @@ void OpenGL3DRenderer::SetLightInfo(bool lightOn, 
sal_uInt32 nColor, const glm::
 }
 m_LightsInfo.light[m_LightsInfo.lightNum].lightColor = 
getColorAsVector(nColor);
 m_LightsInfo.light[m_LightsInfo.lightNum].positionWorldspace = 
direction;
-m_LightsInfo.light[m_LightsInfo.lightNum].lightPower = 1.0;
+m_LightsInfo.light[m_LightsInfo.lightNum].lightPower = 0.3f;
 m_LightsInfo.lightNum++;
 }
 else
@@ -1049,7 +1056,7 @@ void OpenGL3DRenderer::SetLightInfo(bool lightOn, 
sal_uInt32 nColor, const glm::
 }
 m_LightColor[m_iLightNum] = getColorAsVector(nColor);
 m_PositionWorldspace[m_iLightNum] = direction;
-m_fLightPower[m_iLightNum] = 1.0;
+m_fLightPower[m_iLightNum] = 0.3f;
 m_iLightNum++;
 }
 }
@@ -2214,6 +2221,7 @@ void OpenGL3DRenderer::RenderBatchBars(bool bNewScene)
 glEnable(GL_DEPTH_TEST);
 glEnable(GL_CULL_FACE);
 glCullFace(GL_BACK);
+glPolygonOffset(0.0f, 0.0f);
 glUseProgram(maResources.m_3DBatchProID);
 UpdateBatch3DUniformBlock();
 glBindBuffer(GL_UNIFORM_BUFFER, m_Batch3DUBOBuffer);
@@ -2268,7 +2276,7 @@ void OpenGL3DRenderer::RenderBatchBars(bool bNewScene)
 if (m_Extrude3DInfo.rounded)
 {
 glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, m_CubeElementBuf);
-for (int i = 0; i < 3; i++)
+for (int i = 0; i < 2; i++)
 {
 glBindBuffer(GL_ARRAY_BUFFER, m_BatchModelMatrixBuf);
 glBufferData(GL_ARRAY_BUFFER, sizeof(glm::mat4) * 
m_BarSurface[i].modelMatrixList.size(), &m_BarSurface[i].modelMatrixList[0][0], 
GL_DYNAMIC_DRAW);
commit cd6029f2373c67ab39313fd6314610becb5095c5
Author: weigao 
Date:   Sat Jul 19 20:12:37 2014 +0800

add benchmark render thread

Change-Id: I0770db8e2cb5ecb1ef7d3706082196a8fd8f1ede

diff --git a/chart2/source/view/charttypes/GL3DBarChart.cxx 
b/chart2/source/view/charttypes/GL3DBarChart.cxx
index 62e5ec9..733d46f 100644
--- a/chart2/source/view/charttypes/GL3DBarChart.cxx
+++ b/chart2/source/view/charttypes/GL3DBarChart.cxx
@@ -19,6 +19,13 @@
 #include 
 #include 
 
+#include 
+#ifdef WNT
+#include 
+#endif
+
+#define BENCH_MARK_MODE 1
+
 using namespace com::sun::star;
 
 namespace chart {
@@ -125,6 +132,57 @@ void RenderAnimationThread::execute()
 }
 }
 
+class RenderBenchMarkThread : public Ren

[Libreoffice-commits] core.git: Branch 'feature/chart-3d-chart2' - 5 commits - chart2/opengl chart2/Package_opengl.mk chart2/source

2014-06-20 Thread weigao
 chart2/Package_opengl.mk|2 
 chart2/opengl/screenTextFragmentShader.glsl |3 
 chart2/opengl/textFragmentShader.glsl   |3 
 chart2/opengl/textFragmentShaderBatch.glsl  |   20 +
 chart2/opengl/textVertexShaderBatch.glsl|   22 ++
 chart2/source/view/inc/GL3DRenderer.hxx |   44 +++-
 chart2/source/view/main/3DChartObjects.cxx  |   11 -
 chart2/source/view/main/GL3DRenderer.cxx|  288 +++-
 8 files changed, 342 insertions(+), 51 deletions(-)

New commits:
commit e4939a72af3baff282a50bf1bce76c3184f26403
Author: weigao 
Date:   Wed Jun 18 08:21:41 2014 -0700

add code to call batch texture render

Change-Id: I09da7c49eb11da9ea2bc18a5e13f2fd2c0d6bd8f

diff --git a/chart2/source/view/inc/GL3DRenderer.hxx 
b/chart2/source/view/inc/GL3DRenderer.hxx
index 065b5fb..5f2167c 100644
--- a/chart2/source/view/inc/GL3DRenderer.hxx
+++ b/chart2/source/view/inc/GL3DRenderer.hxx
@@ -143,6 +143,23 @@ struct TextInfo
 float vertex[12];
 };
 
+struct TextureArrayInfo
+{
+size_t subTextureNum;
+int textureArrayWidth;
+int textureArrayHeight;
+GLuint textureID;
+};
+struct TextInfoBatch
+{
+size_t batchNum;
+std::vector idList;
+std::vector texture;
+std::vector vertexList;
+std::vector textureCoordList;
+};
+
+
 struct BatchBarInfo
 {
 std::vector  modelMatrixList;
@@ -235,6 +252,18 @@ private:
 void UpdateBatch3DUniformBlock();
 void RenderBatchBars(bool bNewScene);
 void CheckGLSLVersion();
+void RenderTextShapeBatch();
+void ReleaseTextShapesBatch();
+void CreateTextTextureSingle(const boost::shared_array 
&bitmapBuf,
+   ::Size maSizePixels,
+   glm::vec3 vTopLeft,glm::vec3 vTopRight,
+   glm::vec3 vBottomRight, glm::vec3 vBottomLeft,
+   sal_uInt32 nUniqueId);
+void CreateTextTextureBatch(const boost::shared_array 
&bitmapBuf,
+   ::Size maSizePixels,
+   glm::vec3 vTopLeft,glm::vec3 vTopRight,
+   glm::vec3 vBottomRight, glm::vec3 vBottomLeft,
+   sal_uInt32 nUniqueId);
 private:
 
 struct ShaderResources
@@ -290,6 +319,14 @@ private:
 GLint m_3DBatchNormalID;
 GLint m_3DBatchColorID;
 
+//Batch render text
+bool mbTexBatchSupport;
+GLint m_BatchTextProID;
+GLint m_BatchTextMatrixID;
+GLint m_BatchTextVertexID;
+GLint m_BatchTextTexCoordID;
+GLint m_BatchTextTexID;
+
 ShaderResources();
 ~ShaderResources();
 
@@ -362,7 +399,7 @@ private:
 std::vector  m_TextInfoList;
 std::vector  m_ScreenTextInfoList;
 GLuint m_TextTexCoordBuf;
-
+GLuint m_TextTexCoordBufBatch;
 int m_uiSelectFrameCounter;
 
 std::vector m_Vertices;
@@ -392,6 +429,7 @@ private:
 MaterialParameters m_Batchmaterial;
 GLuint m_Batch3DUBOBuffer;
 GLint m_Batch3DActualSizeLight;
+TextInfoBatch m_TextInfoBatch;
 //for 3.0 version
 int m_iLightNum;
 glm::vec4 m_Ambient;
diff --git a/chart2/source/view/main/GL3DRenderer.cxx 
b/chart2/source/view/main/GL3DRenderer.cxx
index cf22a86..60b3cb2 100644
--- a/chart2/source/view/main/GL3DRenderer.cxx
+++ b/chart2/source/view/main/GL3DRenderer.cxx
@@ -88,6 +88,7 @@ OpenGL3DRenderer::OpenGL3DRenderer():
 
 OpenGL3DRenderer::~OpenGL3DRenderer()
 {
+ReleaseShapes();
 // delete buffers
 glDeleteBuffers(1, &m_CubeVertexBuf);
 glDeleteBuffers(1, &m_CubeNormalBuf);
@@ -103,10 +104,18 @@ OpenGL3DRenderer::~OpenGL3DRenderer()
 glDeleteBuffers(1, &m_Batch3DUBOBuffer);
 glDeleteBuffers(1, &m_3DUBOBuffer);
 glDeleteBuffers(1, &m_3DUBOBuffer);
+glDeleteBuffers(1, &m_TextTexCoordBufBatch);
 
 glDeleteFramebuffers(1, &mnPickingFbo);
 glDeleteRenderbuffers(1, &mnPickingRboDepth);
 glDeleteRenderbuffers(1, &mnPickingRboColor);
+
+for (size_t i = 0; i < m_TextInfoBatch.texture.size(); i++)
+{
+glDeleteTextures(1, &m_TextInfoBatch.texture[i].textureID);
+}
+m_TextInfoBatch.texture.clear();
+
 }
 
 OpenGL3DRenderer::ShaderResources::ShaderResources()
@@ -139,6 +148,12 @@ OpenGL3DRenderer::ShaderResources::ShaderResources()
 , m_3DBatchNormalID(0)
 , m_3DBatchColorID(0)
 , m_b330Support(false)
+, m_BatchTextProID(0)
+, m_BatchTextMatrixID(0)
+, m_BatchTextVertexID(0)
+, m_BatchTextTexCoordID(0)
+, m_BatchTextTexID(0)
+, mbTexBatchSupport(false)
 {
 }
 
@@ -149,6 +164,7 @@ OpenGL3DRenderer::ShaderResources::~ShaderResources()
 glDeleteProgram(m_ScreenTextProID);
 glDeleteProgram(m_3DProID);
 glDeleteProgram(m_3DBatchProID);
+glDeleteProgram(m_BatchTextProID);
 }
 
 void OpenGL3DRenderer::CheckGLSLVersion()
@@ -204,6 +220,27 @@ void OpenGL3DRenderer::ShaderResources::LoadShaders()
 m_3

[Libreoffice-commits] core.git: 3 commits - chart2/opengl chart2/Package_opengl.mk chart2/source

2014-06-16 Thread weigao
 chart2/Package_opengl.mk |2 
 chart2/opengl/shape3DFragmentShaderV300.glsl |   87 ++
 chart2/opengl/shape3DVertexShaderV300.glsl   |   29 +++
 chart2/source/view/inc/GL3DRenderer.hxx  |   20 ++
 chart2/source/view/main/GL3DRenderer.cxx |  228 +--
 5 files changed, 321 insertions(+), 45 deletions(-)

New commits:
commit 7c5580874ccb403baec7a067a6fb55182a2bd354
Author: weigao 
Date:   Sat Jun 14 08:59:07 2014 -0700

add codes for calling the 3.0 shaders

Change-Id: I0e95879c04047ccb836543d801bda6a01ae469ef

diff --git a/chart2/source/view/main/GL3DRenderer.cxx 
b/chart2/source/view/main/GL3DRenderer.cxx
index 3566fb3..4178467 100644
--- a/chart2/source/view/main/GL3DRenderer.cxx
+++ b/chart2/source/view/main/GL3DRenderer.cxx
@@ -195,6 +195,7 @@ void OpenGL3DRenderer::CheckGLSLVersion()
 if (iVersion > 3)
 {
 maResources.m_b330Support = true;
+maResources.m_b330Support = false;
 return;
 }
 p++;
@@ -834,11 +835,6 @@ void OpenGL3DRenderer::RenderPolygon3D(const 
Polygon3DInfo& polygon)
 {
 return ;
 }
-//update ubo
-Update3DUniformBlock();
-glBindBuffer(GL_UNIFORM_BUFFER, m_3DUBOBuffer);
-glBufferSubData(GL_UNIFORM_BUFFER, m_3DActualSizeLight, 
sizeof(MaterialParameters), &polygon.material);
-CHECK_GL_ERROR();
 glBindBuffer(GL_UNIFORM_BUFFER, 0);
 if(mbPickingMode)
 {
@@ -849,6 +845,31 @@ void OpenGL3DRenderer::RenderPolygon3D(const 
Polygon3DInfo& polygon)
 glUseProgram(maResources.m_3DProID);
 glUniformMatrix4fv(maResources.m_3DViewID, 1, GL_FALSE, 
&m_3DView[0][0]);
 glUniformMatrix4fv(maResources.m_3DProjectionID, 1, GL_FALSE, 
&m_3DProjection[0][0]);
+if (maResources.m_b330Support)
+{
+//update ubo
+Update3DUniformBlock();
+glBindBuffer(GL_UNIFORM_BUFFER, m_3DUBOBuffer);
+glBufferSubData(GL_UNIFORM_BUFFER, m_3DActualSizeLight, 
sizeof(MaterialParameters), &polygon.material);
+CHECK_GL_ERROR();
+}
+else
+{
+//update light information
+glUniform4fv(maResources.m_3DLightColorID, m_iLightNum, 
(GLfloat*)m_LightColor);
+glUniform4fv(maResources.m_3DLightPosID, m_iLightNum, 
(GLfloat*)m_PositionWorldspace);
+glUniform1fv(maResources.m_3DLightPowerID, m_iLightNum, 
m_fLightPower);
+glUniform1i(maResources.m_3DLightNumID, m_iLightNum);
+glUniform4fv(maResources.m_3DLightAmbientID, 1, &m_Ambient[0]);
+//update meterial information
+glUniform4fv(maResources.m_3DMaterialAmbientID, 1, 
&polygon.material.ambient[0]);
+glUniform4fv(maResources.m_3DMaterialDiffuseID, 1, 
&polygon.material.diffuse[0]);
+glUniform4fv(maResources.m_3DMaterialSpecularID, 1, 
&polygon.material.specular[0]);
+glUniform4fv(maResources.m_3DMaterialColorID, 1, 
&polygon.material.materialColor[0]);
+glUniform1i(maResources.m_3DMaterialTwoSidesID, 
polygon.material.twoSidesLighting);
+glUniform1f(maResources.m_3DMaterialShininessID, 
polygon.material.shininess);
+CHECK_GL_ERROR();
+}
 }
 for (size_t i = 0; i < verticesNum; i++)
 {
@@ -968,26 +989,45 @@ void OpenGL3DRenderer::RenderPolygon3DObject()
 void OpenGL3DRenderer::Set3DSenceInfo(sal_uInt32 nColor, bool twoSidesLighting)
 {
 m_Polygon3DInfo.material.twoSidesLighting = twoSidesLighting;
-
-m_LightsInfo.ambient = getColorAsVector(nColor);
-
-m_LightsInfo.lightNum = 0;
+if (maResources.m_b330Support)
+{
+m_LightsInfo.ambient = getColorAsVector(nColor);
+m_LightsInfo.lightNum = 0;
+}
+else
+{
+m_iLightNum = 0;
+m_Ambient = getColorAsVector(nColor);;
+}
 SetLightInfo(true, 0xFF, glm::vec4(1.0, 1.0, 1.0, 0.0));
 }
 
 void OpenGL3DRenderer::SetLightInfo(bool lightOn, sal_uInt32 nColor, const 
glm::vec4& direction)
 {
-if (m_LightsInfo.lightNum >= MAX_LIGHT_NUM)
-{
-return;
-}
-
 if (lightOn)
 {
-m_LightsInfo.light[m_LightsInfo.lightNum].lightColor = 
getColorAsVector(nColor);
-m_LightsInfo.light[m_LightsInfo.lightNum].positionWorldspace = 
direction;
-m_LightsInfo.light[m_LightsInfo.lightNum].lightPower = 1.0;
-m_LightsInfo.lightNum++;
+if (maResources.m_b330Support)
+{
+if (m_LightsInfo.lightNum >= MAX_LIGHT_NUM)
+{
+return;
+}
+m_LightsInfo.light[m_LightsInfo.lightNum].lightColor = 
getColorAsVector(nColor);
+m_LightsInfo.light[m_LightsInfo.lightNum].positionWorldspace = 
direction;
+m_LightsInfo.light[m_LightsInfo.lightNum].lightPower = 1.0;
+m_LightsInfo.lightNum++;
+}
+e

[Libreoffice-commits] core.git: Branch 'feature/chart-3d-chart2' - 8 commits - chart2/opengl chart2/Package_opengl.mk chart2/source

2014-06-16 Thread weigao
 chart2/Package_opengl.mk   |2 
 chart2/opengl/shape3DFragmentShaderV300.glsl   |   87 +
 chart2/opengl/shape3DVertexShaderV300.glsl |   29 +++
 chart2/source/view/charttypes/GL3DBarChart.cxx |   83 ++---
 chart2/source/view/inc/GL3DBarChart.hxx|6 
 chart2/source/view/inc/GL3DRenderer.hxx|   20 ++
 chart2/source/view/main/GL3DRenderer.cxx   |  228 -
 7 files changed, 387 insertions(+), 68 deletions(-)

New commits:
commit 796a9e97522ee1201a3f291f3c1c31d02541c789
Author: weigao 
Date:   Sat Jun 14 08:59:07 2014 -0700

add codes for calling the 3.0 shaders

Change-Id: I0e95879c04047ccb836543d801bda6a01ae469ef

diff --git a/chart2/source/view/main/GL3DRenderer.cxx 
b/chart2/source/view/main/GL3DRenderer.cxx
index 1799396..9098cd1 100644
--- a/chart2/source/view/main/GL3DRenderer.cxx
+++ b/chart2/source/view/main/GL3DRenderer.cxx
@@ -172,6 +172,7 @@ void OpenGL3DRenderer::CheckGLSLVersion()
 if (iVersion > 3)
 {
 maResources.m_b330Support = true;
+maResources.m_b330Support = false;
 return;
 }
 p++;
@@ -810,11 +811,6 @@ void OpenGL3DRenderer::RenderPolygon3D(Polygon3DInfo 
&polygon)
 {
 return ;
 }
-//update ubo
-Update3DUniformBlock();
-glBindBuffer(GL_UNIFORM_BUFFER, m_3DUBOBuffer);
-glBufferSubData(GL_UNIFORM_BUFFER, m_3DActualSizeLight, 
sizeof(MaterialParameters), &polygon.material);
-CHECK_GL_ERROR();
 glBindBuffer(GL_UNIFORM_BUFFER, 0);
 if(mbPickingMode)
 {
@@ -825,6 +821,31 @@ void OpenGL3DRenderer::RenderPolygon3D(Polygon3DInfo 
&polygon)
 glUseProgram(maResources.m_3DProID);
 glUniformMatrix4fv(maResources.m_3DViewID, 1, GL_FALSE, 
&m_3DView[0][0]);
 glUniformMatrix4fv(maResources.m_3DProjectionID, 1, GL_FALSE, 
&m_3DProjection[0][0]);
+if (maResources.m_b330Support)
+{
+//update ubo
+Update3DUniformBlock();
+glBindBuffer(GL_UNIFORM_BUFFER, m_3DUBOBuffer);
+glBufferSubData(GL_UNIFORM_BUFFER, m_3DActualSizeLight, 
sizeof(MaterialParameters), &polygon.material);
+CHECK_GL_ERROR();
+}
+else
+{
+//update light information
+glUniform4fv(maResources.m_3DLightColorID, m_iLightNum, 
(GLfloat*)m_LightColor);
+glUniform4fv(maResources.m_3DLightPosID, m_iLightNum, 
(GLfloat*)m_PositionWorldspace);
+glUniform1fv(maResources.m_3DLightPowerID, m_iLightNum, 
m_fLightPower);
+glUniform1i(maResources.m_3DLightNumID, m_iLightNum);
+glUniform4fv(maResources.m_3DLightAmbientID, 1, &m_Ambient[0]);
+//update meterial information
+glUniform4fv(maResources.m_3DMaterialAmbientID, 1, 
&polygon.material.ambient[0]);
+glUniform4fv(maResources.m_3DMaterialDiffuseID, 1, 
&polygon.material.diffuse[0]);
+glUniform4fv(maResources.m_3DMaterialSpecularID, 1, 
&polygon.material.specular[0]);
+glUniform4fv(maResources.m_3DMaterialColorID, 1, 
&polygon.material.materialColor[0]);
+glUniform1i(maResources.m_3DMaterialTwoSidesID, 
polygon.material.twoSidesLighting);
+glUniform1f(maResources.m_3DMaterialShininessID, 
polygon.material.shininess);
+CHECK_GL_ERROR();
+}
 }
 for (size_t i = 0; i < verticesNum; i++)
 {
@@ -942,26 +963,45 @@ void OpenGL3DRenderer::RenderPolygon3DObject()
 void OpenGL3DRenderer::Set3DSenceInfo(sal_uInt32 nColor, bool twoSidesLighting)
 {
 m_Polygon3DInfo.material.twoSidesLighting = twoSidesLighting;
-
-m_LightsInfo.ambient = getColorAsVector(nColor);
-
-m_LightsInfo.lightNum = 0;
+if (maResources.m_b330Support)
+{
+m_LightsInfo.ambient = getColorAsVector(nColor);
+m_LightsInfo.lightNum = 0;
+}
+else
+{
+m_iLightNum = 0;
+m_Ambient = getColorAsVector(nColor);;
+}
 SetLightInfo(true, 0xFF, glm::vec4(1.0, 1.0, 1.0, 0.0));
 }
 
 void OpenGL3DRenderer::SetLightInfo(bool lightOn, sal_uInt32 nColor, const 
glm::vec4& direction)
 {
-if (m_LightsInfo.lightNum >= MAX_LIGHT_NUM)
-{
-return;
-}
-
 if (lightOn)
 {
-m_LightsInfo.light[m_LightsInfo.lightNum].lightColor = 
getColorAsVector(nColor);
-m_LightsInfo.light[m_LightsInfo.lightNum].positionWorldspace = 
direction;
-m_LightsInfo.light[m_LightsInfo.lightNum].lightPower = 1.0;
-m_LightsInfo.lightNum++;
+if (maResources.m_b330Support)
+{
+if (m_LightsInfo.lightNum >= MAX_LIGHT_NUM)
+{
+return;
+}
+m_LightsInfo.light[m_LightsInfo.lightNum].lightColor = 
getColorAsVector(nColor);
+m_LightsInfo.light[m_LightsInfo.lightNum].positionWorldspace = 
direction;
+m_LightsInfo.light[m_LightsInfo.li

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

2014-05-25 Thread weigao
 chart2/source/view/inc/GL3DRenderer.hxx  |   13 +++-
 chart2/source/view/main/GL3DRenderer.cxx |   93 ---
 2 files changed, 70 insertions(+), 36 deletions(-)

New commits:
commit 74042bc601fdf3faf25541fb4959d061bbf6abd1
Author: weigao 
Date:   Sun May 25 15:19:47 2014 +0800

add delete shape function

Change-Id: Ided3902a45c6bb7bf79827849aeca3c40f83

diff --git a/chart2/source/view/inc/GL3DRenderer.hxx 
b/chart2/source/view/inc/GL3DRenderer.hxx
index 0fcf437..cf95f30 100644
--- a/chart2/source/view/inc/GL3DRenderer.hxx
+++ b/chart2/source/view/inc/GL3DRenderer.hxx
@@ -83,8 +83,8 @@ struct Polygon3DInfo
 Vertices3D *vertices;
 UVs3D *uvs;
 Normals3D *normals;
-std::list  verticesList;
-std::list  normalsList;
+std::vector  verticesList;
+std::vector  normalsList;
 MaterialParameters material;
 };
 
@@ -208,6 +208,11 @@ private:
int iSubDivZ, float width, float height, float 
depth);
 void CreateSceneBoxView();
 void RenderTexture(GLuint TexID);
+
+void ReleaseShapes();
+void ReleasePolygonShapes();
+void ReleaseExtrude3DShapes();
+void ReleaseTextShapes();
 private:
 
 struct ShaderResources
@@ -319,7 +324,7 @@ private:
 
 Polygon3DInfo m_Polygon3DInfo;
 
-std::list  m_Polygon3DInfoList;
+std::vector  m_Polygon3DInfoList;
 
 glm::mat4 m_D3DTrasform;
 
@@ -354,7 +359,7 @@ private:
 GLuint m_BoundBox;
 GLuint m_BoundBoxNormal;
  // add for text
-std::list  m_TextInfoList;
+std::vector  m_TextInfoList;
 GLuint m_TextTexCoordBuf;
 
 int m_uiSelectFrameCounter;
diff --git a/chart2/source/view/main/GL3DRenderer.cxx 
b/chart2/source/view/main/GL3DRenderer.cxx
index bb4d239..7d4db19 100644
--- a/chart2/source/view/main/GL3DRenderer.cxx
+++ b/chart2/source/view/main/GL3DRenderer.cxx
@@ -686,9 +686,7 @@ double OpenGL3DRenderer::GetTime()
 
 void OpenGL3DRenderer::RenderLine3D(Polygon3DInfo &polygon)
 {
-size_t listNum = polygon.verticesList.size();
 glUseProgram(maResources.m_CommonProID);
-
 PosVecf3 trans = {0.0f, 0, 0.0};
 PosVecf3 angle = {0.0f, 0.0f, 0.0f};
 PosVecf3 scale = {1.0f, 1.0f, m_fHeightWeight};
@@ -696,10 +694,10 @@ void OpenGL3DRenderer::RenderLine3D(Polygon3DInfo 
&polygon)
 
 m_3DMVP = m_3DProjection * m_3DView * m_Model;
 
-for (size_t i = 0; i < listNum; i++)
+for (size_t i = 0; i < polygon.verticesList.size(); i++)
 {
 //move the circle to the pos, and scale using the xScale and Y scale
-Vertices3D *pointList = polygon.verticesList.front();
+Vertices3D *pointList = polygon.verticesList[i];
 //if line only, using the common shader to render
 
 //fill vertex buffer
@@ -726,8 +724,6 @@ void OpenGL3DRenderer::RenderLine3D(Polygon3DInfo &polygon)
 glDrawArrays(GL_LINE_STRIP, 0, pointList->size());
 glDisableVertexAttribArray(maResources.m_2DVertexID);
 glBindBuffer(GL_ARRAY_BUFFER, 0);
-delete pointList;
-polygon.verticesList.pop_front();
 }
 glUseProgram(0);
 }
@@ -760,8 +756,8 @@ void OpenGL3DRenderer::RenderPolygon3D(Polygon3DInfo 
&polygon)
 for (size_t i = 0; i < verticesNum; i++)
 {
 //move the circle to the pos, and scale using the xScale and Y scale
-Vertices3D *pointList = polygon.verticesList.front();
-Normals3D *normalList = polygon.normalsList.front();
+Vertices3D *pointList = polygon.verticesList[i];
+Normals3D *normalList = polygon.normalsList[i];
 PosVecf3 trans = {0.0f, 0.0f, 0.0};
 PosVecf3 angle = {0.0f, 0.0f, 0.0f};
 PosVecf3 scale = {1.0f, 1.0f, m_fHeightWeight};
@@ -819,21 +815,44 @@ void OpenGL3DRenderer::RenderPolygon3D(Polygon3DInfo 
&polygon)
 glDisableVertexAttribArray(maResources.m_3DNormalID);
 
 glBindBuffer(GL_ARRAY_BUFFER, 0);
-delete pointList;
-delete normalList;
-polygon.verticesList.pop_front();
-polygon.normalsList.pop_front();
 }
 glUseProgram(0);
 }
 
+namespace {
+
+template< typename T >
+struct DeletePointer
+{
+void operator()(T* p)
+{
+delete p;
+}
+};
+
+}
+
+void OpenGL3DRenderer::ReleasePolygonShapes()
+{
+for (size_t i = 0; i < m_Polygon3DInfoList.size(); i++)
+{
+Polygon3DInfo &polygon = m_Polygon3DInfoList[i];
+std::for_each(polygon.verticesList.begin(),
+polygon.verticesList.end(), DeletePointer());
+std::for_each(polygon.normalsList.begin(),
+polygon.normalsList.end(), DeletePointer());
+delete polygon.vertices;
+delete polygon.normals;
+}
+m_Polygon3DInfoList.clear();
+}
+
 void OpenGL3DRenderer::RenderPolygon3DObject()
 {
 glDepthMask(GL_FALSE);
-size_t polygonNum = m_Polygon3DInfoList.size();
-for (size_t i = 0; i < polygonNum; i++)
+for 

[Libreoffice-commits] core.git: Branch 'feature/chart-3d-chart2' - chart2/source

2014-05-25 Thread weigao
 chart2/source/view/inc/GL3DRenderer.hxx  |   15 --
 chart2/source/view/main/GL3DRenderer.cxx |   73 ++-
 2 files changed, 54 insertions(+), 34 deletions(-)

New commits:
commit 33921d26aabba22f24b2c49e9fedcea35ada81c6
Author: weigao 
Date:   Sun May 25 15:19:47 2014 +0800

add delete shape function

Change-Id: Ided3902a45c6bb7bf79827849aeca3c40f83

diff --git a/chart2/source/view/inc/GL3DRenderer.hxx 
b/chart2/source/view/inc/GL3DRenderer.hxx
index b5a5c68..e0214a8 100644
--- a/chart2/source/view/inc/GL3DRenderer.hxx
+++ b/chart2/source/view/inc/GL3DRenderer.hxx
@@ -83,9 +83,9 @@ struct Polygon3DInfo
 Vertices3D *vertices;
 UVs3D *uvs;
 Normals3D *normals;
-std::list  verticesList;
-std::list  uvsList;
-std::list  normalsList;
+std::vector  verticesList;
+std::vector  uvsList;
+std::vector  normalsList;
 MaterialParameters material;
 };
 
@@ -209,6 +209,11 @@ private:
int iSubDivZ, float width, float height, float 
depth);
 void CreateSceneBoxView();
 void RenderTexture(GLuint TexID);
+
+void ReleaseShapes();
+void ReleasePolygonShapes();
+void ReleaseExtrude3DShapes();
+void ReleaseTextShapes();
 private:
 
 struct ShaderResources
@@ -297,7 +302,7 @@ private:
 
 Polygon3DInfo m_Polygon3DInfo;
 
-std::list  m_Polygon3DInfoList;
+std::vector  m_Polygon3DInfoList;
 
 glm::mat4 m_D3DTrasform;
 
@@ -332,7 +337,7 @@ private:
 GLuint m_BoundBox;
 GLuint m_BoundBoxNormal;
  // add for text
-std::list  m_TextInfoList;
+std::vector  m_TextInfoList;
 GLuint m_TextTexCoordBuf;
 
 int m_uiSelectFrameCounter;
diff --git a/chart2/source/view/main/GL3DRenderer.cxx 
b/chart2/source/view/main/GL3DRenderer.cxx
index a658536..ecab037 100644
--- a/chart2/source/view/main/GL3DRenderer.cxx
+++ b/chart2/source/view/main/GL3DRenderer.cxx
@@ -685,9 +685,7 @@ double OpenGL3DRenderer::GetTime()
 
 void OpenGL3DRenderer::RenderLine3D(Polygon3DInfo &polygon)
 {
-size_t listNum = polygon.verticesList.size();
 glUseProgram(maResources.m_CommonProID);
-
 PosVecf3 trans = {0.0f, 0, 0.0};
 PosVecf3 angle = {0.0f, 0.0f, 0.0f};
 PosVecf3 scale = {1.0f, 1.0f, m_fHeightWeight};
@@ -695,10 +693,10 @@ void OpenGL3DRenderer::RenderLine3D(Polygon3DInfo 
&polygon)
 
 m_3DMVP = m_3DProjection * m_3DView * m_Model;
 
-for (size_t i = 0; i < listNum; i++)
+for (size_t i = 0; i < polygon.verticesList.size(); i++)
 {
 //move the circle to the pos, and scale using the xScale and Y scale
-Vertices3D *pointList = polygon.verticesList.front();
+Vertices3D *pointList = polygon.verticesList[i];
 //if line only, using the common shader to render
 
 //fill vertex buffer
@@ -725,8 +723,6 @@ void OpenGL3DRenderer::RenderLine3D(Polygon3DInfo &polygon)
 glDrawArrays(GL_LINE_STRIP, 0, pointList->size());
 glDisableVertexAttribArray(maResources.m_2DVertexID);
 glBindBuffer(GL_ARRAY_BUFFER, 0);
-delete pointList;
-polygon.verticesList.pop_front();
 }
 glUseProgram(0);
 }
@@ -759,8 +755,8 @@ void OpenGL3DRenderer::RenderPolygon3D(Polygon3DInfo 
&polygon)
 for (size_t i = 0; i < verticesNum; i++)
 {
 //move the circle to the pos, and scale using the xScale and Y scale
-Vertices3D *pointList = polygon.verticesList.front();
-Normals3D *normalList = polygon.normalsList.front();
+Vertices3D *pointList = polygon.verticesList[i];
+Normals3D *normalList = polygon.normalsList[i];
 PosVecf3 trans = {0.0f, 0.0f, 0.0};
 PosVecf3 angle = {0.0f, 0.0f, 0.0f};
 PosVecf3 scale = {1.0f, 1.0f, m_fHeightWeight};
@@ -818,10 +814,6 @@ void OpenGL3DRenderer::RenderPolygon3D(Polygon3DInfo 
&polygon)
 glDisableVertexAttribArray(maResources.m_3DNormalID);
 
 glBindBuffer(GL_ARRAY_BUFFER, 0);
-delete pointList;
-delete normalList;
-polygon.verticesList.pop_front();
-polygon.normalsList.pop_front();
 }
 glUseProgram(0);
 }
@@ -839,13 +831,26 @@ struct DeletePointer
 
 }
 
+void OpenGL3DRenderer::ReleasePolygonShapes()
+{
+for (size_t i = 0; i < m_Polygon3DInfoList.size(); i++)
+{
+Polygon3DInfo &polygon = m_Polygon3DInfoList[i];
+std::for_each(polygon.verticesList.begin(),
+polygon.verticesList.end(), DeletePointer());
+std::for_each(polygon.normalsList.begin(),
+polygon.normalsList.end(), DeletePointer());
+delete polygon.vertices;
+delete polygon.normals;
+}
+m_Polygon3DInfoList.clear();
+}
 void OpenGL3DRenderer::RenderPolygon3DObject()
 {
 glDepthMask(GL_FALSE);
-size_t polygonNum = m_Polygon3DInfoList.size();
-for (size_t i = 0; i < polygonNum; i++)
+for (size_t i = 0; i < m_Polygon3DInfoList.size()

[Libreoffice-commits] core.git: Branch 'feature/chart-3d-chart2' - chart2/source

2014-05-25 Thread weigao
 chart2/source/view/main/GL3DRenderer.cxx |6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

New commits:
commit 74544a356a5f69afe148405139ac783150e1b322
Author: weigao 
Date:   Sun May 25 13:47:44 2014 +0800

fix the bar model generate

Change-Id: I8df87b27dd93f0e11198998869b97754ded3bca1

diff --git a/chart2/source/view/main/GL3DRenderer.cxx 
b/chart2/source/view/main/GL3DRenderer.cxx
index 75628da..a658536 100644
--- a/chart2/source/view/main/GL3DRenderer.cxx
+++ b/chart2/source/view/main/GL3DRenderer.cxx
@@ -329,7 +329,7 @@ void OpenGL3DRenderer::CreateActualRoundedCube(float 
fRadius, int iSubDivY, int
 {
 return;
 }
-float topThreshold = height - 2 * fRadius;
+float topThreshold = depth - 2 * fRadius;
 float bottomThreshold = fRadius;
 
 std::vector vertices;
@@ -1002,7 +1002,8 @@ void OpenGL3DRenderer::AddShape3DExtrudeObject(bool 
roundedCorner, sal_uInt32 nC
 m_Extrude3DInfo.rounded = roundedCorner;
 if (m_Extrude3DInfo.rounded && (m_RoundBarMesh.iMeshSizes == 0))
 {
-CreateActualRoundedCube(0.1f, 30, 30, 1.0f, m_Extrude3DInfo.yScale / 
m_Extrude3DInfo.xScale, 1.2f);
+float radius = 0.2f;
+CreateActualRoundedCube(radius, 30, 30, 1.0f, m_Extrude3DInfo.yScale / 
m_Extrude3DInfo.xScale, 1 + 2 * radius);
 AddVertexData(m_CubeVertexBuf);
 AddNormalData(m_CubeNormalBuf);
 AddIndexData(m_CubeElementBuf);
@@ -1197,7 +1198,6 @@ void OpenGL3DRenderer::RenderExtrudeTopSurface(const 
Extrude3DInfo& extrude3D)
 PosVecf3 trans = {extrude3D.xTransform,
   extrude3D.yTransform,
   extrude3D.zTransform};
-
 if (actualZTrans < 0.0f)
 {
 // the height of rounded corner is higher than the cube than use the 
org scale matrix
___
Libreoffice-commits mailing list
libreoffice-comm...@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/libreoffice-commits


[Libreoffice-commits] core.git: Branch 'feature/chart-3d-chart2' - 11 commits - chart2/source include/vcl vcl/source

2014-05-24 Thread weigao
 chart2/source/view/charttypes/GL3DBarChart.cxx |   37 ++---
 chart2/source/view/main/3DChartObjects.cxx |7 +++-
 chart2/source/view/main/GL3DRenderer.cxx   |   31 
 include/vcl/opengl/OpenGLHelper.hxx|1 
 vcl/source/opengl/OpenGLHelper.cxx |6 
 5 files changed, 47 insertions(+), 35 deletions(-)

New commits:
commit 0b363b9e38adfe92ad905a298b1a5420783e0126
Author: weigao 
Date:   Sat May 24 11:45:02 2014 +0800

modify the camera position to show the whole scene

Change-Id: I0d197295046a478d59f4260f2931fbaec9a17a33

diff --git a/chart2/source/view/main/GL3DRenderer.cxx 
b/chart2/source/view/main/GL3DRenderer.cxx
index c61785d..6d6876b 100644
--- a/chart2/source/view/main/GL3DRenderer.cxx
+++ b/chart2/source/view/main/GL3DRenderer.cxx
@@ -1559,7 +1559,7 @@ void OpenGL3DRenderer::CreateSceneBoxView()
 m_SenceBox.maxZCoord *= m_fHeightWeight;
 m_SenceBox.minZCoord *= m_fHeightWeight;
 m_CameraInfo.cameraOrg = glm::vec3(m_SenceBox.minXCoord + senceBoxWidth / 
2,
-   m_SenceBox.minYCoord + senceBoxDepth * 
2,
+   m_SenceBox.minYCoord + senceBoxDepth / 
2,
m_SenceBox.minZCoord + senceBoxHeight * 
m_fHeightWeight/ 2);//update the camera position and org
 m_CameraInfo.cameraPos.x = m_CameraInfo.cameraOrg.x + distance * 
cos(veriticalAngle) * sin(horizontalAngle);
 m_CameraInfo.cameraPos.y = m_CameraInfo.cameraOrg.y + distance * 
cos(veriticalAngle) * cos(horizontalAngle);
commit a207e3c174eb9eee3a68909f07c9822a28a19a01
Author: Markus Mohrhard 
Date:   Sat May 24 10:41:00 2014 +0200

the destructor alreadz clears the vector

Change-Id: I085e3463251a7d73be9724ae56bd6aa3fcf50a34

diff --git a/chart2/source/view/main/GL3DRenderer.cxx 
b/chart2/source/view/main/GL3DRenderer.cxx
index 6b3a3a4..c61785d 100644
--- a/chart2/source/view/main/GL3DRenderer.cxx
+++ b/chart2/source/view/main/GL3DRenderer.cxx
@@ -733,7 +733,6 @@ void OpenGL3DRenderer::RenderLine3D(Polygon3DInfo &polygon)
 glDrawArrays(GL_LINE_STRIP, 0, pointList->size());
 glDisableVertexAttribArray(maResources.m_2DVertexID);
 glBindBuffer(GL_ARRAY_BUFFER, 0);
-pointList->clear();
 delete pointList;
 polygon.verticesList.pop_front();
 }
@@ -827,8 +826,6 @@ void OpenGL3DRenderer::RenderPolygon3D(Polygon3DInfo 
&polygon)
 glDisableVertexAttribArray(maResources.m_3DNormalID);
 
 glBindBuffer(GL_ARRAY_BUFFER, 0);
-pointList->clear();
-normalList->clear();
 delete pointList;
 delete normalList;
 polygon.verticesList.pop_front();
commit 17ef5743d3974894fb1ea2f277393a6ac0152b27
Author: weigao 
Date:   Fri May 23 05:07:38 2014 -0700

fix the calling of polygon API

Change-Id: I14d7e8594dae86830ca05aeb28633feac0a258cc

diff --git a/chart2/source/view/main/3DChartObjects.cxx 
b/chart2/source/view/main/3DChartObjects.cxx
index aa77743..bf8c10b 100644
--- a/chart2/source/view/main/3DChartObjects.cxx
+++ b/chart2/source/view/main/3DChartObjects.cxx
@@ -53,6 +53,7 @@ void Line::render()
 mpRenderer->AddShapePolygon3DObject(0, true, maLineColor.GetColor(), 0, 0, 
mnUniqueId);
 mpRenderer->AddPolygon3DObjectPoint(maPosBegin.x, maPosBegin.y, 
maPosBegin.z);
 mpRenderer->AddPolygon3DObjectPoint(maPosEnd.x, maPosEnd.y, maPosEnd.z);
+mpRenderer->EndAddPolygon3DObjectPoint();
 mpRenderer->EndAddShapePolygon3DObject();
 }
 
@@ -131,6 +132,7 @@ void Rectangle::render()
 mpRenderer->AddPolygon3DObjectNormalPoint(normal.x, normal.y, normal.z);
 mpRenderer->EndAddPolygon3DObjectPoint();
 mpRenderer->EndAddPolygon3DObjectNormalPoint();
+mpRenderer->EndAddShapePolygon3DObject();
 //we should render the edge if the edge color is different from the fill 
color
 if (maColor.GetColor() != maLineColor.GetColor())
 {
@@ -140,8 +142,8 @@ void Rectangle::render()
 mpRenderer->AddPolygon3DObjectPoint(maTopLeft.x, maTopLeft.y, 
maTopLeft.z);
 mpRenderer->AddPolygon3DObjectPoint(bottomLeft.x, bottomLeft.y, 
bottomLeft.z);
 mpRenderer->EndAddPolygon3DObjectPoint();
+mpRenderer->EndAddShapePolygon3DObject();
 }
-mpRenderer->EndAddShapePolygon3DObject();
 }
 
 void Rectangle::setPosition(const glm::vec3& rTopLeft, const glm::vec3& 
rTopRight, const glm::vec3& rBottomRight)
commit e86abf0f00fee0f508cf35de9582de078e0e056e
Author: weigao 
Date:   Fri May 23 05:03:37 2014 -0700

fix the polygon normal

Change-Id: I89f27b409cf04f98f90bdc61396a8c58ec91d7f7

diff --git a/chart2/source/view/main/GL3DRenderer.cxx 
b/chart2/source/view/main/GL3DRenderer.cxx
index bbeae20..6b3a3a4 100644
--- a/chart2/source/view/main/GL3DRenderer.cxx
+++ b/chart2/source/view/main/GL3DRenderer.cx

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

2014-05-24 Thread weigao
 chart2/source/view/charttypes/GL3DBarChart.cxx |   37 ++---
 chart2/source/view/main/3DChartObjects.cxx |7 +++-
 chart2/source/view/main/GL3DRenderer.cxx   |   31 
 include/vcl/opengl/OpenGLHelper.hxx|1 
 vcl/source/opengl/OpenGLHelper.cxx |6 
 5 files changed, 47 insertions(+), 35 deletions(-)

New commits:
commit fed8631d31c4598466ef0d09f509bfabd5ce9dd7
Author: weigao 
Date:   Sat May 24 11:45:02 2014 +0800

modify the camera position to show the whole scene

Change-Id: I0d197295046a478d59f4260f2931fbaec9a17a33

diff --git a/chart2/source/view/main/GL3DRenderer.cxx 
b/chart2/source/view/main/GL3DRenderer.cxx
index f7af953..ffd89ad 100644
--- a/chart2/source/view/main/GL3DRenderer.cxx
+++ b/chart2/source/view/main/GL3DRenderer.cxx
@@ -1547,7 +1547,7 @@ void OpenGL3DRenderer::CreateSceneBoxView()
 m_SenceBox.maxZCoord *= m_fHeightWeight;
 m_SenceBox.minZCoord *= m_fHeightWeight;
 m_CameraInfo.cameraOrg = glm::vec3(m_SenceBox.minXCoord + senceBoxWidth / 
2,
-   m_SenceBox.minYCoord + senceBoxDepth * 
2,
+   m_SenceBox.minYCoord + senceBoxDepth / 
2,
m_SenceBox.minZCoord + senceBoxHeight * 
m_fHeightWeight/ 2);//update the camera position and org
 m_CameraInfo.cameraPos.x = m_CameraInfo.cameraOrg.x + distance * 
cos(veriticalAngle) * sin(horizontalAngle);
 m_CameraInfo.cameraPos.y = m_CameraInfo.cameraOrg.y + distance * 
cos(veriticalAngle) * cos(horizontalAngle);
commit 08c1c406055f689ef70725a13770037d7d420d5b
Author: Markus Mohrhard 
Date:   Sat May 24 10:41:00 2014 +0200

the destructor alreadz clears the vector

Change-Id: I085e3463251a7d73be9724ae56bd6aa3fcf50a34

diff --git a/chart2/source/view/main/GL3DRenderer.cxx 
b/chart2/source/view/main/GL3DRenderer.cxx
index 8112ed1e..f7af953 100644
--- a/chart2/source/view/main/GL3DRenderer.cxx
+++ b/chart2/source/view/main/GL3DRenderer.cxx
@@ -734,7 +734,6 @@ void OpenGL3DRenderer::RenderLine3D(Polygon3DInfo &polygon)
 glDrawArrays(GL_LINE_STRIP, 0, pointList->size());
 glDisableVertexAttribArray(maResources.m_2DVertexID);
 glBindBuffer(GL_ARRAY_BUFFER, 0);
-pointList->clear();
 delete pointList;
 polygon.verticesList.pop_front();
 }
@@ -828,8 +827,6 @@ void OpenGL3DRenderer::RenderPolygon3D(Polygon3DInfo 
&polygon)
 glDisableVertexAttribArray(maResources.m_3DNormalID);
 
 glBindBuffer(GL_ARRAY_BUFFER, 0);
-pointList->clear();
-normalList->clear();
 delete pointList;
 delete normalList;
 polygon.verticesList.pop_front();
commit 2d3d63a3da88373e15c0218a9a417ad20db8b85a
Author: weigao 
Date:   Fri May 23 05:07:38 2014 -0700

fix the calling of polygon API

Change-Id: I14d7e8594dae86830ca05aeb28633feac0a258cc

diff --git a/chart2/source/view/main/3DChartObjects.cxx 
b/chart2/source/view/main/3DChartObjects.cxx
index aa77743..bf8c10b 100644
--- a/chart2/source/view/main/3DChartObjects.cxx
+++ b/chart2/source/view/main/3DChartObjects.cxx
@@ -53,6 +53,7 @@ void Line::render()
 mpRenderer->AddShapePolygon3DObject(0, true, maLineColor.GetColor(), 0, 0, 
mnUniqueId);
 mpRenderer->AddPolygon3DObjectPoint(maPosBegin.x, maPosBegin.y, 
maPosBegin.z);
 mpRenderer->AddPolygon3DObjectPoint(maPosEnd.x, maPosEnd.y, maPosEnd.z);
+mpRenderer->EndAddPolygon3DObjectPoint();
 mpRenderer->EndAddShapePolygon3DObject();
 }
 
@@ -131,6 +132,7 @@ void Rectangle::render()
 mpRenderer->AddPolygon3DObjectNormalPoint(normal.x, normal.y, normal.z);
 mpRenderer->EndAddPolygon3DObjectPoint();
 mpRenderer->EndAddPolygon3DObjectNormalPoint();
+mpRenderer->EndAddShapePolygon3DObject();
 //we should render the edge if the edge color is different from the fill 
color
 if (maColor.GetColor() != maLineColor.GetColor())
 {
@@ -140,8 +142,8 @@ void Rectangle::render()
 mpRenderer->AddPolygon3DObjectPoint(maTopLeft.x, maTopLeft.y, 
maTopLeft.z);
 mpRenderer->AddPolygon3DObjectPoint(bottomLeft.x, bottomLeft.y, 
bottomLeft.z);
 mpRenderer->EndAddPolygon3DObjectPoint();
+mpRenderer->EndAddShapePolygon3DObject();
 }
-mpRenderer->EndAddShapePolygon3DObject();
 }
 
 void Rectangle::setPosition(const glm::vec3& rTopLeft, const glm::vec3& 
rTopRight, const glm::vec3& rBottomRight)
commit 7c603d4a2313de4c870e0db792e2d7fd3dc02efa
Author: weigao 
Date:   Fri May 23 05:03:37 2014 -0700

fix the polygon normal

Change-Id: I89f27b409cf04f98f90bdc61396a8c58ec91d7f7

diff --git a/chart2/source/view/main/GL3DRenderer.cxx 
b/chart2/source/view/main/GL3DRenderer.cxx
index 6f4636b..8112ed1e 100644
--- a/chart2/source/view/main/GL3DRenderer.cxx
+++ b/chart2/s

[Libreoffice-commits] core.git: Branch 'feature/chart-3d-chart2' - chart2/source

2014-05-19 Thread weigao
 chart2/source/view/main/GL3DRenderer.cxx |   14 +++---
 1 file changed, 7 insertions(+), 7 deletions(-)

New commits:
commit 07ef1602dfc48301031dc92d1795a42c2b6d8769
Author: weigao 
Date:   Sun May 18 04:09:13 2014 -0700

add reverse bars code

Change-Id: I2db9edd9015bb10cffe58a44c379db0ab87e7d72

diff --git a/chart2/source/view/main/GL3DRenderer.cxx 
b/chart2/source/view/main/GL3DRenderer.cxx
index bcb87b2..f7867d5 100644
--- a/chart2/source/view/main/GL3DRenderer.cxx
+++ b/chart2/source/view/main/GL3DRenderer.cxx
@@ -340,7 +340,7 @@ void OpenGL3DRenderer::CreateActualRoundedCube(float 
fRadius, int iSubDivY, int
 glm::vec3 actualNormals[3];
 std::vector indeices[5];
 glm::vec3 externSurNormal;
-glm::mat4 corrctCoord = glm::translate(glm::vec3(width / 2.0f, height / 
2.0f, depth / 2.0f - fRadius));
+glm::mat4 corrctCoord = glm::translate(glm::vec3(0.0f, 0.0f, depth / 2.0f 
- fRadius));
 m_RoundBarMesh.topThreshold = topThreshold;
 m_RoundBarMesh.bottomThreshold = bottomThreshold;
 m_RoundBarMesh.iMeshStartIndices = m_Vertices.size();
@@ -964,13 +964,14 @@ void OpenGL3DRenderer::AddShape3DExtrudeObject(bool 
roundedCorner, sal_uInt32 nC
 glm::vec4 DirX = modelMatrix * glm::vec4(1.0, 0.0, 0.0, 0.0);
 glm::vec4 DirY = modelMatrix * glm::vec4(0.0, 1.0, 0.0, 0.0);
 glm::vec4 DirZ = modelMatrix * glm::vec4(0.0, 0.0, 1.0, 0.0);
+float crossZ = glm::normalize(glm::dot(glm::vec3(DirZ), glm::vec3(0.0, 
0.0, 1.0)));
+m_Extrude3DInfo.reverse = (crossZ > 0 ? 0 : 1);
 m_Extrude3DInfo.xScale = glm::length(DirX);
 m_Extrude3DInfo.yScale = glm::length(DirY);
 m_Extrude3DInfo.zScale = glm::length(DirZ);
 glm::mat4 transformMatrixInverse = 
glm::inverse(glm::translate(glm::vec3(tranform)));
-glm::mat4 scaleMatrixInverse = 
glm::inverse(glm::scale(m_Extrude3DInfo.xScale, m_Extrude3DInfo.yScale, 
m_Extrude3DInfo.zScale));
+glm::mat4 scaleMatrixInverse = 
glm::inverse(glm::scale(m_Extrude3DInfo.xScale, m_Extrude3DInfo.yScale, 
m_Extrude3DInfo.zScale * crossZ));
 m_Extrude3DInfo.rotation = transformMatrixInverse * modelMatrix * 
scaleMatrixInverse;
-
 //color
 m_Extrude3DInfo.extrudeColor = getColorAsVector(nColor);
 m_Extrude3DInfo.material.materialColor = 
m_Extrude3DInfo.extrudeColor;//material color seems to be the same for all 
parts, so we use the polygon color
@@ -1006,8 +1007,8 @@ void OpenGL3DRenderer::AddShape3DExtrudeObject(bool 
roundedCorner, sal_uInt32 nC
 m_SenceBox.minXCoord = std::min(m_SenceBox.minXCoord, 
m_Extrude3DInfo.xTransform);
 m_SenceBox.maxYCoord = std::max(m_SenceBox.maxYCoord, 
m_Extrude3DInfo.yTransform + m_Extrude3DInfo.yScale);
 m_SenceBox.minYCoord = std::min(m_SenceBox.minYCoord, 
m_Extrude3DInfo.yTransform );
-m_SenceBox.maxZCoord = std::max(m_SenceBox.maxZCoord, 
m_Extrude3DInfo.zTransform + m_Extrude3DInfo.zScale);
-m_SenceBox.minZCoord = std::min(m_SenceBox.minZCoord, 
m_Extrude3DInfo.zTransform);
+m_SenceBox.maxZCoord = std::max(m_SenceBox.maxZCoord, 
m_Extrude3DInfo.zTransform - (m_Extrude3DInfo.reverse - 1) * 
m_Extrude3DInfo.zScale);
+m_SenceBox.minZCoord = std::min(m_SenceBox.minZCoord, 
m_Extrude3DInfo.zTransform - m_Extrude3DInfo.reverse * m_Extrude3DInfo.zScale);
 }
 
 void OpenGL3DRenderer::EndAddShape3DExtrudeObject()
@@ -1114,7 +1115,7 @@ void OpenGL3DRenderer::RenderExtrudeBottomSurface(const 
Extrude3DInfo& extrude3D
 }
 else
 {
-glm::mat4 topTrans = glm::translate(glm::vec3(0.0, 0.0, actualZTrans));
+glm::mat4 topTrans = glm::translate(glm::vec3(0.0, 0.0, 
-actualZTrans));
 glm::mat4 topScale = glm::scale(xyScale, xyScale, xyScale);
 glm::mat4 aTranslationMatrix = glm::translate(glm::vec3(trans.x, 
trans.y, trans.z));
 m_Model = aTranslationMatrix * extrude3D.rotation * topTrans * 
topScale;
@@ -1326,7 +1327,6 @@ void OpenGL3DRenderer::RenderExtrude3DObject()
 CHECK_GL_ERROR();
 glBindBuffer(GL_UNIFORM_BUFFER, 0);
 }
-extrude3DInfo.reverse = 0;
 if (extrude3DInfo.rounded)
 {
 glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, m_CubeElementBuf);
___
Libreoffice-commits mailing list
libreoffice-comm...@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/libreoffice-commits


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

2014-05-19 Thread weigao
 chart2/source/view/main/GL3DRenderer.cxx |   14 +++---
 1 file changed, 7 insertions(+), 7 deletions(-)

New commits:
commit 43716387ee437811b6b21b93d59171641906674f
Author: weigao 
Date:   Sun May 18 04:09:13 2014 -0700

add reverse bars code

Change-Id: I2db9edd9015bb10cffe58a44c379db0ab87e7d72

diff --git a/chart2/source/view/main/GL3DRenderer.cxx 
b/chart2/source/view/main/GL3DRenderer.cxx
index bcb87b2..f7867d5 100644
--- a/chart2/source/view/main/GL3DRenderer.cxx
+++ b/chart2/source/view/main/GL3DRenderer.cxx
@@ -340,7 +340,7 @@ void OpenGL3DRenderer::CreateActualRoundedCube(float 
fRadius, int iSubDivY, int
 glm::vec3 actualNormals[3];
 std::vector indeices[5];
 glm::vec3 externSurNormal;
-glm::mat4 corrctCoord = glm::translate(glm::vec3(width / 2.0f, height / 
2.0f, depth / 2.0f - fRadius));
+glm::mat4 corrctCoord = glm::translate(glm::vec3(0.0f, 0.0f, depth / 2.0f 
- fRadius));
 m_RoundBarMesh.topThreshold = topThreshold;
 m_RoundBarMesh.bottomThreshold = bottomThreshold;
 m_RoundBarMesh.iMeshStartIndices = m_Vertices.size();
@@ -964,13 +964,14 @@ void OpenGL3DRenderer::AddShape3DExtrudeObject(bool 
roundedCorner, sal_uInt32 nC
 glm::vec4 DirX = modelMatrix * glm::vec4(1.0, 0.0, 0.0, 0.0);
 glm::vec4 DirY = modelMatrix * glm::vec4(0.0, 1.0, 0.0, 0.0);
 glm::vec4 DirZ = modelMatrix * glm::vec4(0.0, 0.0, 1.0, 0.0);
+float crossZ = glm::normalize(glm::dot(glm::vec3(DirZ), glm::vec3(0.0, 
0.0, 1.0)));
+m_Extrude3DInfo.reverse = (crossZ > 0 ? 0 : 1);
 m_Extrude3DInfo.xScale = glm::length(DirX);
 m_Extrude3DInfo.yScale = glm::length(DirY);
 m_Extrude3DInfo.zScale = glm::length(DirZ);
 glm::mat4 transformMatrixInverse = 
glm::inverse(glm::translate(glm::vec3(tranform)));
-glm::mat4 scaleMatrixInverse = 
glm::inverse(glm::scale(m_Extrude3DInfo.xScale, m_Extrude3DInfo.yScale, 
m_Extrude3DInfo.zScale));
+glm::mat4 scaleMatrixInverse = 
glm::inverse(glm::scale(m_Extrude3DInfo.xScale, m_Extrude3DInfo.yScale, 
m_Extrude3DInfo.zScale * crossZ));
 m_Extrude3DInfo.rotation = transformMatrixInverse * modelMatrix * 
scaleMatrixInverse;
-
 //color
 m_Extrude3DInfo.extrudeColor = getColorAsVector(nColor);
 m_Extrude3DInfo.material.materialColor = 
m_Extrude3DInfo.extrudeColor;//material color seems to be the same for all 
parts, so we use the polygon color
@@ -1006,8 +1007,8 @@ void OpenGL3DRenderer::AddShape3DExtrudeObject(bool 
roundedCorner, sal_uInt32 nC
 m_SenceBox.minXCoord = std::min(m_SenceBox.minXCoord, 
m_Extrude3DInfo.xTransform);
 m_SenceBox.maxYCoord = std::max(m_SenceBox.maxYCoord, 
m_Extrude3DInfo.yTransform + m_Extrude3DInfo.yScale);
 m_SenceBox.minYCoord = std::min(m_SenceBox.minYCoord, 
m_Extrude3DInfo.yTransform );
-m_SenceBox.maxZCoord = std::max(m_SenceBox.maxZCoord, 
m_Extrude3DInfo.zTransform + m_Extrude3DInfo.zScale);
-m_SenceBox.minZCoord = std::min(m_SenceBox.minZCoord, 
m_Extrude3DInfo.zTransform);
+m_SenceBox.maxZCoord = std::max(m_SenceBox.maxZCoord, 
m_Extrude3DInfo.zTransform - (m_Extrude3DInfo.reverse - 1) * 
m_Extrude3DInfo.zScale);
+m_SenceBox.minZCoord = std::min(m_SenceBox.minZCoord, 
m_Extrude3DInfo.zTransform - m_Extrude3DInfo.reverse * m_Extrude3DInfo.zScale);
 }
 
 void OpenGL3DRenderer::EndAddShape3DExtrudeObject()
@@ -1114,7 +1115,7 @@ void OpenGL3DRenderer::RenderExtrudeBottomSurface(const 
Extrude3DInfo& extrude3D
 }
 else
 {
-glm::mat4 topTrans = glm::translate(glm::vec3(0.0, 0.0, actualZTrans));
+glm::mat4 topTrans = glm::translate(glm::vec3(0.0, 0.0, 
-actualZTrans));
 glm::mat4 topScale = glm::scale(xyScale, xyScale, xyScale);
 glm::mat4 aTranslationMatrix = glm::translate(glm::vec3(trans.x, 
trans.y, trans.z));
 m_Model = aTranslationMatrix * extrude3D.rotation * topTrans * 
topScale;
@@ -1326,7 +1327,6 @@ void OpenGL3DRenderer::RenderExtrude3DObject()
 CHECK_GL_ERROR();
 glBindBuffer(GL_UNIFORM_BUFFER, 0);
 }
-extrude3DInfo.reverse = 0;
 if (extrude3DInfo.rounded)
 {
 glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, m_CubeElementBuf);
___
Libreoffice-commits mailing list
libreoffice-comm...@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/libreoffice-commits


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

2014-05-12 Thread weigao
 chart2/source/view/main/GL3DRenderer.cxx |3 +--
 sc/source/ui/view/gridwin.cxx|3 +++
 2 files changed, 4 insertions(+), 2 deletions(-)

New commits:
commit 21162eab55e3ae6e21c5cef6f7fd1f35d71aac3e
Author: weigao 
Date:   Mon May 12 22:41:03 2014 +0200

some fixes for positioning problems

Change-Id: I4e970837ebe6867458e4a75c7cc323f8f6b3ecc8

diff --git a/chart2/source/view/main/GL3DRenderer.cxx 
b/chart2/source/view/main/GL3DRenderer.cxx
index 69e961b..686413d 100644
--- a/chart2/source/view/main/GL3DRenderer.cxx
+++ b/chart2/source/view/main/GL3DRenderer.cxx
@@ -1287,7 +1287,7 @@ void OpenGL3DRenderer::RenderTextShape()
 PosVecf3 angle = {0.0f, 0.0f, 0.0f};
 PosVecf3 scale = {1.0, 1.0, 1.0f};
 MoveModelf(trans, angle, scale);
-m_MVP = m_Projection * m_View * m_Model;
+m_MVP = m_3DProjection * m_3DView * m_Model;
 glBindBuffer(GL_ARRAY_BUFFER, m_VertexBuffer);
 CHECK_GL_ERROR();
 glBufferData(GL_ARRAY_BUFFER, sizeof(textInfo.vertex), 
textInfo.vertex, GL_STATIC_DRAW);
@@ -1401,7 +1401,6 @@ void OpenGL3DRenderer::ProcessUnrenderedShape()
 CreateSceneBoxView();
 glViewport(0, 0, m_iWidth, m_iHeight);
 glClearDepth(1.0f);
-glViewport(0, 0, m_iWidth, m_iHeight);
 glClearColor(1.0, 1.0, 1.0, 1.0);
 glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
 //Polygon
commit 3dbd2968025ab51fb961d64093a14f910828f57f
Author: Markus Mohrhard 
Date:   Mon May 12 22:39:50 2014 +0200

only send mouse events if the window is visible

Change-Id: I2564159cd21e068c0893fc96d1c7e90746788f39

diff --git a/sc/source/ui/view/gridwin.cxx b/sc/source/ui/view/gridwin.cxx
index 95ce9fd..d1194bf 100644
--- a/sc/source/ui/view/gridwin.cxx
+++ b/sc/source/ui/view/gridwin.cxx
@@ -1642,6 +1642,9 @@ void ScGridWindow::MouseButtonDown( const MouseEvent& 
rMEvt )
 for(boost::ptr_vector::iterator itr = maChildWindows.begin(),
 itrEnd = maChildWindows.end(); itr != itrEnd; ++itr)
 {
+if(!itr->IsVisible())
+continue;
+
 Point aPoint = itr->GetPosPixel();
 Size aSize = itr->GetSizePixel();
 
___
Libreoffice-commits mailing list
libreoffice-comm...@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/libreoffice-commits