[Libreoffice-commits] core.git: 2 commits - chart2/source
Markus Mohrhard
markus.mohrhard at collabora.co.uk
Fri May 16 03:48:20 PDT 2014
chart2/source/model/template/GL3DBarChartType.cxx | 9 +++++++++
chart2/source/model/template/GL3DBarChartType.hxx | 3 +++
chart2/source/view/charttypes/GL3DBarChart.cxx | 9 ++++++++-
chart2/source/view/main/GL3DRenderer.cxx | 18 ++++++++++++------
4 files changed, 32 insertions(+), 7 deletions(-)
New commits:
commit ca52e5ff2c98268ad1965d43746d3c0f9a53fa79
Author: Markus Mohrhard <markus.mohrhard at collabora.co.uk>
Date: Fri May 16 12:43:09 2014 +0200
support property mapping in new 3D charts
Change-Id: I3da71e354ed2595c1f5b2eaeb5fb565205d24de0
diff --git a/chart2/source/model/template/GL3DBarChartType.cxx b/chart2/source/model/template/GL3DBarChartType.cxx
index 4e8868c..e99fe39 100644
--- a/chart2/source/model/template/GL3DBarChartType.cxx
+++ b/chart2/source/model/template/GL3DBarChartType.cxx
@@ -118,6 +118,15 @@ OUString SAL_CALL GL3DBarChartType::getChartType()
return CHART2_SERVICE_NAME_CHARTTYPE_GL3DBAR;
}
+uno::Sequence<OUString> GL3DBarChartType::getSupportedPropertyRoles()
+ throw (::com::sun::star::uno::RuntimeException, std::exception)
+{
+ uno::Sequence< OUString > aPropRoles(1);
+ aPropRoles[0] = "FillColor";
+
+ return aPropRoles;
+}
+
com::sun::star::uno::Reference<com::sun::star::util::XCloneable>
GL3DBarChartType::createClone()
throw (com::sun::star::uno::RuntimeException, std::exception)
diff --git a/chart2/source/model/template/GL3DBarChartType.hxx b/chart2/source/model/template/GL3DBarChartType.hxx
index f60ba4a..c758d46 100644
--- a/chart2/source/model/template/GL3DBarChartType.hxx
+++ b/chart2/source/model/template/GL3DBarChartType.hxx
@@ -25,6 +25,9 @@ public:
GL3DBarChartType( const css::uno::Reference<css::uno::XComponentContext>& xContext );
virtual ~GL3DBarChartType();
+ virtual com::sun::star::uno::Sequence< OUString > SAL_CALL
+ getSupportedPropertyRoles()
+ throw (::com::sun::star::uno::RuntimeException, std::exception) SAL_OVERRIDE;
virtual OUString SAL_CALL
getImplementationName()
throw( ::com::sun::star::uno::RuntimeException, std::exception ) SAL_OVERRIDE;
diff --git a/chart2/source/view/charttypes/GL3DBarChart.cxx b/chart2/source/view/charttypes/GL3DBarChart.cxx
index 3697903..9921d96 100644
--- a/chart2/source/view/charttypes/GL3DBarChart.cxx
+++ b/chart2/source/view/charttypes/GL3DBarChart.cxx
@@ -77,6 +77,8 @@ void GL3DBarChart::create3DShapes(const boost::ptr_vector<VDataSeries>& rDataSer
const VDataSeries& rDataSeries = *itr;
sal_Int32 nPointCount = rDataSeries.getTotalPointCount();
+ bool bMappedFillProperty = rDataSeries.hasPropertyMapping("FillColor");
+
// Create series name text object.
OUString aSeriesName =
DataSeriesHelper::getDataSeriesLabel(
@@ -96,12 +98,17 @@ void GL3DBarChart::create3DShapes(const boost::ptr_vector<VDataSeries>& rDataSer
sal_Int32 nColor = aSeriesColor[nSeriesIndex % SAL_N_ELEMENTS(aSeriesColor)].GetColor();
for(sal_Int32 nIndex = 0; nIndex < nPointCount; ++nIndex)
{
+ if(bMappedFillProperty)
+ {
+ nColor = static_cast<sal_uInt32>(rDataSeries.getValueByProperty(nIndex, "FillColor"));
+ }
+
float nVal = rDataSeries.getYValue(nIndex);
float nXPos = nIndex * (nBarSizeX + nBarDistanceX);
glm::mat4 aScaleMatrix = glm::scale(nBarSizeX, nBarSizeY, nVal);
- glm::mat4 aTranslationMatrix = glm::translate(nXPos, nYPos, static_cast<float>(0));
+ glm::mat4 aTranslationMatrix = glm::translate(nXPos, nYPos, 0.0f);
glm::mat4 aBarPosition = aTranslationMatrix * aScaleMatrix;
maShapes.push_back(new opengl3D::Bar(mpRenderer.get(), aBarPosition, nColor, nId++));
commit 2c7a4e8aff00f88dcc333f607a1c4334b197a4a1
Author: Markus Mohrhard <markus.mohrhard at collabora.co.uk>
Date: Fri May 16 09:31:38 2014 +0200
set the MVP matrix in picking mode
Change-Id: I11d4838a320ada1d454870436e540b2c56fa18fd
diff --git a/chart2/source/view/main/GL3DRenderer.cxx b/chart2/source/view/main/GL3DRenderer.cxx
index c661e33..bcb87b2 100644
--- a/chart2/source/view/main/GL3DRenderer.cxx
+++ b/chart2/source/view/main/GL3DRenderer.cxx
@@ -782,7 +782,8 @@ void OpenGL3DRenderer::RenderPolygon3D(Polygon3DInfo &polygon)
}
else
{
- // TODO: moggi: model matrix
+ glm::mat4 aMVP = m_3DProjection * m_3DView * m_Model;
+ glUniformMatrix4fv(maPickingResources.m_MatrixID, 1, GL_FALSE, &aMVP[0][0]);
}
GLint maVertexID = mbPickingMode ? maPickingResources.m_2DVertexID : maResources.m_3DVertexID;
@@ -1085,7 +1086,8 @@ void OpenGL3DRenderer::RenderExtrudeFlatSurface(const Extrude3DInfo& extrude3D,
}
else
{
- // TODO: moggi: model matrix
+ glm::mat4 aMVP = m_3DProjection * m_3DView * m_Model;
+ glUniformMatrix4fv(maPickingResources.m_MatrixID, 1, GL_FALSE, &aMVP[0][0]);
}
glDrawElements(GL_TRIANGLES, extrude3D.size[surIndex], GL_UNSIGNED_SHORT, reinterpret_cast<GLvoid*>(extrude3D.startIndex[surIndex]));
@@ -1127,7 +1129,8 @@ void OpenGL3DRenderer::RenderExtrudeBottomSurface(const Extrude3DInfo& extrude3D
}
else
{
- // TODO: moggi: model matrix
+ glm::mat4 aMVP = m_3DProjection * m_3DView * m_Model;
+ glUniformMatrix4fv(maPickingResources.m_MatrixID, 1, GL_FALSE, &aMVP[0][0]);
}
glDrawElements(GL_TRIANGLES, extrude3D.size[BOTTOM_SURFACE], GL_UNSIGNED_SHORT, reinterpret_cast<GLvoid*>(extrude3D.startIndex[BOTTOM_SURFACE]));
}
@@ -1170,7 +1173,8 @@ void OpenGL3DRenderer::RenderExtrudeMiddleSurface(const Extrude3DInfo& extrude3D
}
else
{
- // TODO: moggi: model matrix
+ glm::mat4 aMVP = m_3DProjection * m_3DView * m_Model;
+ glUniformMatrix4fv(maPickingResources.m_MatrixID, 1, GL_FALSE, &aMVP[0][0]);
}
glDrawElements(GL_TRIANGLES, extrude3D.size[MIDDLE_SURFACE], GL_UNSIGNED_SHORT, reinterpret_cast<GLvoid*>(extrude3D.startIndex[MIDDLE_SURFACE]));
}
@@ -1214,7 +1218,8 @@ void OpenGL3DRenderer::RenderExtrudeTopSurface(const Extrude3DInfo& extrude3D)
}
else
{
- // TODO: moggi: model matrix
+ glm::mat4 aMVP = m_3DProjection * m_3DView * m_Model;
+ glUniformMatrix4fv(maPickingResources.m_MatrixID, 1, GL_FALSE, &aMVP[0][0]);
}
glDrawElements(GL_TRIANGLES, extrude3D.size[TOP_SURFACE], GL_UNSIGNED_SHORT, reinterpret_cast<GLvoid*>(extrude3D.startIndex[TOP_SURFACE]));
RenderExtrudeFlatSurface(extrude3D, FLAT_BOTTOM_SURFACE);
@@ -1243,7 +1248,8 @@ void OpenGL3DRenderer::RenderNonRoundedBar(const Extrude3DInfo& extrude3D)
}
else
{
- // TODO: moggi: model matrix
+ glm::mat4 aMVP = m_3DProjection * m_3DView * m_Model;
+ glUniformMatrix4fv(maPickingResources.m_MatrixID, 1, GL_FALSE, &aMVP[0][0]);
}
glDrawArrays(GL_TRIANGLES, 0, 36);
}
More information about the Libreoffice-commits
mailing list