editeng/inc/ParagraphPortion.hxx | 83 +++++++++++++++++--------------- editeng/inc/TextPortionList.hxx | 7 ++ editeng/source/editeng/editdbg.cxx | 7 +- editeng/source/editeng/editdoc.cxx | 91 ++++++++++++++++-------------------- editeng/source/editeng/impedit2.cxx | 72 ++++++++++++++-------------- editeng/source/editeng/impedit3.cxx | 29 +++++------ editeng/source/editeng/impedit4.cxx | 6 +- 7 files changed, 152 insertions(+), 143 deletions(-)
New commits: commit a476aa8d222a949a67676d95ec07914bbf00e23b Author: Tomaž Vajngerl <tomaz.vajng...@collabora.co.uk> AuthorDate: Sun Feb 11 12:51:18 2024 +0900 Commit: Tomaž Vajngerl <qui...@gmail.com> CommitDate: Mon Feb 12 07:27:47 2024 +0100 editeng: make TextPortionList iterable with ranged for Change-Id: Ifbddd99b5877c71ebbec064672b75877fe06ccd9 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/163226 Tested-by: Jenkins Reviewed-by: Tomaž Vajngerl <qui...@gmail.com> diff --git a/editeng/inc/TextPortionList.hxx b/editeng/inc/TextPortionList.hxx index 7c646ebbbee9..dc6b5e064bd5 100644 --- a/editeng/inc/TextPortionList.hxx +++ b/editeng/inc/TextPortionList.hxx @@ -59,6 +59,11 @@ public: sal_Int32 GetPos(const TextPortion* p) const; bool isEmpty() { return Count() == 1 && maPortions[0]->GetLen() == 0; } + + PortionsType::iterator begin() { return maPortions.begin(); } + PortionsType::iterator end() { return maPortions.end(); } + PortionsType::const_iterator cbegin() const { return maPortions.cbegin(); } + PortionsType::const_iterator cend() const { return maPortions.cend(); } }; /* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/editeng/source/editeng/impedit3.cxx b/editeng/source/editeng/impedit3.cxx index 330a37cb2187..9892dfaa783f 100644 --- a/editeng/source/editeng/impedit3.cxx +++ b/editeng/source/editeng/impedit3.cxx @@ -724,27 +724,28 @@ bool ImpEditEngine::CreateLines( sal_Int32 nPara, sal_uInt32 nStartPosY ) const sal_Int32 nInvalidEnd = nInvalidStart + std::abs( nInvalidDiff ); bool bQuickFormat = false; - if ( !bEmptyNodeWithPolygon && !HasScriptType( nPara, i18n::ScriptType::COMPLEX ) ) + + // Determine if quick formt should be used + if (!bEmptyNodeWithPolygon && !HasScriptType(nPara, i18n::ScriptType::COMPLEX)) { - if ( ( rParaPortion.IsSimpleInvalid() ) && ( nInvalidDiff > 0 ) && - ( pNode->GetString().indexOf( CH_FEATURE, nInvalidStart ) > nInvalidEnd ) ) + if (rParaPortion.IsSimpleInvalid() && + rParaPortion.GetInvalidDiff() > 0 && + pNode->GetString().indexOf(CH_FEATURE, nInvalidStart) > nInvalidEnd) { bQuickFormat = true; } - else if ( ( rParaPortion.IsSimpleInvalid() ) && ( nInvalidDiff < 0 ) ) + else if (rParaPortion.IsSimpleInvalid() && nInvalidDiff < 0) { // check if delete over the portion boundaries was done... sal_Int32 nStart = nInvalidStart; // DOUBLE !!!!!!!!!!!!!!! sal_Int32 nEnd = nStart - nInvalidDiff; // negative bQuickFormat = true; sal_Int32 nPos = 0; - sal_Int32 nPortions = rParaPortion.GetTextPortions().Count(); - for ( sal_Int32 nTP = 0; nTP < nPortions; nTP++ ) + for (auto const& pTextPortion : rParaPortion.GetTextPortions()) { // There must be no start / end in the deleted area. - const TextPortion& rTP = rParaPortion.GetTextPortions()[ nTP ]; - nPos = nPos + rTP.GetLen(); - if ( ( nPos > nStart ) && ( nPos < nEnd ) ) + nPos = nPos + pTextPortion->GetLen(); + if (nPos > nStart && nPos < nEnd) { bQuickFormat = false; break; commit d0d83b8b4a8ee5a889e1ffdf1293b858bf69caaf Author: Tomaž Vajngerl <tomaz.vajng...@collabora.co.uk> AuthorDate: Sun Feb 11 12:49:09 2024 +0900 Commit: Tomaž Vajngerl <qui...@gmail.com> CommitDate: Mon Feb 12 07:27:40 2024 +0100 editeng: move isEmpty impl. from ParaPortion to TextPortionList Change-Id: Ib305963b1f5ffcef9122dd4353826cc9033810f6 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/163225 Tested-by: Jenkins Reviewed-by: Tomaž Vajngerl <qui...@gmail.com> diff --git a/editeng/inc/ParagraphPortion.hxx b/editeng/inc/ParagraphPortion.hxx index 97b37ebe1134..2b0664ec0c2d 100644 --- a/editeng/inc/ParagraphPortion.hxx +++ b/editeng/inc/ParagraphPortion.hxx @@ -111,7 +111,7 @@ public: void SetVisible(bool bVisible) { mbVisible = bVisible; } bool IsVisible() const { return mbVisible; } - bool IsEmpty() { return GetTextPortions().Count() == 1 && GetTextPortions()[0].GetLen() == 0; } + bool IsEmpty() { return GetTextPortions().isEmpty(); } tools::Long GetHeight() const { return mbVisible ? mnHeight : 0; } sal_Int32 GetFirstLineOffset() const { return mbVisible ? mnFirstLineOffset : 0; } diff --git a/editeng/inc/TextPortionList.hxx b/editeng/inc/TextPortionList.hxx index b25f4156155b..7c646ebbbee9 100644 --- a/editeng/inc/TextPortionList.hxx +++ b/editeng/inc/TextPortionList.hxx @@ -57,6 +57,8 @@ public: void Remove(sal_Int32 nPosition) { maPortions.erase(maPortions.begin() + nPosition); } sal_Int32 GetPos(const TextPortion* p) const; + + bool isEmpty() { return Count() == 1 && maPortions[0]->GetLen() == 0; } }; /* vim:set shiftwidth=4 softtabstop=4 expandtab: */ commit 3fa841c864bb17cfd405814188efa99e4d334ffc Author: Tomaž Vajngerl <tomaz.vajng...@collabora.co.uk> AuthorDate: Sun Feb 11 12:41:57 2024 +0900 Commit: Tomaž Vajngerl <qui...@gmail.com> CommitDate: Mon Feb 12 07:27:34 2024 +0100 editeng: prefix members of ParaPortion & add some access methods Change-Id: I6be67530690d1d5ee1236d654dd65cc8545e95d2 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/163224 Tested-by: Jenkins Reviewed-by: Tomaž Vajngerl <qui...@gmail.com> diff --git a/editeng/inc/ParagraphPortion.hxx b/editeng/inc/ParagraphPortion.hxx index e788bb7c9112..97b37ebe1134 100644 --- a/editeng/inc/ParagraphPortion.hxx +++ b/editeng/inc/ParagraphPortion.hxx @@ -58,73 +58,80 @@ class ParaPortion { friend class ImpEditEngine; // to adjust the height private: - EditLineList aLineList; - TextPortionList aTextPortionList; - ContentNode* pNode = nullptr; - tools::Long nHeight = 0; + EditLineList maLineList; + TextPortionList maTextPortionList; + ContentNode* mpNode = nullptr; + tools::Long mnHeight = 0; - ScriptTypePosInfos aScriptInfos; - WritingDirectionInfos aWritingDirectionInfos; + ScriptTypePosInfos maScriptInfos; + WritingDirectionInfos maWritingDirectionInfos; - sal_Int32 nInvalidPosStart = 0; - sal_Int32 nFirstLineOffset = 0; // For Writer-LineSpacing-Interpretation - sal_Int32 nBulletX = 0; - sal_Int32 nInvalidDiff = 0; + sal_Int32 mnInvalidPosStart = 0; + sal_Int32 mnFirstLineOffset = 0; // For Writer-LineSpacing-Interpretation + sal_Int32 mnBulletX = 0; + sal_Int32 mnInvalidDiff = 0; - bool bInvalid : 1 = true; - bool bSimple : 1 = false; // only linear Tap - bool bVisible : 1 = true; // Belongs to the node! - bool bForceRepaint : 1 = false; + bool mbInvalid : 1 = true; + bool mbSimple : 1 = false; // only linear Tap + bool mbVisible : 1 = true; // Belongs to the node! + bool mbForceRepaint : 1 = false; ParaPortion(const ParaPortion&) = delete; public: - ParaPortion(ContentNode* pN) - : pNode(pN) + ParaPortion(ContentNode* pNode) + : mpNode(pNode) { } + tools::Long getHeight() { return mnHeight; } + sal_Int32 GetLineNumber(sal_Int32 nIndex) const; - EditLineList& GetLines() { return aLineList; } - const EditLineList& GetLines() const { return aLineList; } + EditLineList& GetLines() { return maLineList; } + const EditLineList& GetLines() const { return maLineList; } - bool IsInvalid() const { return bInvalid; } - bool IsSimpleInvalid() const { return bSimple; } + bool IsInvalid() const { return mbInvalid; } + bool IsSimpleInvalid() const { return mbSimple; } void SetValid() { - bInvalid = false; - bSimple = true; + mbInvalid = false; + mbSimple = true; } - bool MustRepaint() const { return bForceRepaint; } - void SetMustRepaint(bool bRP) { bForceRepaint = bRP; } + bool MustRepaint() const { return mbForceRepaint; } + void SetMustRepaint(bool bRP) { mbForceRepaint = bRP; } - sal_Int32 GetBulletX() const { return nBulletX; } - void SetBulletX(sal_Int32 n) { nBulletX = n; } + sal_Int32 GetBulletX() const { return mnBulletX; } + void SetBulletX(sal_Int32 nBulletX) { mnBulletX = nBulletX; } void MarkInvalid(sal_Int32 nStart, sal_Int32 nDiff); void MarkSelectionInvalid(sal_Int32 nStart); - void SetVisible(bool bVisible); - bool IsVisible() const { return bVisible; } + void SetVisible(bool bVisible) { mbVisible = bVisible; } + bool IsVisible() const { return mbVisible; } bool IsEmpty() { return GetTextPortions().Count() == 1 && GetTextPortions()[0].GetLen() == 0; } - tools::Long GetHeight() const { return (bVisible ? nHeight : 0); } - sal_Int32 GetFirstLineOffset() const { return (bVisible ? nFirstLineOffset : 0); } + tools::Long GetHeight() const { return mbVisible ? mnHeight : 0; } + sal_Int32 GetFirstLineOffset() const { return mbVisible ? mnFirstLineOffset : 0; } void ResetHeight() { - nHeight = 0; - nFirstLineOffset = 0; + mnHeight = 0; + mnFirstLineOffset = 0; } - ContentNode* GetNode() const { return pNode; } - TextPortionList& GetTextPortions() { return aTextPortionList; } - const TextPortionList& GetTextPortions() const { return aTextPortionList; } + ScriptTypePosInfos& getScriptTypePosInfos() { return maScriptInfos; } + ScriptTypePosInfos const& getScriptTypePosInfos() const { return maScriptInfos; } + + WritingDirectionInfos& getWritingDirectionInfos() { return maWritingDirectionInfos; } + + ContentNode* GetNode() const { return mpNode; } + TextPortionList& GetTextPortions() { return maTextPortionList; } + const TextPortionList& GetTextPortions() const { return maTextPortionList; } - sal_Int32 GetInvalidPosStart() const { return nInvalidPosStart; } - short GetInvalidDiff() const { return nInvalidDiff; } + sal_Int32 GetInvalidPosStart() const { return mnInvalidPosStart; } + short GetInvalidDiff() const { return mnInvalidDiff; } void CorrectValuesBehindLastFormattedLine(sal_Int32 nLastFormattedLine); #if OSL_DEBUG_LEVEL > 0 diff --git a/editeng/source/editeng/editdbg.cxx b/editeng/source/editeng/editdbg.cxx index eb31279034b0..e4d4dd0bbfe6 100644 --- a/editeng/source/editeng/editdbg.cxx +++ b/editeng/source/editeng/editdbg.cxx @@ -507,11 +507,12 @@ bool ParaPortion::DbgCheckTextPortions(ParaPortion const& rPara) { // check, if Portion length ok: sal_uInt16 nXLen = 0; - for (sal_Int32 nPortion = 0; nPortion < rPara.aTextPortionList.Count(); nPortion++) + + for (sal_Int32 nPortion = 0; nPortion < rPara.maTextPortionList.Count(); nPortion++) { - nXLen = nXLen + rPara.aTextPortionList[nPortion].GetLen(); + nXLen = nXLen + rPara.maTextPortionList[nPortion].GetLen(); } - return nXLen == rPara.pNode->Len(); + return nXLen == rPara.mpNode->Len(); } #endif diff --git a/editeng/source/editeng/editdoc.cxx b/editeng/source/editeng/editdoc.cxx index 5d68ac99e7a8..14d4fdaf9b0f 100644 --- a/editeng/source/editeng/editdoc.cxx +++ b/editeng/source/editeng/editdoc.cxx @@ -366,88 +366,82 @@ EditCharAttrib* MakeCharAttrib( SfxItemPool& rPool, const SfxPoolItem& rAttr, sa return nullptr; } -void ParaPortion::MarkInvalid( sal_Int32 nStart, sal_Int32 nDiff ) +void ParaPortion::MarkInvalid(sal_Int32 nStart, sal_Int32 nDiff) { - if ( !bInvalid ) + if (!mbInvalid) { -// nInvalidPosEnd = nStart; // ??? => CreateLines - nInvalidPosStart = ( nDiff >= 0 ) ? nStart : ( nStart + nDiff ); - nInvalidDiff = nDiff; +// mnInvalidPosEnd = nStart; // ??? => CreateLines + mnInvalidPosStart = nDiff >= 0 ? nStart : nStart + nDiff; + mnInvalidDiff = nDiff; } else { // Simple tap in succession - if ( ( nDiff > 0 ) && ( nInvalidDiff > 0 ) && - ( ( nInvalidPosStart+nInvalidDiff ) == nStart ) ) + if (nDiff > 0 && mnInvalidDiff > 0 && (mnInvalidPosStart + mnInvalidDiff) == nStart) { - nInvalidDiff = nInvalidDiff + nDiff; + mnInvalidDiff = mnInvalidDiff + nDiff; } // Simple delete in succession - else if ( ( nDiff < 0 ) && ( nInvalidDiff < 0 ) && ( nInvalidPosStart == nStart ) ) + else if (nDiff < 0 && mnInvalidDiff < 0 && mnInvalidPosStart == nStart) { - nInvalidPosStart = nInvalidPosStart + nDiff; - nInvalidDiff = nInvalidDiff + nDiff; + mnInvalidPosStart = mnInvalidPosStart + nDiff; + mnInvalidDiff = mnInvalidDiff + nDiff; } else { -// nInvalidPosEnd = pNode->Len(); - DBG_ASSERT( ( nDiff >= 0 ) || ( (nStart+nDiff) >= 0 ), "MarkInvalid: Diff out of Range" ); - nInvalidPosStart = std::min( nInvalidPosStart, ( nDiff < 0 ? nStart+nDiff : nDiff ) ); - nInvalidDiff = 0; - bSimple = false; +// mnInvalidPosEnd = pNode->Len(); + DBG_ASSERT(nDiff >= 0 || (nStart + nDiff) >= 0, "MarkInvalid: Diff out of Range"); + mnInvalidPosStart = std::min(mnInvalidPosStart, nDiff < 0 ? nStart + nDiff : nDiff); + mnInvalidDiff = 0; + mbSimple = false; } } - bInvalid = true; - aScriptInfos.clear(); - aWritingDirectionInfos.clear(); + mbInvalid = true; + maScriptInfos.clear(); + maWritingDirectionInfos.clear(); } -void ParaPortion::MarkSelectionInvalid( sal_Int32 nStart ) +void ParaPortion::MarkSelectionInvalid(sal_Int32 nStart) { - if ( !bInvalid ) + if ( !mbInvalid ) { - nInvalidPosStart = nStart; + mnInvalidPosStart = nStart; } else { - nInvalidPosStart = std::min( nInvalidPosStart, nStart ); + mnInvalidPosStart = std::min(mnInvalidPosStart, nStart); } - nInvalidDiff = 0; - bInvalid = true; - bSimple = false; - aScriptInfos.clear(); - aWritingDirectionInfos.clear(); + mnInvalidDiff = 0; + mbInvalid = true; + mbSimple = false; + maScriptInfos.clear(); + maWritingDirectionInfos.clear(); } sal_Int32 ParaPortion::GetLineNumber( sal_Int32 nIndex ) const { - SAL_WARN_IF( !aLineList.Count(), "editeng", "Empty ParaPortion in GetLine!" ); - DBG_ASSERT( bVisible, "Why GetLine() on an invisible paragraph?" ); + SAL_WARN_IF(!maLineList.Count(), "editeng", "Empty ParaPortion in GetLine!"); + DBG_ASSERT(mbVisible, "Why GetLine() on an invisible paragraph?"); - for ( sal_Int32 nLine = 0; nLine < aLineList.Count(); nLine++ ) + for ( sal_Int32 nLine = 0; nLine < maLineList.Count(); nLine++ ) { - if ( aLineList[nLine].IsIn( nIndex ) ) + if (maLineList[nLine].IsIn(nIndex)) return nLine; } // Then it should be at the end of the last line! - DBG_ASSERT( nIndex == aLineList[ aLineList.Count() - 1 ].GetEnd(), "Index dead wrong!" ); - return (aLineList.Count()-1); -} - -void ParaPortion::SetVisible( bool bMakeVisible ) -{ - bVisible = bMakeVisible; + DBG_ASSERT(nIndex == maLineList[maLineList.Count() - 1].GetEnd(), "Index dead wrong!"); + return (maLineList.Count() - 1); } void ParaPortion::CorrectValuesBehindLastFormattedLine( sal_Int32 nLastFormattedLine ) { - sal_Int32 nLines = aLineList.Count(); + sal_Int32 nLines = maLineList.Count(); DBG_ASSERT( nLines, "CorrectPortionNumbersFromLine: Empty Portion?" ); if ( nLastFormattedLine < ( nLines - 1 ) ) { - const EditLine& rLastFormatted = aLineList[ nLastFormattedLine ]; - const EditLine& rUnformatted = aLineList[ nLastFormattedLine+1 ]; + const EditLine& rLastFormatted = maLineList[ nLastFormattedLine ]; + const EditLine& rUnformatted = maLineList[ nLastFormattedLine+1 ]; sal_Int32 nPortionDiff = rUnformatted.GetStartPortion() - rLastFormatted.GetEndPortion(); sal_Int32 nTextDiff = rUnformatted.GetStart() - rLastFormatted.GetEnd(); nTextDiff++; // LastFormatted->GetEnd() was included => 1 deducted too much! @@ -462,7 +456,7 @@ void ParaPortion::CorrectValuesBehindLastFormattedLine( sal_Int32 nLastFormatted { for ( sal_Int32 nL = nLastFormattedLine+1; nL < nLines; nL++ ) { - EditLine& rLine = aLineList[ nL ]; + EditLine& rLine = maLineList[ nL ]; rLine.GetStartPortion() = rLine.GetStartPortion() + nPDiff; rLine.GetEndPortion() = rLine.GetEndPortion() + nPDiff; @@ -474,7 +468,7 @@ void ParaPortion::CorrectValuesBehindLastFormattedLine( sal_Int32 nLastFormatted } } } - DBG_ASSERT( aLineList[ aLineList.Count()-1 ].GetEnd() == pNode->Len(), "CorrectLines: The end is not right!" ); + DBG_ASSERT(maLineList[maLineList.Count() - 1].GetEnd() == mpNode->Len(), "CorrectLines: The end is not right!"); } // Shared reverse lookup acceleration pieces ... @@ -1013,13 +1007,12 @@ EditPaM EditDoc::GetEndPaM() const sal_Int32 EditDoc::GetTextLen() const { - sal_Int32 nLen = 0; - for ( sal_Int32 nNode = 0; nNode < Count(); nNode++ ) + sal_Int32 nLength = 0; + for (auto const& pContent : maContents) { - const ContentNode* pNode = GetObject( nNode ); - nLen += pNode->GetExpandedLen(); + nLength += pContent->GetExpandedLen(); } - return nLen; + return nLength; } EditPaM EditDoc::Clear() diff --git a/editeng/source/editeng/impedit2.cxx b/editeng/source/editeng/impedit2.cxx index d37679c9a612..77e3933c085f 100644 --- a/editeng/source/editeng/impedit2.cxx +++ b/editeng/source/editeng/impedit2.cxx @@ -1659,7 +1659,7 @@ void ImpEditEngine::InitScriptTypes( sal_Int32 nPara ) if (!pParaPortion) return; - ScriptTypePosInfos& rTypes = pParaPortion->aScriptInfos; + ScriptTypePosInfos& rTypes = pParaPortion->getScriptTypePosInfos(); rTypes.clear(); ContentNode* pNode = pParaPortion->GetNode(); @@ -1751,11 +1751,11 @@ void ImpEditEngine::InitScriptTypes( sal_Int32 nPara ) rTypes[0].nScriptType = ( rTypes.size() > 1 ) ? rTypes[1].nScriptType : SvtLanguageOptions::GetI18NScriptTypeOfLanguage( GetDefaultLanguage() ); // create writing direction information: - if ( pParaPortion->aWritingDirectionInfos.empty() ) + WritingDirectionInfos& rDirInfos = pParaPortion->getWritingDirectionInfos(); + if (rDirInfos.empty()) InitWritingDirections( nPara ); // i89825: Use CTL font for numbers embedded into an RTL run: - WritingDirectionInfos& rDirInfos = pParaPortion->aWritingDirectionInfos; for (const WritingDirectionInfo & rDirInfo : rDirInfos) { const sal_Int32 nStart = rDirInfo.nStartPos; @@ -1830,10 +1830,10 @@ sal_uInt16 ImpEditEngine::GetI18NScriptType( const EditPaM& rPaM, sal_Int32* pEn const ParaPortion* pParaPortion = GetParaPortions().SafeGetObject( nPara ); if (pParaPortion) { - if ( pParaPortion->aScriptInfos.empty() ) - const_cast<ImpEditEngine*>(this)->InitScriptTypes( nPara ); + const ScriptTypePosInfos& rTypes = pParaPortion->getScriptTypePosInfos(); - const ScriptTypePosInfos& rTypes = pParaPortion->aScriptInfos; + if (rTypes.empty()) + const_cast<ImpEditEngine*>(this)->InitScriptTypes( nPara ); const sal_Int32 nPos = rPaM.GetIndex(); ScriptTypePosInfos::const_iterator itr = std::find_if(rTypes.begin(), rTypes.end(), FindByPos(nPos)); @@ -1864,10 +1864,10 @@ SvtScriptType ImpEditEngine::GetItemScriptType( const EditSelection& rSel ) cons if (!pParaPortion) continue; - if ( pParaPortion->aScriptInfos.empty() ) - const_cast<ImpEditEngine*>(this)->InitScriptTypes( nPara ); + ScriptTypePosInfos const& rTypes = pParaPortion->getScriptTypePosInfos(); - const ScriptTypePosInfos& rTypes = pParaPortion->aScriptInfos; + if (rTypes.empty()) + const_cast<ImpEditEngine*>(this)->InitScriptTypes( nPara ); // find all the scripts of this range sal_Int32 nS = ( nPara == nStartPara ) ? aSel.Min().GetIndex() : 0; @@ -1910,10 +1910,11 @@ bool ImpEditEngine::IsScriptChange( const EditPaM& rPaM ) const const ParaPortion* pParaPortion = GetParaPortions().SafeGetObject( nPara ); if (pParaPortion) { - if ( pParaPortion->aScriptInfos.empty() ) + ScriptTypePosInfos const& rTypes = pParaPortion->getScriptTypePosInfos(); + + if (rTypes.empty()) const_cast<ImpEditEngine*>(this)->InitScriptTypes( nPara ); - const ScriptTypePosInfos& rTypes = pParaPortion->aScriptInfos; const sal_Int32 nPos = rPaM.GetIndex(); for (const ScriptTypePosInfo & rType : rTypes) { @@ -1935,10 +1936,11 @@ bool ImpEditEngine::HasScriptType( sal_Int32 nPara, sal_uInt16 nType ) const const ParaPortion* pParaPortion = GetParaPortions().SafeGetObject( nPara ); if (pParaPortion) { - if ( pParaPortion->aScriptInfos.empty() ) + const ScriptTypePosInfos& rTypes = pParaPortion->getScriptTypePosInfos(); + + if (rTypes.empty()) const_cast<ImpEditEngine*>(this)->InitScriptTypes( nPara ); - const ScriptTypePosInfos& rTypes = pParaPortion->aScriptInfos; for ( size_t n = rTypes.size(); n && !bTypeFound; ) { if ( rTypes[--n].nScriptType == nType ) @@ -1954,7 +1956,7 @@ void ImpEditEngine::InitWritingDirections( sal_Int32 nPara ) if (!pParaPortion) return; - WritingDirectionInfos& rInfos = pParaPortion->aWritingDirectionInfos; + WritingDirectionInfos& rInfos = pParaPortion->getWritingDirectionInfos(); rInfos.clear(); if (pParaPortion->GetNode()->Len() && !mbFuzzing) @@ -2060,10 +2062,10 @@ sal_uInt8 ImpEditEngine::GetRightToLeft( sal_Int32 nPara, sal_Int32 nPos, sal_In ParaPortion* pParaPortion = GetParaPortions().SafeGetObject( nPara ); if (pParaPortion) { - if ( pParaPortion->aWritingDirectionInfos.empty() ) + WritingDirectionInfos& rDirInfos = pParaPortion->getWritingDirectionInfos(); + if (rDirInfos.empty()) InitWritingDirections( nPara ); - WritingDirectionInfos& rDirInfos = pParaPortion->aWritingDirectionInfos; for (const WritingDirectionInfo & rDirInfo : rDirInfos) { if ( ( rDirInfo.nStartPos <= nPos ) && ( rDirInfo.nEndPos >= nPos ) ) @@ -4386,15 +4388,15 @@ tools::Long ImpEditEngine::GetXPos(ParaPortion const& rParaPortion, EditLine con void ImpEditEngine::CalcHeight(ParaPortion& rPortion) { - rPortion.nHeight = 0; - rPortion.nFirstLineOffset = 0; + rPortion.mnHeight = 0; + rPortion.mnFirstLineOffset = 0; if (!rPortion.IsVisible()) return; OSL_ENSURE(rPortion.GetLines().Count(), "Paragraph with no lines in ParaPortion::CalcHeight"); for (sal_Int32 nLine = 0; nLine < rPortion.GetLines().Count(); ++nLine) - rPortion.nHeight += rPortion.GetLines()[nLine].GetHeight(); + rPortion.mnHeight += rPortion.GetLines()[nLine].GetHeight(); if (maStatus.IsOutliner()) return; @@ -4406,22 +4408,22 @@ void ImpEditEngine::CalcHeight(ParaPortion& rPortion) if ( nSBL ) { if (rPortion.GetLines().Count() > 1) - rPortion.nHeight += (rPortion.GetLines().Count() - 1) * nSBL; + rPortion.mnHeight += (rPortion.GetLines().Count() - 1) * nSBL; if (maStatus.ULSpaceSummation()) - rPortion.nHeight += nSBL; + rPortion.mnHeight += nSBL; } sal_Int32 nPortion = GetParaPortions().GetPos(&rPortion); if ( nPortion ) { sal_uInt16 nUpper = scaleYSpacingValue(rULItem.GetUpper()); - rPortion.nHeight += nUpper; - rPortion.nFirstLineOffset = nUpper; + rPortion.mnHeight += nUpper; + rPortion.mnFirstLineOffset = nUpper; } if (nPortion != GetParaPortions().lastIndex()) { - rPortion.nHeight += scaleYSpacingValue(rULItem.GetLower()); // not in the last + rPortion.mnHeight += scaleYSpacingValue(rULItem.GetLower()); // not in the last } @@ -4442,28 +4444,28 @@ void ImpEditEngine::CalcHeight(ParaPortion& rPortion) // check if distance by LineSpacing > Upper: sal_uInt16 nExtraSpace = scaleYSpacingValue(lcl_CalcExtraSpace(rLSItem)); - if (nExtraSpace > rPortion.nFirstLineOffset) + if (nExtraSpace > rPortion.mnFirstLineOffset) { // Paragraph becomes 'bigger': - rPortion.nHeight += (nExtraSpace - rPortion.nFirstLineOffset); - rPortion.nFirstLineOffset = nExtraSpace; + rPortion.mnHeight += (nExtraSpace - rPortion.mnFirstLineOffset); + rPortion.mnFirstLineOffset = nExtraSpace; } // Determine nFirstLineOffset now f(pNode) => now f(pNode, pPrev): sal_uInt16 nPrevLower = scaleYSpacingValue(rPrevULItem.GetLower()); // This PrevLower is still in the height of PrevPortion ... - if (nPrevLower > rPortion.nFirstLineOffset) + if (nPrevLower > rPortion.mnFirstLineOffset) { // Paragraph is 'small': - rPortion.nHeight -= rPortion.nFirstLineOffset; - rPortion.nFirstLineOffset = 0; + rPortion.mnHeight -= rPortion.mnFirstLineOffset; + rPortion.mnFirstLineOffset = 0; } else if ( nPrevLower ) { // Paragraph becomes 'somewhat smaller': - rPortion.nHeight -= nPrevLower; - rPortion.nFirstLineOffset = rPortion.nFirstLineOffset - nPrevLower; + rPortion.mnHeight -= nPrevLower; + rPortion.mnFirstLineOffset = rPortion.mnFirstLineOffset - nPrevLower; } // I find it not so good, but Writer3 feature: // Check if distance by LineSpacing > Lower: this value is not @@ -4476,10 +4478,10 @@ void ImpEditEngine::CalcHeight(ParaPortion& rPortion) { sal_uInt16 nMoreLower = nExtraSpace - nPrevLower; // Paragraph becomes 'bigger', 'grows' downwards: - if ( nMoreLower > rPortion.nFirstLineOffset ) + if ( nMoreLower > rPortion.mnFirstLineOffset ) { - rPortion.nHeight += (nMoreLower - rPortion.nFirstLineOffset); - rPortion.nFirstLineOffset = nMoreLower; + rPortion.mnHeight += (nMoreLower - rPortion.mnFirstLineOffset); + rPortion.mnFirstLineOffset = nMoreLower; } } } diff --git a/editeng/source/editeng/impedit3.cxx b/editeng/source/editeng/impedit3.cxx index e48e90f44406..330a37cb2187 100644 --- a/editeng/source/editeng/impedit3.cxx +++ b/editeng/source/editeng/impedit3.cxx @@ -2601,15 +2601,13 @@ void ImpEditEngine::CreateTextPortions(ParaPortion& rParaPortion, sal_Int32& rSt } aPositions.insert( pNode->Len() ); - if (rParaPortion.aScriptInfos.empty()) + if (rParaPortion.getScriptTypePosInfos().empty()) InitScriptTypes(GetParaPortions().GetPos(&rParaPortion)); - const ScriptTypePosInfos& rTypes = rParaPortion.aScriptInfos; - for (const ScriptTypePosInfo& rType : rTypes) + for (const ScriptTypePosInfo& rType : rParaPortion.getScriptTypePosInfos()) aPositions.insert( rType.nStartPos ); - const WritingDirectionInfos& rWritingDirections = rParaPortion.aWritingDirectionInfos; - for (const WritingDirectionInfo & rWritingDirection : rWritingDirections) + for (const WritingDirectionInfo& rWritingDirection : rParaPortion.getWritingDirectionInfos()) aPositions.insert( rWritingDirection.nStartPos ); if ( mpIMEInfos && mpIMEInfos->nLen && mpIMEInfos->pAttribs && ( mpIMEInfos->aPos.GetNode() == pNode ) ) @@ -4213,7 +4211,7 @@ void ImpEditEngine::ShowParagraph( sal_Int32 nParagraph, bool bShow ) // If anyway, then save as sal_False before SetVisible ! } - if ( bShow && ( pPPortion->IsInvalid() || !pPPortion->nHeight ) ) + if (bShow && (pPPortion->IsInvalid() || !pPPortion->getHeight())) { if ( !GetTextRanger() ) { diff --git a/editeng/source/editeng/impedit4.cxx b/editeng/source/editeng/impedit4.cxx index ffde50bf78d3..c22b20e8cdf5 100644 --- a/editeng/source/editeng/impedit4.cxx +++ b/editeng/source/editeng/impedit4.cxx @@ -1323,9 +1323,9 @@ EditSelection ImpEditEngine::InsertTextObject( const EditTextObject& rTextObject const XParaPortion& rXP = (*pPortionInfo)[n]; ParaPortion* pParaPortion = GetParaPortions().SafeGetObject(nPara); DBG_ASSERT( pParaPortion, "InsertBinTextObject: ParaPortion?" ); - pParaPortion->nHeight = rXP.nHeight; - pParaPortion->nFirstLineOffset = rXP.nFirstLineOffset; - pParaPortion->bForceRepaint = true; + pParaPortion->mnHeight = rXP.nHeight; + pParaPortion->mnFirstLineOffset = rXP.nFirstLineOffset; + pParaPortion->mbForceRepaint = true; pParaPortion->SetValid(); // Do not format // The Text Portions