summaryrefslogtreecommitdiff
path: root/vcl
diff options
context:
space:
mode:
authorNoel Grandin <noel.grandin@collabora.co.uk>2021-07-21 13:35:17 +0200
committerNoel Grandin <noel.grandin@collabora.co.uk>2021-07-21 20:08:30 +0200
commita7f05c009aad9fb8c8872312929c473b55cb1454 (patch)
tree803857407d0a6b22fbf0a93ff4df27a58ae0688a /vcl
parentec01d43e0a8fa560d7cd8c76c0d609b18a60cddb (diff)
flatten vector in ImplMultiTextLineInfo
Change-Id: I30f40c3906c38d29bab7aeef0a9562bd96934a72 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/119329 Tested-by: Jenkins Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
Diffstat (limited to 'vcl')
-rw-r--r--vcl/inc/textlineinfo.hxx10
-rw-r--r--vcl/source/gdi/pdfwriter_impl.cxx15
-rw-r--r--vcl/source/outdev/text.cxx42
3 files changed, 33 insertions, 34 deletions
diff --git a/vcl/inc/textlineinfo.hxx b/vcl/inc/textlineinfo.hxx
index 6b0e72ad36aa..0dc199bff64e 100644
--- a/vcl/inc/textlineinfo.hxx
+++ b/vcl/inc/textlineinfo.hxx
@@ -51,18 +51,20 @@ public:
ImplMultiTextLineInfo();
~ImplMultiTextLineInfo();
- void AddLine( ImplTextLineInfo* pLine );
+ void AddLine( const ImplTextLineInfo& );
void Clear();
- ImplTextLineInfo* GetLine( sal_Int32 nLine ) const
- { return mvLines[nLine].get(); }
+ const ImplTextLineInfo& GetLine( sal_Int32 nLine ) const
+ { return mvLines[nLine]; }
+ ImplTextLineInfo& GetLine( sal_Int32 nLine )
+ { return mvLines[nLine]; }
sal_Int32 Count() const { return mvLines.size(); }
private:
ImplMultiTextLineInfo( const ImplMultiTextLineInfo& ) = delete;
ImplMultiTextLineInfo& operator=( const ImplMultiTextLineInfo& ) = delete;
- std::vector<std::unique_ptr<ImplTextLineInfo>> mvLines;
+ std::vector<ImplTextLineInfo> mvLines;
};
diff --git a/vcl/source/gdi/pdfwriter_impl.cxx b/vcl/source/gdi/pdfwriter_impl.cxx
index 5ca3dfd4cf25..ab7926c50b4e 100644
--- a/vcl/source/gdi/pdfwriter_impl.cxx
+++ b/vcl/source/gdi/pdfwriter_impl.cxx
@@ -6553,7 +6553,6 @@ void PDFWriterImpl::drawText( const tools::Rectangle& rRect, const OUString& rOr
if ( nStyle & DrawTextFlags::MultiLine )
{
ImplMultiTextLineInfo aMultiLineInfo;
- ImplTextLineInfo* pLineInfo;
sal_Int32 i;
sal_Int32 nFormatLines;
@@ -6573,8 +6572,8 @@ void PDFWriterImpl::drawText( const tools::Rectangle& rRect, const OUString& rOr
// handle last line
nFormatLines = nLines-1;
- pLineInfo = aMultiLineInfo.GetLine( nFormatLines );
- aLastLine = convertLineEnd(aStr.copy(pLineInfo->GetIndex()), LINEEND_LF);
+ ImplTextLineInfo& rLineInfo = aMultiLineInfo.GetLine( nFormatLines );
+ aLastLine = convertLineEnd(aStr.copy(rLineInfo.GetIndex()), LINEEND_LF);
// replace line feed by space
aLastLine = aLastLine.replace('\n', ' ');
aLastLine = GetEllipsisString( aLastLine, nWidth, nStyle );
@@ -6592,13 +6591,13 @@ void PDFWriterImpl::drawText( const tools::Rectangle& rRect, const OUString& rOr
// draw all lines excluding the last
for ( i = 0; i < nFormatLines; i++ )
{
- pLineInfo = aMultiLineInfo.GetLine( i );
+ ImplTextLineInfo& rLineInfo = aMultiLineInfo.GetLine( i );
if ( nStyle & DrawTextFlags::Right )
- aPos.AdjustX(nWidth-pLineInfo->GetWidth() );
+ aPos.AdjustX(nWidth-rLineInfo.GetWidth() );
else if ( nStyle & DrawTextFlags::Center )
- aPos.AdjustX((nWidth-pLineInfo->GetWidth())/2 );
- sal_Int32 nIndex = pLineInfo->GetIndex();
- sal_Int32 nLineLen = pLineInfo->GetLen();
+ aPos.AdjustX((nWidth-rLineInfo.GetWidth())/2 );
+ sal_Int32 nIndex = rLineInfo.GetIndex();
+ sal_Int32 nLineLen = rLineInfo.GetLen();
drawText( aPos, aStr, nIndex, nLineLen );
// mnemonics should not appear in documents,
// if the need arises, put them in here
diff --git a/vcl/source/outdev/text.cxx b/vcl/source/outdev/text.cxx
index 9de93b342c53..25234b9f0341 100644
--- a/vcl/source/outdev/text.cxx
+++ b/vcl/source/outdev/text.cxx
@@ -58,9 +58,9 @@ ImplMultiTextLineInfo::~ImplMultiTextLineInfo()
{
}
-void ImplMultiTextLineInfo::AddLine( ImplTextLineInfo* pLine )
+void ImplMultiTextLineInfo::AddLine( const ImplTextLineInfo& rLine )
{
- mvLines.push_back(std::unique_ptr<ImplTextLineInfo>(pLine));
+ mvLines.push_back(rLine);
}
void ImplMultiTextLineInfo::Clear()
@@ -631,7 +631,7 @@ tools::Long OutputDevice::ImplGetTextLines( ImplMultiTextLineInfo& rLineInfo,
if ( nLineWidth > nMaxLineWidth )
nMaxLineWidth = nLineWidth;
- rLineInfo.AddLine( new ImplTextLineInfo( nLineWidth, nPos, nBreakPos-nPos ) );
+ rLineInfo.AddLine( ImplTextLineInfo( nLineWidth, nPos, nBreakPos-nPos ) );
if ( nBreakPos == nPos )
nBreakPos++;
@@ -649,8 +649,8 @@ tools::Long OutputDevice::ImplGetTextLines( ImplMultiTextLineInfo& rLineInfo,
#ifdef DBG_UTIL
for ( sal_Int32 nL = 0; nL < rLineInfo.Count(); nL++ )
{
- ImplTextLineInfo* pLine = rLineInfo.GetLine( nL );
- OUString aLine = rStr.copy( pLine->GetIndex(), pLine->GetLen() );
+ ImplTextLineInfo& rLine = rLineInfo.GetLine( nL );
+ OUString aLine = rStr.copy( rLine.GetIndex(), rLine.GetLen() );
SAL_WARN_IF( aLine.indexOf( '\r' ) != -1, "vcl", "ImplGetTextLines - Found CR!" );
SAL_WARN_IF( aLine.indexOf( '\n' ) != -1, "vcl", "ImplGetTextLines - Found LF!" );
}
@@ -1528,7 +1528,6 @@ void OutputDevice::ImplDrawText( OutputDevice& rTargetDevice, const tools::Recta
{
ImplMultiTextLineInfo aMultiLineInfo;
- ImplTextLineInfo* pLineInfo;
sal_Int32 i;
sal_Int32 nFormatLines;
@@ -1547,8 +1546,8 @@ void OutputDevice::ImplDrawText( OutputDevice& rTargetDevice, const tools::Recta
// Create last line and shorten it
nFormatLines = nLines-1;
- pLineInfo = aMultiLineInfo.GetLine( nFormatLines );
- aLastLine = convertLineEnd(aStr.copy(pLineInfo->GetIndex()), LINEEND_LF);
+ ImplTextLineInfo& rLineInfo = aMultiLineInfo.GetLine( nFormatLines );
+ aLastLine = convertLineEnd(aStr.copy(rLineInfo.GetIndex()), LINEEND_LF);
// Replace all LineFeeds with Spaces
OUStringBuffer aLastLineBuffer(aLastLine);
sal_Int32 nLastLineLen = aLastLineBuffer.getLength();
@@ -1595,13 +1594,13 @@ void OutputDevice::ImplDrawText( OutputDevice& rTargetDevice, const tools::Recta
// Output all lines except for the last one
for ( i = 0; i < nFormatLines; i++ )
{
- pLineInfo = aMultiLineInfo.GetLine( i );
+ ImplTextLineInfo& rLineInfo = aMultiLineInfo.GetLine( i );
if ( nStyle & DrawTextFlags::Right )
- aPos.AdjustX(nWidth-pLineInfo->GetWidth() );
+ aPos.AdjustX(nWidth-rLineInfo.GetWidth() );
else if ( nStyle & DrawTextFlags::Center )
- aPos.AdjustX((nWidth-pLineInfo->GetWidth())/2 );
- sal_Int32 nIndex = pLineInfo->GetIndex();
- sal_Int32 nLineLen = pLineInfo->GetLen();
+ aPos.AdjustX((nWidth-rLineInfo.GetWidth())/2 );
+ sal_Int32 nIndex = rLineInfo.GetIndex();
+ sal_Int32 nLineLen = rLineInfo.GetLen();
_rLayout.DrawText( aPos, aStr, nIndex, nLineLen, pVector, pDisplayText );
if ( bDrawMnemonics )
{
@@ -1815,7 +1814,6 @@ tools::Rectangle OutputDevice::GetTextRect( const tools::Rectangle& rRect,
if ( nStyle & DrawTextFlags::MultiLine )
{
ImplMultiTextLineInfo aMultiLineInfo;
- ImplTextLineInfo* pLineInfo;
sal_Int32 nFormatLines;
sal_Int32 i;
@@ -1849,20 +1847,20 @@ tools::Rectangle OutputDevice::GetTextRect( const tools::Rectangle& rRect,
pInfo->mnMaxWidth = 0;
for ( i = 0; i < nLines; i++ )
{
- pLineInfo = aMultiLineInfo.GetLine( i );
- if ( bMaxWidth && (pLineInfo->GetWidth() > nMaxWidth) )
- nMaxWidth = pLineInfo->GetWidth();
- if ( pLineInfo->GetWidth() > pInfo->mnMaxWidth )
- pInfo->mnMaxWidth = pLineInfo->GetWidth();
+ ImplTextLineInfo& rLineInfo = aMultiLineInfo.GetLine( i );
+ if ( bMaxWidth && (rLineInfo.GetWidth() > nMaxWidth) )
+ nMaxWidth = rLineInfo.GetWidth();
+ if ( rLineInfo.GetWidth() > pInfo->mnMaxWidth )
+ pInfo->mnMaxWidth = rLineInfo.GetWidth();
}
}
else if ( !nMaxWidth )
{
for ( i = 0; i < nLines; i++ )
{
- pLineInfo = aMultiLineInfo.GetLine( i );
- if ( pLineInfo->GetWidth() > nMaxWidth )
- nMaxWidth = pLineInfo->GetWidth();
+ ImplTextLineInfo& rLineInfo = aMultiLineInfo.GetLine( i );
+ if ( rLineInfo.GetWidth() > nMaxWidth )
+ nMaxWidth = rLineInfo.GetWidth();
}
}
}