chart2/source/inc/OPropertySet.hxx | 4 +- chart2/source/view/charttypes/BarChart.cxx | 8 ++++ chart2/source/view/main/DummyXShape.cxx | 19 +-------- chart2/source/view/main/OpenGLRender.cxx | 7 --- chart2/source/view/main/OpenGLRender.hxx | 3 - chart2/source/view/main/PropertyMapper.cxx | 40 ++++++++++++++++----- oox/source/drawingml/chart/datasourceconverter.cxx | 28 ++++++++++++++ 7 files changed, 74 insertions(+), 35 deletions(-)
New commits: commit cd033b12cc50f48459b23faf68e96976c5882e7f Author: Markus Mohrhard <markus.mohrh...@collabora.co.uk> Date: Sat Feb 22 05:49:39 2014 +0100 we only support simple labels in the InternalDataProvider, bnc#864396 Change-Id: Ie31c5c73bb5185125fd4493c4e476997e2e9bc63 diff --git a/oox/source/drawingml/chart/datasourceconverter.cxx b/oox/source/drawingml/chart/datasourceconverter.cxx index 6be4710..ea22348 100644 --- a/oox/source/drawingml/chart/datasourceconverter.cxx +++ b/oox/source/drawingml/chart/datasourceconverter.cxx @@ -50,6 +50,34 @@ Reference< XDataSequence > DataSequenceConverter::createDataSequence( const OUSt Reference< XDataSequence > xDataSeq; if( getChartConverter() ) { + // the internal data table does not support complex labels + // this is only supported in Calc!!! + // merge the labels into a single one + if(rRole == "label") + { + mrModel.mnPointCount = std::min<sal_Int32>(mrModel.mnPointCount, 1); + OUStringBuffer aTitle; + bool bFirst = true; + for(DataSequenceModel::AnyMap::const_iterator itr = mrModel.maData.begin(), + itrEnd = mrModel.maData.end(); itr != itrEnd; ++itr) + { + Any aAny = itr->second; + if(aAny.has<OUString>()) + { + if(!bFirst) + aTitle.append(" "); + + aTitle.append(aAny.get<OUString>()); + bFirst = false; + } + } + + if(!bFirst) + { + mrModel.maData.clear(); + mrModel.maData.insert(std::make_pair<sal_Int32, Any>(1, Any(aTitle.makeStringAndClear()))); + } + } xDataSeq = getChartConverter()->createDataSequence( getChartDocument()->getDataProvider(), mrModel ); // set sequen ce role commit 9f2acf24bf5b7d3c7f4482d0d63d9a7ad9d5481d Author: Markus Mohrhard <markus.mohrh...@collabora.co.uk> Date: Fri Feb 21 02:21:47 2014 +0100 we know the size so pre alloc the sequence Change-Id: Icd85ede4898a62833792c68b3e42ad7afa246787 diff --git a/chart2/source/view/charttypes/BarChart.cxx b/chart2/source/view/charttypes/BarChart.cxx index 5c57ecf..941257b 100644 --- a/chart2/source/view/charttypes/BarChart.cxx +++ b/chart2/source/view/charttypes/BarChart.cxx @@ -773,7 +773,15 @@ void BarChart::createShapes() } else //m_nDimension!=3 { + // performance improvement: alloc the sequence before the rendering + // otherwise we have 2 realloc calls drawing::PolyPolygonShape3D aPoly; + aPoly.SequenceX.realloc(1); + aPoly.SequenceY.realloc(1); + aPoly.SequenceZ.realloc(1); + aPoly.SequenceX[0].realloc(5); + aPoly.SequenceY[0].realloc(5); + aPoly.SequenceZ[0].realloc(5); drawing::Position3D aLeftUpperPoint( fLogicX-fLogicBarWidth/2.0,fUpperYValue,fLogicZ ); drawing::Position3D aRightUpperPoint( fLogicX+fLogicBarWidth/2.0,fUpperYValue,fLogicZ ); commit 66b16aec3dc8f48f37179b8f5bc5ceaad0e0beb0 Author: Markus Mohrhard <markus.mohrh...@collabora.co.uk> Date: Fri Feb 21 02:10:23 2014 +0100 replace auto_ptr with boost::scoped_ptr Change-Id: I52299aa147799214c83a87dbc99104d8ba9b6206 diff --git a/chart2/source/inc/OPropertySet.hxx b/chart2/source/inc/OPropertySet.hxx index 2fdb0ba..10ac717 100644 --- a/chart2/source/inc/OPropertySet.hxx +++ b/chart2/source/inc/OPropertySet.hxx @@ -33,7 +33,7 @@ #include <osl/mutex.hxx> #include "charttoolsdllapi.hxx" -#include <memory> +#include <boost/scoped_ptr.hpp> namespace property { @@ -226,7 +226,7 @@ private: ::osl::Mutex & m_rMutex; /// pImpl idiom implementation - ::std::auto_ptr< impl::ImplOPropertySet > m_pImplProperties; + boost::scoped_ptr< impl::ImplOPropertySet > m_pImplProperties; bool m_bSetNewValuesExplicitlyEvenIfTheyEqualDefault; }; commit cf5fbc124e29fb558f423152fa6bd2237de43608 Author: Markus Mohrhard <markus.mohrh...@collabora.co.uk> Date: Fri Feb 21 01:55:38 2014 +0100 try to limit the getPropertyValue calls Change-Id: I70b7a3b5f508ecb89d4e4e43cc4297805e83c9f7 diff --git a/chart2/source/view/main/PropertyMapper.cxx b/chart2/source/view/main/PropertyMapper.cxx index b4c276c..edd74c1 100644 --- a/chart2/source/view/main/PropertyMapper.cxx +++ b/chart2/source/view/main/PropertyMapper.cxx @@ -80,19 +80,41 @@ void PropertyMapper::getValueMap( tPropertyNameMap::const_iterator aIt( rNameMap.begin() ); tPropertyNameMap::const_iterator aEnd( rNameMap.end() ); - for( ; aIt != aEnd; ++aIt ) + uno::Reference< beans::XMultiPropertySet > xMultiPropSet(xSourceProp, uno::UNO_QUERY); + if(xMultiPropSet.is()) { - OUString aTarget = aIt->first; - OUString aSource = aIt->second; - try + uno::Sequence< rtl::OUString > aPropSourceNames(rNameMap.size()); + uno::Sequence< rtl::OUString > aPropTargetNames(rNameMap.size()); + for(sal_Int32 i = 0; aIt != aEnd; ++aIt, ++i) { - uno::Any aAny( xSourceProp->getPropertyValue(aSource) ); - if( aAny.hasValue() ) - rValueMap.insert( tPropertyNameValueMap::value_type( aTarget, aAny ) ); + aPropSourceNames[i] = aIt->first; + aPropTargetNames[i] = aIt->second; } - catch( const uno::Exception& e ) + + uno::Sequence< uno::Any > xValues = xMultiPropSet->getPropertyValues(aPropSourceNames); + + for(sal_Int32 i = 0, n = rNameMap.size(); i < n; ++i) + { + if( xValues[i].hasValue() ) + rValueMap.insert( tPropertyNameValueMap::value_type( aPropTargetNames[i], xValues[i] ) ); + } + } + else + { + for( ; aIt != aEnd; ++aIt ) { - ASSERT_EXCEPTION( e ); + OUString aTarget = aIt->first; + OUString aSource = aIt->second; + try + { + uno::Any aAny( xSourceProp->getPropertyValue(aSource) ); + if( aAny.hasValue() ) + rValueMap.insert( tPropertyNameValueMap::value_type( aTarget, aAny ) ); + } + catch( const uno::Exception& e ) + { + ASSERT_EXCEPTION( e ); + } } } } commit 02b73e7770868bd077c1916457e199f0e57b47ec Author: Markus Mohrhard <markus.mohrh...@collabora.co.uk> Date: Thu Feb 20 04:53:48 2014 +0100 setting width and height always happens together Change-Id: I65ed326ed05474bf81d0323fe3dc61ed0d87cb4e diff --git a/chart2/source/view/main/DummyXShape.cxx b/chart2/source/view/main/DummyXShape.cxx index 5bbc0d2..986589d 100644 --- a/chart2/source/view/main/DummyXShape.cxx +++ b/chart2/source/view/main/DummyXShape.cxx @@ -1452,8 +1452,7 @@ void SAL_CALL DummyChart::setSize( const awt::Size& aSize ) mpWindow->SetSizePixel(Size(width, height)); pWindow->SetSizePixel(Size(width, height)); DummyXShape::setSize(awt::Size(0,0)); - m_GLRender.SetWidth(width); - m_GLRender.SetHeight(height); + m_GLRender.SetSize(width, height); SAL_INFO("chart2.opengl", "DummyChart::GLRender.Width = " << width << ", GLRender.Height = " << height); } diff --git a/chart2/source/view/main/OpenGLRender.cxx b/chart2/source/view/main/OpenGLRender.cxx index 9b4cd8d..bf7bcdd 100755 --- a/chart2/source/view/main/OpenGLRender.cxx +++ b/chart2/source/view/main/OpenGLRender.cxx @@ -723,14 +723,9 @@ OpenGLRender::~OpenGLRender() } // TODO: moggi: that screws up FBO if called after buffers have been created!!!! -void OpenGLRender::SetWidth(int width) +void OpenGLRender::SetSize(int width, int height) { m_iWidth = width; - m_Projection = glm::ortho(0.f, float(m_iWidth), 0.f, float(m_iHeight), -4.f, 3.f); -} - -void OpenGLRender::SetHeight(int height) -{ m_iHeight = height; m_Projection = glm::ortho(0.f, float(m_iWidth), 0.f, float(m_iHeight), -4.f, 3.f); } diff --git a/chart2/source/view/main/OpenGLRender.hxx b/chart2/source/view/main/OpenGLRender.hxx index b91d5f3..8bcfc87 100755 --- a/chart2/source/view/main/OpenGLRender.hxx +++ b/chart2/source/view/main/OpenGLRender.hxx @@ -140,8 +140,7 @@ public: ~OpenGLRender(); int InitOpenGL(GLWindow); int MoveModelf(PosVecf3 trans, PosVecf3 angle, PosVecf3 scale); - void SetWidth(int width); - void SetHeight(int height); + void SetSize(int width, int height); void Release(); #if RENDER_TO_FILE int CreateBMPHeader(sal_uInt8 *bmpHeader, int xsize, int ysize); commit 9eaf6ab9169b539aff219849877acb710cfcc0f6 Author: Markus Mohrhard <markus.mohrh...@collabora.co.uk> Date: Thu Feb 20 04:50:26 2014 +0100 remove some old code Change-Id: I6dde9ae70746a59eef8727f7798b6c58971e045f diff --git a/chart2/source/view/main/DummyXShape.cxx b/chart2/source/view/main/DummyXShape.cxx index 53f233d..5bbc0d2 100644 --- a/chart2/source/view/main/DummyXShape.cxx +++ b/chart2/source/view/main/DummyXShape.cxx @@ -1446,27 +1446,15 @@ DummyChart::~DummyChart() void SAL_CALL DummyChart::setSize( const awt::Size& aSize ) throw( beans::PropertyVetoException, uno::RuntimeException ) { -#if 0 - DummyXShape::setSize(aSize); - mpWindow->SetSizePixel(Size(aSize.Width, aSize.Height)); - pWindow->SetSizePixel(Size(aSize.Width, aSize.Height)); -#else - - SAL_WARN("chart2.opengl", "DummyChart::setSize()---aSize.Width = " << aSize.Width << ", aSize.Height = " << aSize.Height); -// DummyXShape::setSize(aSize); -// mpWindow->SetSizePixel(Size(aSize.Width, aSize.Height)); -// pWindow->SetSizePixel(Size(aSize.Width, aSize.Height)); + SAL_INFO("chart2.opengl", "DummyChart::setSize()---aSize.Width = " << aSize.Width << ", aSize.Height = " << aSize.Height); int width = aSize.Width / OPENGL_SCALE_VALUE; int height = aSize.Height / OPENGL_SCALE_VALUE; - width = (width + 3) & ~3; - height = (height + 3) & ~3; mpWindow->SetSizePixel(Size(width, height)); pWindow->SetSizePixel(Size(width, height)); DummyXShape::setSize(awt::Size(0,0)); m_GLRender.SetWidth(width); m_GLRender.SetHeight(height); - SAL_WARN("chart2.opengl", "DummyChart::GLRender.Width = " << width << ", GLRender.Height = " << height); -#endif + SAL_INFO("chart2.opengl", "DummyChart::GLRender.Width = " << width << ", GLRender.Height = " << height); } void DummyChart::render() _______________________________________________ Libreoffice-commits mailing list libreoffice-comm...@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/libreoffice-commits