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

Kohei Yoshida kohei.yoshida at collabora.com
Fri May 9 07:56:55 PDT 2014


 chart2/source/view/charttypes/GL3DBarChart.cxx |   57 +++++++++++++++++--------
 chart2/source/view/inc/3DChartObjects.hxx      |    8 +++
 chart2/source/view/main/3DChartObjects.cxx     |   28 ++++++++++++
 3 files changed, 76 insertions(+), 17 deletions(-)

New commits:
commit 2c64e08aa3eac795cc0064f1f9dcce55d8e50384
Author: Kohei Yoshida <kohei.yoshida at collabora.com>
Date:   Fri May 9 10:52:32 2014 -0400

    Best effort of blindly placing axes and background objects.
    
    Change-Id: I3a7c77ee8d9c6ff033b112158daec3923ed27034

diff --git a/chart2/source/view/charttypes/GL3DBarChart.cxx b/chart2/source/view/charttypes/GL3DBarChart.cxx
index ce6349e..adce1ee 100644
--- a/chart2/source/view/charttypes/GL3DBarChart.cxx
+++ b/chart2/source/view/charttypes/GL3DBarChart.cxx
@@ -55,6 +55,7 @@ void GL3DBarChart::create3DShapes()
     const float nBarDistanceY = nBarSizeY / 2;
 
     sal_uInt32 nId = 1;
+    float nXEnd = 0.0;
     float nYPos = 0.0;
 
     maShapes.clear();
@@ -98,11 +99,46 @@ void GL3DBarChart::create3DShapes()
             maShapes.push_back(new opengl3D::Bar(mpRenderer.get(), aBarPosition, nColor, nId++));
         }
 
+        float nThisXEnd = nPointCount * (nBarSizeX + nBarDistanceX);
+        if (nXEnd < nThisXEnd)
+            nXEnd = nThisXEnd;
+
         ++nSeriesIndex;
     }
 
     nYPos += nBarSizeY + nBarDistanceY;
 
+    // X axis
+    maShapes.push_back(new opengl3D::Line(mpRenderer.get(), nId++));
+    opengl3D::Line* pAxis = static_cast<opengl3D::Line*>(&maShapes.back());
+    glm::vec3 aBegin;
+    aBegin.y = nYPos;
+    glm::vec3 aEnd = aBegin;
+    aEnd.x = nXEnd;
+    pAxis->setPosition(aBegin, aEnd);
+    pAxis->setLineColor(COL_WHITE);
+
+    // Y axis
+    maShapes.push_back(new opengl3D::Line(mpRenderer.get(), nId++));
+    pAxis = static_cast<opengl3D::Line*>(&maShapes.back());
+    aBegin.x = aBegin.y = 0;
+    aEnd = aBegin;
+    aEnd.y = nYPos;
+    pAxis->setPosition(aBegin, aEnd);
+    pAxis->setLineColor(COL_WHITE);
+
+    // Chart background.
+    maShapes.push_back(new opengl3D::Rectangle(mpRenderer.get(), nId++));
+    opengl3D::Rectangle* pRect = static_cast<opengl3D::Rectangle*>(&maShapes.back());
+    glm::vec3 aTopLeft;
+    glm::vec3 aTopRight = aTopLeft;
+    aTopRight.x = nXEnd;
+    glm::vec3 aBottomRight = aTopRight;
+    aBottomRight.y = nYPos;
+    pRect->setPosition(aTopLeft, aTopRight, aBottomRight);
+    pRect->setFillColor(COL_BLACK);
+    pRect->setLineColor(COL_WHITE);
+
     // Create category texts along X-axis at the bottom.
     uno::Sequence<OUString> aCats = mrCatProvider.getSimpleCategories();
     for (sal_Int32 i = 0; i < aCats.getLength(); ++i)
@@ -112,12 +148,11 @@ void GL3DBarChart::create3DShapes()
         maShapes.push_back(new opengl3D::Text(mpRenderer.get(), aCats[i], nId++));
         opengl3D::Text* p = static_cast<opengl3D::Text*>(&maShapes.back());
         Size aTextSize = p->getSize();
-        glm::vec3 aTopLeft;
         aTopLeft.x = nXPos;
         aTopLeft.y = nYPos;
-        glm::vec3 aTopRight = aTopLeft;
+        aTopRight = aTopLeft;
         aTopRight.x += aTextSize.getWidth();
-        glm::vec3 aBottomRight = aTopRight;
+        aBottomRight = aTopRight;
         aBottomRight.y += aTextSize.getHeight();
         p->setPosition(aTopLeft, aTopRight, aBottomRight);
     }
diff --git a/chart2/source/view/inc/3DChartObjects.hxx b/chart2/source/view/inc/3DChartObjects.hxx
index e93d656..8571fd8 100644
--- a/chart2/source/view/inc/3DChartObjects.hxx
+++ b/chart2/source/view/inc/3DChartObjects.hxx
@@ -53,6 +53,9 @@ public:
 
     virtual void render() SAL_OVERRIDE;
 
+    void setPosition(const glm::vec3& rBegin, const glm::vec3& rEnd);
+    void setLineColor(const Color& rColor);
+
 private:
     glm::vec3 maPosBegin;
     glm::vec3 maPosEnd;
@@ -81,6 +84,11 @@ class Rectangle : public Renderable3DObject
 public:
     Rectangle(OpenGL3DRenderer* pRenderer, sal_uInt32 nId);
     virtual void render() SAL_OVERRIDE;
+
+    void setPosition(const glm::vec3& rTopLeft, const glm::vec3& rTopRight, const glm::vec3& rBottomRight);
+    void setFillColor(const Color& rColor);
+    void setLineColor(const Color& rColor);
+
 private:
     glm::vec3 maTopLeft;
     glm::vec3 maTopRight;
diff --git a/chart2/source/view/main/3DChartObjects.cxx b/chart2/source/view/main/3DChartObjects.cxx
index 820e79d..6cad265 100644
--- a/chart2/source/view/main/3DChartObjects.cxx
+++ b/chart2/source/view/main/3DChartObjects.cxx
@@ -53,6 +53,17 @@ void Line::render()
     mpRenderer->EndAddShapePolygon3DObject();
 }
 
+void Line::setPosition(const glm::vec3& rBegin, const glm::vec3& rEnd)
+{
+    maPosBegin = rBegin;
+    maPosEnd = rEnd;
+}
+
+void Line::setLineColor(const Color& rColor)
+{
+    maLineColor = rColor;
+}
+
 Text::Text(OpenGL3DRenderer* pRenderer, const OUString& rStr, sal_uInt32 nId):
     Renderable3DObject(pRenderer, nId)
 {
@@ -124,6 +135,23 @@ void Rectangle::render()
     mpRenderer->EndAddShapePolygon3DObject();
 }
 
+void Rectangle::setPosition(const glm::vec3& rTopLeft, const glm::vec3& rTopRight, const glm::vec3& rBottomRight)
+{
+    maTopLeft = rTopLeft;
+    maTopRight = rTopRight;
+    maBottomRight = rBottomRight;
+}
+
+void Rectangle::setFillColor(const Color& rColor)
+{
+    maColor = rColor;
+}
+
+void Rectangle::setLineColor(const Color& rColor)
+{
+    maLineColor = rColor;
+}
+
 Camera::Camera(OpenGL3DRenderer* pRenderer):
     Renderable3DObject(pRenderer, 0),
     maPos(10,10,-10),
commit aa26f8b6c79783447931d01e6c69eed07599f37f
Author: Kohei Yoshida <kohei.yoshida at collabora.com>
Date:   Fri May 9 10:09:24 2014 -0400

    No need to store these text objects separately.
    
    Change-Id: I0ee63480fa0f15f42c81818d89ff5b5a3407ece4

diff --git a/chart2/source/view/charttypes/GL3DBarChart.cxx b/chart2/source/view/charttypes/GL3DBarChart.cxx
index e65f07e..ce6349e 100644
--- a/chart2/source/view/charttypes/GL3DBarChart.cxx
+++ b/chart2/source/view/charttypes/GL3DBarChart.cxx
@@ -55,9 +55,6 @@ void GL3DBarChart::create3DShapes()
     const float nBarDistanceY = nBarSizeY / 2;
 
     sal_uInt32 nId = 1;
-
-    std::vector<opengl3D::Text*> aYAxisTexts;
-
     float nYPos = 0.0;
 
     maShapes.clear();
@@ -76,8 +73,8 @@ void GL3DBarChart::create3DShapes()
             DataSeriesHelper::getDataSeriesLabel(
                 rDataSeries.getModel(), mxChartType->getRoleOfSequenceForSeriesLabel());
 
-        aYAxisTexts.push_back(new opengl3D::Text(mpRenderer.get(), aSeriesName, nId++));
-        opengl3D::Text* p = aYAxisTexts.back();
+        maShapes.push_back(new opengl3D::Text(mpRenderer.get(), aSeriesName, nId++));
+        opengl3D::Text* p = static_cast<opengl3D::Text*>(&maShapes.back());
         Size aTextSize = p->getSize();
         glm::vec3 aTopLeft, aTopRight, aBottomRight;
         aTopLeft.x = aTextSize.getWidth() * -1.0;
@@ -124,15 +121,6 @@ void GL3DBarChart::create3DShapes()
         aBottomRight.y += aTextSize.getHeight();
         p->setPosition(aTopLeft, aTopRight, aBottomRight);
     }
-
-    {
-        // Transfer all Y-axis text objects to the shape collection.
-        std::vector<opengl3D::Text*>::iterator itText = aYAxisTexts.begin(), itTextEnd = aYAxisTexts.end();
-        for (; itText != itTextEnd; ++itText)
-            maShapes.push_back(*itText);
-    }
-
-    aYAxisTexts.clear();
 }
 
 void GL3DBarChart::render()


More information about the Libreoffice-commits mailing list