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

Markus Mohrhard markus.mohrhard at googlemail.com
Sat Jan 4 20:07:56 PST 2014


 chart2/source/view/inc/DummyXShape.hxx         |    6 +++--
 chart2/source/view/main/DummyXShape.cxx        |   28 ++++++++++++++++++++++-
 chart2/source/view/main/OpenGLRender.cxx       |   30 ++-----------------------
 chart2/source/view/main/OpenGLRender.hxx       |    2 -
 chart2/source/view/main/OpenglShapeFactory.cxx |    2 -
 5 files changed, 35 insertions(+), 33 deletions(-)

New commits:
commit 2899198a720c1254ba862ce8615054800dbcfd71
Author: Markus Mohrhard <markus.mohrhard at googlemail.com>
Date:   Sun Jan 5 07:04:18 2014 +0100

    integrate Area2D rendering path into OpenGL backend
    
    Change-Id: Iaf226c4f60ba497defb6e2dbd127e78d3fe09517

diff --git a/chart2/source/view/inc/DummyXShape.hxx b/chart2/source/view/inc/DummyXShape.hxx
index 0676cb9..71a8b20 100644
--- a/chart2/source/view/inc/DummyXShape.hxx
+++ b/chart2/source/view/inc/DummyXShape.hxx
@@ -305,10 +305,12 @@ private:
 class DummyArea2D : public DummyXShape
 {
 public:
-    DummyArea2D(const drawing::PolyPolygonShape3D& rShape);
+    DummyArea2D(const drawing::PointSequenceSequence& rShape);
+
+    virtual void render() SAL_OVERRIDE;
 
 private:
-    drawing::PolyPolygonShape3D maShapes;
+    drawing::PointSequenceSequence maShapes;
 };
 
 class DummySymbol2D : public DummyXShape
diff --git a/chart2/source/view/main/DummyXShape.cxx b/chart2/source/view/main/DummyXShape.cxx
index 8e8d2c8..f17dc2a 100644
--- a/chart2/source/view/main/DummyXShape.cxx
+++ b/chart2/source/view/main/DummyXShape.cxx
@@ -357,11 +357,37 @@ DummyArea3D::DummyArea3D(const drawing::PolyPolygonShape3D& rShape, double fDept
 {
 }
 
-DummyArea2D::DummyArea2D(const drawing::PolyPolygonShape3D& rShape):
+DummyArea2D::DummyArea2D(const drawing::PointSequenceSequence& rShape):
     maShapes(rShape)
 {
 }
 
+void DummyArea2D::render()
+{
+    DummyChart* pChart = getRootShape();
+    sal_Int32 nPointssCount = maShapes.getLength();
+    for(sal_Int32 i = 0; i < nPointssCount; i++)
+    {
+        const com::sun::star::uno::Sequence<com::sun::star::awt::Point>& points = maShapes[i];
+        sal_Int32 nPointsCount = points.getLength();
+        for(sal_Int32 j = 0; j < nPointsCount; j++)
+        {
+            const com::sun::star::awt::Point& p = points[j];
+            pChart->m_GLRender.SetArea2DShapePoint((float)p.X, (float)p.Y, nPointsCount);
+        }
+    }
+
+    std::map<OUString, uno::Any>::const_iterator itr = maProperties.find(UNO_NAME_FILLCOLOR);
+    if(itr != maProperties.end())
+    {
+        sal_Int32 nColor = itr->second.get<sal_Int32>();
+        pChart->m_GLRender.SetColor(nColor);
+    }
+
+    //render the shape
+    pChart->m_GLRender.RenderArea2DShape();
+}
+
 DummySymbol2D::DummySymbol2D(const drawing::Position3D& rPos, const drawing::Direction3D& rSize,
         sal_Int32 nStandardSymbol, sal_Int32 , sal_Int32 ):
     mnStandardSymbol(nStandardSymbol)
diff --git a/chart2/source/view/main/OpenGLRender.cxx b/chart2/source/view/main/OpenGLRender.cxx
index 5d5b2cc..fdc5a16 100644
--- a/chart2/source/view/main/OpenGLRender.cxx
+++ b/chart2/source/view/main/OpenGLRender.cxx
@@ -1520,33 +1520,7 @@ int OpenGLRender::CreateBMPHeaderRGBA(sal_uInt8 *bmpHeader, int xsize, int ysize
     return 0;
 
 }
-int OpenGLRender::ProcessArea2D(uno::Reference< drawing::XShape > &xShape)
-{
-    //get point from shape
-    uno::Reference< beans::XPropertySet > xProp( xShape, uno::UNO_QUERY );
-    com::sun::star::uno::Sequence<drawing::PointSequence> pointss;
-    com::sun::star::uno::Any value = xProp->getPropertyValue(UNO_NAME_POLYPOLYGON);
-    value >>= pointss;
-    int pointsscount = pointss.getLength();
-
-    uno::Any co =  xProp->getPropertyValue(UNO_NAME_FILLCOLOR);
-    long *colorvalue = (long*)co.getValue();
-    SetColor(*colorvalue);
-    for(int i = 0; i < pointsscount; i++)
-    {
-        com::sun::star::uno::Sequence<com::sun::star::awt::Point> points = pointss[i];
-        int pointscount = points.getLength();
-        for(int j = 0; j < pointscount; j++)
-        {
-            com::sun::star::awt::Point p = points[j];
-            SetArea2DShapePoint((float)p.X, (float)p.Y, pointscount);
-        }
-    }
-    //render the shape
-    RenderArea2DShape();
-    m_fZStep += 0.01f;
-    return 0;
-}
+
 int OpenGLRender::SetArea2DShapePoint(float x, float y, int listLength)
 {
     if (!m_Area2DPointList.pointBuf)
@@ -1576,6 +1550,7 @@ int OpenGLRender::SetArea2DShapePoint(float x, float y, int listLength)
     }
     return 0;
 }
+
 int OpenGLRender::RenderArea2DShape()
 {
     glDisable(GL_MULTISAMPLE);
@@ -1617,6 +1592,7 @@ int OpenGLRender::RenderArea2DShape()
         free(pointList.pointBuf);
     }
     glEnable(GL_MULTISAMPLE);
+    m_fZStep += 0.01f;
     return 0;
 }
 
diff --git a/chart2/source/view/main/OpenGLRender.hxx b/chart2/source/view/main/OpenGLRender.hxx
index 88adfe9..d7ebfe1 100644
--- a/chart2/source/view/main/OpenGLRender.hxx
+++ b/chart2/source/view/main/OpenGLRender.hxx
@@ -185,8 +185,6 @@ public:
     int RenderTextShape();
 
     int SetArea2DShapePoint(float x, float y, int listLength);
-    int ProcessArea2D(com::sun::star::uno::Reference<
-            com::sun::star::drawing::XShape > &xShape);
     int RenderArea2DShape();
 private:
     GLint LoadShaders(const char *vertexShader,const char *fragmentShader);
diff --git a/chart2/source/view/main/OpenglShapeFactory.cxx b/chart2/source/view/main/OpenglShapeFactory.cxx
index f22dc84..7008777 100644
--- a/chart2/source/view/main/OpenglShapeFactory.cxx
+++ b/chart2/source/view/main/OpenglShapeFactory.cxx
@@ -257,7 +257,7 @@ uno::Reference< drawing::XShape >
         OpenglShapeFactory::createArea2D( const uno::Reference< drawing::XShapes >& xTarget
                     , const drawing::PolyPolygonShape3D& rPolyPolygon )
 {
-    dummy::DummyArea2D* pArea = new dummy::DummyArea2D(rPolyPolygon);
+    dummy::DummyArea2D* pArea = new dummy::DummyArea2D(PolyToPointSequence(rPolyPolygon));
     xTarget->add(pArea);
     return pArea;
 }


More information about the Libreoffice-commits mailing list