diff options
Diffstat (limited to 'chart2/source/tools/TitleHelper.cxx')
-rw-r--r-- | chart2/source/tools/TitleHelper.cxx | 42 |
1 files changed, 37 insertions, 5 deletions
diff --git a/chart2/source/tools/TitleHelper.cxx b/chart2/source/tools/TitleHelper.cxx index 24e55ccfc90e..fe10c92e78cc 100644 --- a/chart2/source/tools/TitleHelper.cxx +++ b/chart2/source/tools/TitleHelper.cxx @@ -36,6 +36,7 @@ #include "AxisHelper.hxx" #include "DiagramHelper.hxx" #include <com/sun/star/chart2/XChartDocument.hpp> +#include <rtl/ustrbuf.hxx> //............................................................................. namespace chart @@ -191,7 +192,7 @@ uno::Reference< XTitle > TitleHelper::createTitle( switch( eTitleType ) { case TitleHelper::SUB_TITLE: - chart::TitleHelper::setCompleteString( + TitleHelper::setCompleteString( rTitleText, xTitle, xContext, & fDefaultCharHeightSub ); break; case TitleHelper::X_AXIS_TITLE: @@ -201,11 +202,11 @@ uno::Reference< XTitle > TitleHelper::createTitle( case TitleHelper::TITLE_AT_STANDARD_Y_AXIS_POSITION: case TitleHelper::SECONDARY_X_AXIS_TITLE: case TitleHelper::SECONDARY_Y_AXIS_TITLE: - chart::TitleHelper::setCompleteString( + TitleHelper::setCompleteString( rTitleText, xTitle, xContext, & fDefaultCharHeightAxis ); break; default: - chart::TitleHelper::setCompleteString( rTitleText, xTitle, xContext ); + TitleHelper::setCompleteString( rTitleText, xTitle, xContext ); break; } @@ -269,13 +270,44 @@ void TitleHelper::setCompleteString( const rtl::OUString& rNewText if(!xTitle.is()) return; + rtl::OUString aNewText = rNewText; + + bool bStacked = false; + uno::Reference< beans::XPropertySet > xTitleProperties( xTitle, uno::UNO_QUERY ); + if( xTitleProperties.is() ) + xTitleProperties->getPropertyValue( C2U( "StackCharacters" ) ) >>= bStacked; + + if( bStacked ) + { + //#i99841# remove linebreaks that were added for vertical stacking + rtl::OUStringBuffer aUnstackedStr; + rtl::OUStringBuffer aSource(rNewText); + + bool bBreakIgnored = false; + sal_Int32 nLen = rNewText.getLength(); + for( sal_Int32 nPos = 0; nPos < nLen; ++nPos ) + { + sal_Unicode aChar = aSource.charAt( nPos ); + if( aChar != '\n' ) + { + aUnstackedStr.append( aChar ); + bBreakIgnored = false; + } + else if( aChar == '\n' && bBreakIgnored ) + aUnstackedStr.append( aChar ); + else + bBreakIgnored = true; + } + aNewText = aUnstackedStr.makeStringAndClear(); + } + uno::Sequence< uno::Reference< XFormattedString > > aNewStringList(1); uno::Sequence< uno::Reference< XFormattedString > > aOldStringList = xTitle->getText(); if( aOldStringList.getLength() ) { aNewStringList[0].set( aOldStringList[0] ); - aNewStringList[0]->setString( rNewText ); + aNewStringList[0]->setString( aNewText ); } else { @@ -286,7 +318,7 @@ void TitleHelper::setCompleteString( const rtl::OUString& rNewText if(xFormattedString.is()) { - xFormattedString->setString( rNewText ); + xFormattedString->setString( aNewText ); aNewStringList[0].set( xFormattedString ); if( pDefaultCharHeight != 0 ) { |