chart2/source/view/main/DummyXShape.cxx | 22 +++++++++-- chart2/source/view/main/OpenGLRender.cxx | 49 +++++++++++++------------ chart2/source/view/main/OpenGLRender.hxx | 12 +----- chart2/source/view/main/OpenglShapeFactory.cxx | 1 4 files changed, 50 insertions(+), 34 deletions(-)
New commits: commit 3d8d018861caf9a0aa56abbff053aec28f92c536 Author: Markus Mohrhard <markus.mohrh...@collabora.co.uk> Date: Wed Jan 15 21:30:57 2014 +0100 fix z ordering problems Change-Id: Ia1c9ea521029f871c8b0bdfd078d986d3e0f40e8 diff --git a/chart2/source/view/main/OpenGLRender.cxx b/chart2/source/view/main/OpenGLRender.cxx index 7340b37..a73b39a 100644 --- a/chart2/source/view/main/OpenGLRender.cxx +++ b/chart2/source/view/main/OpenGLRender.cxx @@ -572,7 +572,7 @@ int OpenGLRender::SetLine2DShapePoint(float x, float y, int listLength) float actualY = (y / OPENGL_SCALE_VALUE); m_Line2DPointList.push_back(actualX); m_Line2DPointList.push_back(actualY); - m_Line2DPointList.push_back(0); + m_Line2DPointList.push_back(m_fZStep); if (m_Line2DPointList.size() == size_t(listLength * 3)) { @@ -584,6 +584,7 @@ int OpenGLRender::SetLine2DShapePoint(float x, float y, int listLength) int OpenGLRender::RenderLine2FBO(int) { + m_fZStep += 0.001; CHECK_GL_ERROR(); glLineWidth(m_fLineWidth); size_t listNum = m_Line2DShapePointList.size(); @@ -1282,7 +1283,7 @@ int OpenGLRender::RenderBubble2FBO(int) { //move the circle to the pos, and scale using the xScale and Y scale Bubble2DPointList &pointList = m_Bubble2DShapePointList.front(); - PosVecf3 trans = {pointList.x, pointList.y, 0.0f}; + PosVecf3 trans = {pointList.x, pointList.y, m_fZStep}; PosVecf3 angle = {0.0f, 0.0f, 0.0f}; PosVecf3 scale = {pointList.xScale, pointList.yScale, 1.0f}; MoveModelf(trans, angle, scale); commit ffe0d1748cd09538cb20dc6e35cca5fa4fa29d9a Author: Markus Mohrhard <markus.mohrh...@collabora.co.uk> Date: Wed Jan 15 21:30:41 2014 +0100 finally fix rectangle rendering Change-Id: Iaf0467ce4d9eb12ac3e84c2f1059b859ee9c4de1 diff --git a/chart2/source/view/main/OpenGLRender.cxx b/chart2/source/view/main/OpenGLRender.cxx index 5b60108..7340b37 100644 --- a/chart2/source/view/main/OpenGLRender.cxx +++ b/chart2/source/view/main/OpenGLRender.cxx @@ -211,13 +211,6 @@ static GLfloat coordVertices[] = { 0.0f, 1.0f, }; -static GLfloat square2DVertices[] = { - -1.0f, -1.0f, - 1.0f, -1.0f, - 1.0f, 1.0f, - -1.0f, 1.0f -}; - #if 0 static const GLfloat g_vertex_buffer_data[] = { -1.0f,-1.0f,-1.0f, @@ -1346,34 +1339,46 @@ int OpenGLRender::RectangleShapePoint(float x, float y, float directionX, float //check whether to create the circle data float actualX = x / OPENGL_SCALE_VALUE; float actualY = y / OPENGL_SCALE_VALUE; - RectanglePointList aRectangleList.x = actualX; - aRectangleList.y = actualY; - aRectangleList.z = m_fZStep; - aRectangleList.xScale = directionX / OPENGL_SCALE_VALUE; - aRectangleList.yScale = directionY / OPENGL_SCALE_VALUE; - - m_RectangleShapePointList.push_back(aRectangleList); + float actualSizeX = directionX / OPENGL_SCALE_VALUE; + float actualSizeY = directionY / OPENGL_SCALE_VALUE; + RectanglePointList aRectangle; + + aRectangle.points[0] = actualX; + aRectangle.points[1] = actualY; + aRectangle.points[2] = m_fZStep; + aRectangle.points[3] = actualX + actualSizeX; + aRectangle.points[4] = actualX; + aRectangle.points[5] = m_fZStep; + aRectangle.points[6] = actualX + actualSizeX; + aRectangle.points[7] = actualX + actualSizeY; + aRectangle.points[8] = m_fZStep; + aRectangle.points[9] = actualX; + aRectangle.points[10] = actualX + actualSizeY; + aRectangle.points[11] = m_fZStep; + + m_RectangleShapePointList.push_back(aRectangle); return 0; } int OpenGLRender::RenderRectangleShape() { + m_fZStep += 0.001; size_t listNum = m_RectangleShapePointList.size(); for (size_t i = 0; i < listNum; i++) { //move the circle to the pos, and scale using the xScale and Y scale RectanglePointList &pointList = m_RectangleShapePointList.front(); - PosVecf3 trans = {pointList.x, pointList.y, pointList.z}; + PosVecf3 trans = {0, 0, 0}; PosVecf3 angle = {0.0f, 0.0f, 0.0f}; - PosVecf3 scale = {pointList.xScale, pointList.yScale, 1.0f}; + PosVecf3 scale = {1, 1, 1.0f}; MoveModelf(trans, angle, scale); m_MVP = m_Projection * m_View * m_Model; //render to fbo //fill vertex buffer glBindBuffer(GL_ARRAY_BUFFER, m_VertexBuffer); - glBufferData(GL_ARRAY_BUFFER, sizeof(square2DVertices), square2DVertices, GL_STATIC_DRAW); + glBufferData(GL_ARRAY_BUFFER, sizeof(pointList.points), pointList.points, GL_STATIC_DRAW); glBindBuffer(GL_ARRAY_BUFFER, m_ColorBuffer); glBufferData(GL_ARRAY_BUFFER, sizeof(m_BackgroundColor), m_BackgroundColor, GL_STATIC_DRAW); diff --git a/chart2/source/view/main/OpenGLRender.hxx b/chart2/source/view/main/OpenGLRender.hxx index 68d0982..815d7d3 100644 --- a/chart2/source/view/main/OpenGLRender.hxx +++ b/chart2/source/view/main/OpenGLRender.hxx @@ -84,14 +84,10 @@ typedef struct Bubble2DCircle int bufLen; }Bubble2DCircle; -typedef struct RectanglePointList +struct RectanglePointList { - float x; - float y; - float z; - float xScale; - float yScale; -}RectanglePointList; + float points[12]; +}; typedef struct TextInfo { commit b352ef579930f654734fe6d9219cf4af43b8c0bf Author: Markus Mohrhard <markus.mohrh...@collabora.co.uk> Date: Wed Jan 15 21:03:48 2014 +0100 does not need to be a member variable Change-Id: Ib5b61f724c9df974d02875cde76079094cb59c38 diff --git a/chart2/source/view/main/OpenGLRender.cxx b/chart2/source/view/main/OpenGLRender.cxx index d540fe2..5b60108 100644 --- a/chart2/source/view/main/OpenGLRender.cxx +++ b/chart2/source/view/main/OpenGLRender.cxx @@ -940,7 +940,6 @@ OpenGLRender::OpenGLRender(uno::Reference< drawing::XShape > xTarget): memset(&m_Bubble2DPointList, 0, sizeof(m_Bubble2DPointList)); memset(&m_Bubble2DCircle, 0, sizeof(m_Bubble2DCircle)); memset(&m_TextInfo, 0, sizeof(TextInfo)); - memset(&m_RectangleList, 0, sizeof(RectanglePointList)); m_iArbMultisampleFormat = 0; @@ -1347,13 +1346,13 @@ int OpenGLRender::RectangleShapePoint(float x, float y, float directionX, float //check whether to create the circle data float actualX = x / OPENGL_SCALE_VALUE; float actualY = y / OPENGL_SCALE_VALUE; - m_RectangleList.x = actualX; - m_RectangleList.y = actualY; - m_RectangleList.z = m_fZStep; - m_RectangleList.xScale = directionX / OPENGL_SCALE_VALUE; - m_RectangleList.yScale = directionY / OPENGL_SCALE_VALUE; + RectanglePointList aRectangleList.x = actualX; + aRectangleList.y = actualY; + aRectangleList.z = m_fZStep; + aRectangleList.xScale = directionX / OPENGL_SCALE_VALUE; + aRectangleList.yScale = directionY / OPENGL_SCALE_VALUE; - m_RectangleShapePointList.push_back(m_RectangleList); + m_RectangleShapePointList.push_back(aRectangleList); return 0; } diff --git a/chart2/source/view/main/OpenGLRender.hxx b/chart2/source/view/main/OpenGLRender.hxx index 5a28644..68d0982 100644 --- a/chart2/source/view/main/OpenGLRender.hxx +++ b/chart2/source/view/main/OpenGLRender.hxx @@ -278,8 +278,6 @@ private: float m_fAlpha; - RectanglePointList m_RectangleList; - std::list <RectanglePointList> m_RectangleShapePointList; // add for text TextInfo m_TextInfo; commit d2d2968067102e8a75e75094ba510161bfda550f Author: Markus Mohrhard <markus.mohrh...@collabora.co.uk> Date: Tue Jan 14 16:19:14 2014 +0100 first fixes for rectangle rendering Change-Id: I7705f8fd0472ad482d2292438d264eb0b641758e diff --git a/chart2/source/view/main/DummyXShape.cxx b/chart2/source/view/main/DummyXShape.cxx index 64b1692..917136d 100644 --- a/chart2/source/view/main/DummyXShape.cxx +++ b/chart2/source/view/main/DummyXShape.cxx @@ -568,11 +568,28 @@ DummyRectangle::DummyRectangle(const awt::Size& rSize, const awt::Point& rPoint, void DummyRectangle::render() { - /* SAL_WARN("chart2.opengl", "render DummyRectangle"); debugProperties(maProperties); DummyChart* pChart = getRootShape(); - std::map< OUString, uno::Any >::const_iterator itr = maProperties.find("FillColor"); + std::map< OUString, uno::Any >::const_iterator itr = maProperties.find("Invisible"); + if(itr != maProperties.end()) + { + SAL_WARN("chart2.opengl", "invisble"); + return; + } + + itr = maProperties.find("FillStyle"); + if(itr != maProperties.end()) + { + drawing::FillStyle eStyle = itr->second.get<drawing::FillStyle>(); + if(eStyle == drawing::FillStyle_NONE) + { + SAL_WARN("chart2.opengl", "no fill style"); + return; + } + } + + itr = maProperties.find("FillColor"); if(itr != maProperties.end()) { uno::Any co = itr->second; @@ -593,7 +610,6 @@ void DummyRectangle::render() } pChart->m_GLRender.RectangleShapePoint(maPosition.X, maPosition.Y, maSize.Width, maSize.Height); pChart->m_GLRender.RenderRectangleShape(); - */ } DummyText::DummyText(const OUString& rText, const tNameSequence& rNames, diff --git a/chart2/source/view/main/OpenGLRender.cxx b/chart2/source/view/main/OpenGLRender.cxx index 9bd3e49..d540fe2 100644 --- a/chart2/source/view/main/OpenGLRender.cxx +++ b/chart2/source/view/main/OpenGLRender.cxx @@ -1612,8 +1612,8 @@ int OpenGLRender::SetArea2DShapePoint(float x, float y, int listLength) { m_Area2DPointList.reserve(listLength); } - float actualX = (x / OPENGL_SCALE_VALUE) - ((float)m_iWidth / 2); - float actualY = (y / OPENGL_SCALE_VALUE) - ((float)m_iHeight / 2); + float actualX = (x / OPENGL_SCALE_VALUE); + float actualY = (y / OPENGL_SCALE_VALUE); m_Area2DPointList.push_back(actualX); m_Area2DPointList.push_back(actualY); m_Area2DPointList.push_back(m_fZStep); diff --git a/chart2/source/view/main/OpenglShapeFactory.cxx b/chart2/source/view/main/OpenglShapeFactory.cxx index dce9695..d7ab33b 100644 --- a/chart2/source/view/main/OpenglShapeFactory.cxx +++ b/chart2/source/view/main/OpenglShapeFactory.cxx @@ -368,6 +368,7 @@ uno::Reference< drawing::XShape > OpenglShapeFactory::createInvisibleRectangle( , const awt::Size& rSize ) { dummy::DummyRectangle* pRectangle = new dummy::DummyRectangle(rSize); + pRectangle->setPropertyValue("Invisible", uno::makeAny(sal_True)); xTarget->add(pRectangle); return pRectangle; } _______________________________________________ Libreoffice-commits mailing list libreoffice-comm...@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/libreoffice-commits