sw/source/core/access/accpara.cxx | 86 +++++---------- sw/source/core/access/accportions.cxx | 60 ++++------ sw/source/core/crsr/callnk.cxx | 16 +- sw/source/core/crsr/findtxt.cxx | 3 sw/source/core/crsr/swcrsr.cxx | 20 +-- sw/source/core/doc/DocumentContentOperationsManager.cxx | 26 ++-- sw/source/core/doc/docfmt.cxx | 13 +- sw/source/core/doc/docruby.cxx | 2 sw/source/core/doc/doctxm.cxx | 8 - sw/source/core/docnode/node.cxx | 88 ++++++---------- sw/source/core/edit/edattr.cxx | 2 sw/source/core/text/guess.cxx | 2 sw/source/core/text/itratr.cxx | 42 ++----- sw/source/core/text/porfld.cxx | 27 ++-- sw/source/core/text/porlay.cxx | 7 - sw/source/core/text/portxt.cxx | 4 sw/source/core/text/redlnitr.cxx | 58 ++++------ sw/source/core/text/txtdrop.cxx | 2 sw/source/core/text/txthyph.cxx | 3 sw/source/core/txtnode/fntcache.cxx | 26 +--- sw/source/core/txtnode/fntcap.cxx | 3 sw/source/core/txtnode/txatritr.cxx | 76 ++++++------- sw/source/core/txtnode/txtedt.cxx | 66 +++++------- sw/source/filter/ww8/rtfattributeoutput.cxx | 9 - sw/source/filter/ww8/writerwordglue.cxx | 27 ++-- sw/source/filter/ww8/wrtw8esh.cxx | 6 - sw/source/filter/ww8/wrtw8nds.cxx | 22 +--- sw/source/filter/ww8/ww8atr.cxx | 13 -- sw/source/filter/ww8/ww8par.cxx | 6 - sw/source/filter/ww8/ww8par5.cxx | 7 - sw/source/uibase/docvw/edtwin.cxx | 12 -- 31 files changed, 303 insertions(+), 439 deletions(-)
New commits: commit 6e531f337b27e0979cce844c013352d05ef5281e Author: Caolán McNamara <caol...@redhat.com> Date: Wed Apr 19 11:20:17 2017 +0100 SwBreakIt::m_xBreak is always available this all is a hold over from the initial tentitive changeover to using it in the first place Change-Id: I70e28023798d8ea637c61f9fac252bc698e8100d Reviewed-on: https://gerrit.libreoffice.org/36683 Tested-by: Jenkins <c...@libreoffice.org> Reviewed-by: Caolán McNamara <caol...@redhat.com> Tested-by: Caolán McNamara <caol...@redhat.com> diff --git a/sw/source/core/access/accpara.cxx b/sw/source/core/access/accpara.cxx index 2c3fe1c8ffb6..742505068514 100644 --- a/sw/source/core/access/accpara.cxx +++ b/sw/source/core/access/accpara.cxx @@ -743,38 +743,23 @@ bool SwAccessibleParagraph::GetWordBoundary( const OUString& rText, sal_Int32 nPos ) { - bool bRet = false; - // now ask the Break-Iterator for the word - OSL_ENSURE( g_pBreakIt != nullptr, "We always need a break." ); - OSL_ENSURE( g_pBreakIt->GetBreakIter().is(), "No break-iterator." ); - if( g_pBreakIt->GetBreakIter().is() ) - { - // get locale for this position - const sal_Int32 nModelPos = GetPortionData().GetModelPosition( nPos ); - lang::Locale aLocale = g_pBreakIt->GetLocale( - GetTextNode()->GetLang( nModelPos ) ); + assert(g_pBreakIt && g_pBreakIt->GetBreakIter().is()); - // which type of word are we interested in? - // (DICTIONARY_WORD includes punctuation, ANY_WORD doesn't.) - const sal_Int16 nWordType = i18n::WordType::ANY_WORD; + // get locale for this position + const sal_Int32 nModelPos = GetPortionData().GetModelPosition( nPos ); + lang::Locale aLocale = g_pBreakIt->GetLocale( + GetTextNode()->GetLang( nModelPos ) ); - // get word boundary, as the Break-Iterator sees fit. - rBound = g_pBreakIt->GetBreakIter()->getWordBoundary( - rText, nPos, aLocale, nWordType, true ); + // which type of word are we interested in? + // (DICTIONARY_WORD includes punctuation, ANY_WORD doesn't.) + const sal_Int16 nWordType = i18n::WordType::ANY_WORD; - // If we have a break-iterator let's trust that it - // does the right thing. - bRet = true; - } - else - { - // no break Iterator -> no word - rBound.startPos = nPos; - rBound.endPos = nPos; - } + // get word boundary, as the Break-Iterator sees fit. + rBound = g_pBreakIt->GetBreakIter()->getWordBoundary( + rText, nPos, aLocale, nWordType, true ); - return bRet; + return true; } bool SwAccessibleParagraph::GetSentenceBoundary( @@ -829,36 +814,25 @@ bool SwAccessibleParagraph::GetGlyphBoundary( const OUString& rText, sal_Int32 nPos ) { - bool bRet = false; - // ask the Break-Iterator for the glyph by moving one cell // forward, and then one cell back - OSL_ENSURE( g_pBreakIt != nullptr, "We always need a break." ); - OSL_ENSURE( g_pBreakIt->GetBreakIter().is(), "No break-iterator." ); - if( g_pBreakIt->GetBreakIter().is() ) - { - // get locale for this position - const sal_Int32 nModelPos = GetPortionData().GetModelPosition( nPos ); - lang::Locale aLocale = g_pBreakIt->GetLocale( - GetTextNode()->GetLang( nModelPos ) ); - - // get word boundary, as the Break-Iterator sees fit. - const sal_Int16 nIterMode = i18n::CharacterIteratorMode::SKIPCELL; - sal_Int32 nDone = 0; - rBound.endPos = g_pBreakIt->GetBreakIter()->nextCharacters( - rText, nPos, aLocale, nIterMode, 1, nDone ); - rBound.startPos = g_pBreakIt->GetBreakIter()->previousCharacters( - rText, rBound.endPos, aLocale, nIterMode, 1, nDone ); - bRet = ((rBound.startPos <= nPos) && (nPos <= rBound.endPos)); - OSL_ENSURE( rBound.startPos <= nPos, "start pos too high" ); - OSL_ENSURE( rBound.endPos >= nPos, "end pos too low" ); - } - else - { - // no break Iterator -> no glyph - rBound.startPos = nPos; - rBound.endPos = nPos; - } + assert(g_pBreakIt && g_pBreakIt->GetBreakIter().is()); + + // get locale for this position + const sal_Int32 nModelPos = GetPortionData().GetModelPosition( nPos ); + lang::Locale aLocale = g_pBreakIt->GetLocale( + GetTextNode()->GetLang( nModelPos ) ); + + // get word boundary, as the Break-Iterator sees fit. + const sal_Int16 nIterMode = i18n::CharacterIteratorMode::SKIPCELL; + sal_Int32 nDone = 0; + rBound.endPos = g_pBreakIt->GetBreakIter()->nextCharacters( + rText, nPos, aLocale, nIterMode, 1, nDone ); + rBound.startPos = g_pBreakIt->GetBreakIter()->previousCharacters( + rText, rBound.endPos, aLocale, nIterMode, 1, nDone ); + bool bRet = ((rBound.startPos <= nPos) && (nPos <= rBound.endPos)); + OSL_ENSURE( rBound.startPos <= nPos, "start pos too high" ); + OSL_ENSURE( rBound.endPos >= nPos, "end pos too low" ); return bRet; } @@ -880,7 +854,7 @@ bool SwAccessibleParagraph::GetTextBoundary( switch( nTextType ) { case AccessibleTextType::WORD: - bRet = GetWordBoundary( rBound, rText, nPos ); + bRet = GetWordBoundary(rBound, rText, nPos); break; case AccessibleTextType::SENTENCE: diff --git a/sw/source/core/access/accportions.cxx b/sw/source/core/access/accportions.cxx index 60caf0a05035..f188bcc9a134 100644 --- a/sw/source/core/access/accportions.cxx +++ b/sw/source/core/access/accportions.cxx @@ -475,47 +475,37 @@ void SwAccessiblePortionData::GetSentenceBoundary( if( m_pSentences == nullptr ) { - OSL_ENSURE( g_pBreakIt != nullptr, "We always need a break." ); - OSL_ENSURE( g_pBreakIt->GetBreakIter().is(), "No break-iterator." ); - if( g_pBreakIt->GetBreakIter().is() ) - { - m_pSentences.reset( new Positions_t ); - m_pSentences->reserve(10); - - // use xBreak->endOfSentence to iterate over all words; store - // positions in pSentences - sal_Int32 nCurrent = 0; - sal_Int32 nLength = m_sAccessibleString.getLength(); - do - { - m_pSentences->push_back( nCurrent ); + assert(g_pBreakIt && g_pBreakIt->GetBreakIter().is()); - const sal_Int32 nModelPos = GetModelPosition( nCurrent ); + m_pSentences.reset( new Positions_t ); + m_pSentences->reserve(10); - sal_Int32 nNew = g_pBreakIt->GetBreakIter()->endOfSentence( - m_sAccessibleString, nCurrent, - g_pBreakIt->GetLocale(m_pTextNode->GetLang(nModelPos)) ) + 1; + // use xBreak->endOfSentence to iterate over all words; store + // positions in pSentences + sal_Int32 nCurrent = 0; + sal_Int32 nLength = m_sAccessibleString.getLength(); + do + { + m_pSentences->push_back( nCurrent ); - if( (nNew < 0) && (nNew > nLength) ) - nNew = nLength; - else if (nNew <= nCurrent) - nNew = nCurrent + 1; // ensure forward progress + const sal_Int32 nModelPos = GetModelPosition( nCurrent ); - nCurrent = nNew; - } - while (nCurrent < nLength); + sal_Int32 nNew = g_pBreakIt->GetBreakIter()->endOfSentence( + m_sAccessibleString, nCurrent, + g_pBreakIt->GetLocale(m_pTextNode->GetLang(nModelPos)) ) + 1; - // finish with two terminators - m_pSentences->push_back( nLength ); - m_pSentences->push_back( nLength ); - } - else - { - // no break iterator -> empty word - rBound.startPos = 0; - rBound.endPos = 0; - return; + if( (nNew < 0) && (nNew > nLength) ) + nNew = nLength; + else if (nNew <= nCurrent) + nNew = nCurrent + 1; // ensure forward progress + + nCurrent = nNew; } + while (nCurrent < nLength); + + // finish with two terminators + m_pSentences->push_back( nLength ); + m_pSentences->push_back( nLength ); } FillBoundary( rBound, *m_pSentences, FindBreak( *m_pSentences, nPos ) ); diff --git a/sw/source/core/crsr/callnk.cxx b/sw/source/core/crsr/callnk.cxx index 230850ec5973..dbb7ec74714c 100644 --- a/sw/source/core/crsr/callnk.cxx +++ b/sw/source/core/crsr/callnk.cxx @@ -191,16 +191,14 @@ SwCallLink::~SwCallLink() } } - if( g_pBreakIt->GetBreakIter().is() ) + assert(g_pBreakIt && g_pBreakIt->GetBreakIter().is()); + const OUString rText = pCNd->GetTextNode()->GetText(); + if( !nCmp || + g_pBreakIt->GetBreakIter()->getScriptType( rText, nContent ) + != g_pBreakIt->GetBreakIter()->getScriptType(rText, nAktContent)) { - const OUString rText = pCNd->GetTextNode()->GetText(); - if( !nCmp || - g_pBreakIt->GetBreakIter()->getScriptType( rText, nContent ) - != g_pBreakIt->GetBreakIter()->getScriptType(rText, nAktContent)) - { - rShell.CallChgLnk(); - return; - } + rShell.CallChgLnk(); + return; } } else diff --git a/sw/source/core/crsr/findtxt.cxx b/sw/source/core/crsr/findtxt.cxx index 1ffffa9532aa..2522d36d9f21 100644 --- a/sw/source/core/crsr/findtxt.cxx +++ b/sw/source/core/crsr/findtxt.cxx @@ -513,8 +513,7 @@ bool SwPaM::DoSearch( const i18nutil::SearchOptions2& rSearchOpt, utl::TextSearc sal_uInt16 nSearchScript = 0; sal_uInt16 nCurrScript = 0; - if ( SearchAlgorithms2::APPROXIMATE == rSearchOpt.AlgorithmType2 && - g_pBreakIt->GetBreakIter().is() ) + if (SearchAlgorithms2::APPROXIMATE == rSearchOpt.AlgorithmType2) { pScriptIter = new SwScriptIterator( sCleanStr, nStart, bSrchForward ); nSearchScript = g_pBreakIt->GetRealScriptOfText( rSearchOpt.searchString, 0 ); diff --git a/sw/source/core/crsr/swcrsr.cxx b/sw/source/core/crsr/swcrsr.cxx index c3a4c3816b91..3014a36324f0 100644 --- a/sw/source/core/crsr/swcrsr.cxx +++ b/sw/source/core/crsr/swcrsr.cxx @@ -1159,7 +1159,7 @@ bool SwCursor::IsStartWordWT( sal_Int16 nWordType ) const { bool bRet = false; const SwTextNode* pTextNd = GetNode().GetTextNode(); - if( pTextNd && g_pBreakIt->GetBreakIter().is() ) + if (pTextNd) { const sal_Int32 nPtPos = GetPoint()->nContent.GetIndex(); bRet = g_pBreakIt->GetBreakIter()->isBeginWord( @@ -1174,7 +1174,7 @@ bool SwCursor::IsEndWordWT( sal_Int16 nWordType ) const { bool bRet = false; const SwTextNode* pTextNd = GetNode().GetTextNode(); - if( pTextNd && g_pBreakIt->GetBreakIter().is() ) + if (pTextNd) { const sal_Int32 nPtPos = GetPoint()->nContent.GetIndex(); bRet = g_pBreakIt->GetBreakIter()->isEndWord( @@ -1190,7 +1190,7 @@ bool SwCursor::IsInWordWT( sal_Int16 nWordType ) const { bool bRet = false; const SwTextNode* pTextNd = GetNode().GetTextNode(); - if( pTextNd && g_pBreakIt->GetBreakIter().is() ) + if (pTextNd) { const sal_Int32 nPtPos = GetPoint()->nContent.GetIndex(); Boundary aBoundary = g_pBreakIt->GetBreakIter()->getWordBoundary( @@ -1231,7 +1231,7 @@ bool SwCursor::GoStartWordWT( sal_Int16 nWordType ) { bool bRet = false; const SwTextNode* pTextNd = GetNode().GetTextNode(); - if( pTextNd && g_pBreakIt->GetBreakIter().is() ) + if (pTextNd) { SwCursorSaveState aSave( *this ); sal_Int32 nPtPos = GetPoint()->nContent.GetIndex(); @@ -1255,7 +1255,7 @@ bool SwCursor::GoEndWordWT( sal_Int16 nWordType ) { bool bRet = false; const SwTextNode* pTextNd = GetNode().GetTextNode(); - if( pTextNd && g_pBreakIt->GetBreakIter().is() ) + if (pTextNd) { SwCursorSaveState aSave( *this ); sal_Int32 nPtPos = GetPoint()->nContent.GetIndex(); @@ -1280,7 +1280,7 @@ bool SwCursor::GoNextWordWT( sal_Int16 nWordType ) { bool bRet = false; const SwTextNode* pTextNd = GetNode().GetTextNode(); - if( pTextNd && g_pBreakIt->GetBreakIter().is() ) + if (pTextNd) { SwCursorSaveState aSave( *this ); sal_Int32 nPtPos = GetPoint()->nContent.GetIndex(); @@ -1304,7 +1304,7 @@ bool SwCursor::GoPrevWordWT( sal_Int16 nWordType ) { bool bRet = false; const SwTextNode* pTextNd = GetNode().GetTextNode(); - if( pTextNd && g_pBreakIt->GetBreakIter().is() ) + if (pTextNd) { SwCursorSaveState aSave( *this ); sal_Int32 nPtPos = GetPoint()->nContent.GetIndex(); @@ -1342,7 +1342,7 @@ bool SwCursor::SelectWordWT( SwViewShell* pViewShell, sal_Int16 nWordType, const } const SwTextNode* pTextNd = GetNode().GetTextNode(); - if( pTextNd && g_pBreakIt->GetBreakIter().is() ) + if (pTextNd) { // Should we select the whole fieldmark? const IDocumentMarkAccess* pMarksAccess = GetDoc()->getIDocumentMarkAccess( ); @@ -1457,7 +1457,7 @@ bool SwCursor::GoSentence( SentenceMoveType eMoveType ) { bool bRet = false; const SwTextNode* pTextNd = GetNode().GetTextNode(); - if( pTextNd && g_pBreakIt->GetBreakIter().is() ) + if (pTextNd) { OUString sNodeText( lcl_MaskDeletedRedlines( pTextNd ) ); @@ -1520,7 +1520,7 @@ bool SwCursor::ExpandToSentenceBorders() bool bRes = false; const SwTextNode* pStartNd = Start()->nNode.GetNode().GetTextNode(); const SwTextNode* pEndNd = End()->nNode.GetNode().GetTextNode(); - if (pStartNd && pEndNd && g_pBreakIt->GetBreakIter().is()) + if (pStartNd && pEndNd) { if (!HasMark()) SetMark(); diff --git a/sw/source/core/doc/DocumentContentOperationsManager.cxx b/sw/source/core/doc/DocumentContentOperationsManager.cxx index 3ae5eb01b6dc..da2fe6dd85b2 100644 --- a/sw/source/core/doc/DocumentContentOperationsManager.cxx +++ b/sw/source/core/doc/DocumentContentOperationsManager.cxx @@ -1339,13 +1339,12 @@ namespace //local functions originally from docfmt.cxx } else { - Boundary aBndry; - if( g_pBreakIt->GetBreakIter().is() ) - aBndry = g_pBreakIt->GetBreakIter()->getWordBoundary( - pTextNd->GetText(), nPtPos, - g_pBreakIt->GetLocale( pTextNd->GetLang( nPtPos ) ), - WordType::ANY_WORD /*ANYWORD_IGNOREWHITESPACES*/, - true ); + assert(g_pBreakIt && g_pBreakIt->GetBreakIter().is()); + Boundary aBndry = g_pBreakIt->GetBreakIter()->getWordBoundary( + pTextNd->GetText(), nPtPos, + g_pBreakIt->GetLocale( pTextNd->GetLang( nPtPos ) ), + WordType::ANY_WORD /*ANYWORD_IGNOREWHITESPACES*/, + true); if( aBndry.startPos < nPtPos && nPtPos < aBndry.endPos ) { @@ -2565,13 +2564,12 @@ void DocumentContentOperationsManager::TransliterateText( { // set current word as 'area of effect' - Boundary aBndry; - if( g_pBreakIt->GetBreakIter().is() ) - aBndry = g_pBreakIt->GetBreakIter()->getWordBoundary( - pTNd->GetText(), nSttCnt, - g_pBreakIt->GetLocale( pTNd->GetLang( nSttCnt ) ), - WordType::ANY_WORD /*ANYWORD_IGNOREWHITESPACES*/, - true ); + assert(g_pBreakIt && g_pBreakIt->GetBreakIter().is()); + Boundary aBndry = g_pBreakIt->GetBreakIter()->getWordBoundary( + pTNd->GetText(), nSttCnt, + g_pBreakIt->GetLocale( pTNd->GetLang( nSttCnt ) ), + WordType::ANY_WORD /*ANYWORD_IGNOREWHITESPACES*/, + true); if( aBndry.startPos < nSttCnt && nSttCnt < aBndry.endPos ) { diff --git a/sw/source/core/doc/docfmt.cxx b/sw/source/core/doc/docfmt.cxx index 6da1589e257d..5dff133d929f 100644 --- a/sw/source/core/doc/docfmt.cxx +++ b/sw/source/core/doc/docfmt.cxx @@ -269,13 +269,12 @@ void SwDoc::ResetAttrs( const SwPaM &rRg, } else { - Boundary aBndry; - if( g_pBreakIt->GetBreakIter().is() ) - aBndry = g_pBreakIt->GetBreakIter()->getWordBoundary( - pTextNd->GetText(), nPtPos, - g_pBreakIt->GetLocale( pTextNd->GetLang( nPtPos ) ), - WordType::ANY_WORD /*ANYWORD_IGNOREWHITESPACES*/, - true ); + assert(g_pBreakIt && g_pBreakIt->GetBreakIter().is()); + Boundary aBndry = g_pBreakIt->GetBreakIter()->getWordBoundary( + pTextNd->GetText(), nPtPos, + g_pBreakIt->GetLocale( pTextNd->GetLang( nPtPos ) ), + WordType::ANY_WORD /*ANYWORD_IGNOREWHITESPACES*/, + true); if( aBndry.startPos < nPtPos && nPtPos < aBndry.endPos ) { diff --git a/sw/source/core/doc/docruby.cxx b/sw/source/core/doc/docruby.cxx index 050e825bd8a6..980ce7ebe330 100644 --- a/sw/source/core/doc/docruby.cxx +++ b/sw/source/core/doc/docruby.cxx @@ -296,7 +296,7 @@ bool SwDoc::SelectNextRubyChars( SwPaM& rPam, SwRubyListEntry& rEntry, sal_uInt1 { rPam.SetMark(); bAlphaNum = bIsAlphaNum; - if( bChkNxtWrd && g_pBreakIt->GetBreakIter().is() ) + if (bChkNxtWrd) { // search the end of this word nWordEnd = g_pBreakIt->GetBreakIter()->getWordBoundary( diff --git a/sw/source/core/doc/doctxm.cxx b/sw/source/core/doc/doctxm.cxx index aa6d3b15cf6a..9280edf5199e 100644 --- a/sw/source/core/doc/doctxm.cxx +++ b/sw/source/core/doc/doctxm.cxx @@ -1160,12 +1160,8 @@ void SwTOXBaseSection::UpdateMarks( const SwTOXInternational& rIntl, if(TOX_INDEX == eTOXTyp) { // index entry mark - lang::Locale aLocale; - if ( g_pBreakIt->GetBreakIter().is() ) - { - aLocale = g_pBreakIt->GetLocale( - pTOXSrc->GetLang( pTextMark->GetStart() ) ); - } + assert(g_pBreakIt); + lang::Locale aLocale = g_pBreakIt->GetLocale(pTOXSrc->GetLang(pTextMark->GetStart())); pBase = new SwTOXIndex( *pTOXSrc, pTextMark, GetOptions(), FORM_ENTRY, rIntl, aLocale ); diff --git a/sw/source/core/docnode/node.cxx b/sw/source/core/docnode/node.cxx index 96ec1e018fcd..578e1a98e2ff 100644 --- a/sw/source/core/docnode/node.cxx +++ b/sw/source/core/docnode/node.cxx @@ -1186,33 +1186,27 @@ bool SwContentNode::GoNext(SwIndex * pIdx, sal_uInt16 nMode ) const { const SwTextNode& rTNd = *GetTextNode(); sal_Int32 nPos = pIdx->GetIndex(); - if( g_pBreakIt->GetBreakIter().is() ) + assert(g_pBreakIt && g_pBreakIt->GetBreakIter().is()); + sal_Int32 nDone = 0; + sal_uInt16 nItrMode = ( CRSR_SKIP_CELLS & nMode ) ? + CharacterIteratorMode::SKIPCELL : + CharacterIteratorMode::SKIPCONTROLCHARACTER; + nPos = g_pBreakIt->GetBreakIter()->nextCharacters( rTNd.GetText(), nPos, + g_pBreakIt->GetLocale( rTNd.GetLang( nPos ) ), + nItrMode, 1, nDone ); + + // Check if nPos is inside hidden text range: + if ( CRSR_SKIP_HIDDEN & nMode ) { - sal_Int32 nDone = 0; - sal_uInt16 nItrMode = ( CRSR_SKIP_CELLS & nMode ) ? - CharacterIteratorMode::SKIPCELL : - CharacterIteratorMode::SKIPCONTROLCHARACTER; - nPos = g_pBreakIt->GetBreakIter()->nextCharacters( rTNd.GetText(), nPos, - g_pBreakIt->GetLocale( rTNd.GetLang( nPos ) ), - nItrMode, 1, nDone ); - - // Check if nPos is inside hidden text range: - if ( CRSR_SKIP_HIDDEN & nMode ) - { - sal_Int32 nHiddenStart; - sal_Int32 nHiddenEnd; - SwScriptInfo::GetBoundsOfHiddenRange( rTNd, nPos, nHiddenStart, nHiddenEnd ); - if ( nHiddenStart != COMPLETE_STRING && nHiddenStart != nPos ) - nPos = nHiddenEnd; - } - - if( 1 == nDone ) - *pIdx = nPos; - else - bRet = false; + sal_Int32 nHiddenStart; + sal_Int32 nHiddenEnd; + SwScriptInfo::GetBoundsOfHiddenRange( rTNd, nPos, nHiddenStart, nHiddenEnd ); + if ( nHiddenStart != COMPLETE_STRING && nHiddenStart != nPos ) + nPos = nHiddenEnd; } - else if (nPos < rTNd.GetText().getLength()) - ++(*pIdx); + + if( 1 == nDone ) + *pIdx = nPos; else bRet = false; } @@ -1233,33 +1227,27 @@ bool SwContentNode::GoPrevious(SwIndex * pIdx, sal_uInt16 nMode ) const { const SwTextNode& rTNd = *GetTextNode(); sal_Int32 nPos = pIdx->GetIndex(); - if( g_pBreakIt->GetBreakIter().is() ) + assert(g_pBreakIt && g_pBreakIt->GetBreakIter().is()); + sal_Int32 nDone = 0; + sal_uInt16 nItrMode = ( CRSR_SKIP_CELLS & nMode ) ? + CharacterIteratorMode::SKIPCELL : + CharacterIteratorMode::SKIPCONTROLCHARACTER; + nPos = g_pBreakIt->GetBreakIter()->previousCharacters( rTNd.GetText(), nPos, + g_pBreakIt->GetLocale( rTNd.GetLang( nPos ) ), + nItrMode, 1, nDone ); + + // Check if nPos is inside hidden text range: + if ( CRSR_SKIP_HIDDEN & nMode ) { - sal_Int32 nDone = 0; - sal_uInt16 nItrMode = ( CRSR_SKIP_CELLS & nMode ) ? - CharacterIteratorMode::SKIPCELL : - CharacterIteratorMode::SKIPCONTROLCHARACTER; - nPos = g_pBreakIt->GetBreakIter()->previousCharacters( rTNd.GetText(), nPos, - g_pBreakIt->GetLocale( rTNd.GetLang( nPos ) ), - nItrMode, 1, nDone ); - - // Check if nPos is inside hidden text range: - if ( CRSR_SKIP_HIDDEN & nMode ) - { - sal_Int32 nHiddenStart; - sal_Int32 nHiddenEnd; - SwScriptInfo::GetBoundsOfHiddenRange( rTNd, nPos, nHiddenStart, nHiddenEnd ); - if ( nHiddenStart != COMPLETE_STRING ) - nPos = nHiddenStart; - } - - if( 1 == nDone ) - *pIdx = nPos; - else - bRet = false; + sal_Int32 nHiddenStart; + sal_Int32 nHiddenEnd; + SwScriptInfo::GetBoundsOfHiddenRange( rTNd, nPos, nHiddenStart, nHiddenEnd ); + if ( nHiddenStart != COMPLETE_STRING ) + nPos = nHiddenStart; } - else if( nPos ) - --(*pIdx); + + if( 1 == nDone ) + *pIdx = nPos; else bRet = false; } diff --git a/sw/source/core/edit/edattr.cxx b/sw/source/core/edit/edattr.cxx index 9b181e84ff4b..1111ffaf62a4 100644 --- a/sw/source/core/edit/edattr.cxx +++ b/sw/source/core/edit/edattr.cxx @@ -677,7 +677,7 @@ SvtScriptType SwEditShell::GetScriptType() const nRet |= lcl_SetScriptFlags( nScript ); } } - else if ( g_pBreakIt->GetBreakIter().is() ) + else { sal_uLong nEndIdx = pEnd->nNode.GetIndex(); SwNodeIndex aIdx( pStt->nNode ); diff --git a/sw/source/core/text/guess.cxx b/sw/source/core/text/guess.cxx index 3a6aa4abbc59..066d45a5a2fa 100644 --- a/sw/source/core/text/guess.cxx +++ b/sw/source/core/text/guess.cxx @@ -266,7 +266,7 @@ bool SwTextGuess::Guess( const SwTextPortion& rPor, SwTextFormatInfo &rInf, nBreakStart = nCutPos; } - else if( g_pBreakIt->GetBreakIter().is() ) + else { // New: We should have a look into the last portion, if it was a // field portion. For this, we expand the text of the field portion diff --git a/sw/source/core/text/itratr.cxx b/sw/source/core/text/itratr.cxx index 55fbbadeb126..1c8ef5182e9b 100644 --- a/sw/source/core/text/itratr.cxx +++ b/sw/source/core/text/itratr.cxx @@ -361,32 +361,19 @@ static bool lcl_MinMaxString( SwMinMaxArgs& rArg, SwFont* pFnt, const OUString & sal_Int32 nStop = nIdx; bool bClear = false; LanguageType eLang = pFnt->GetLanguage(); - if( g_pBreakIt->GetBreakIter().is() ) - { - bClear = CH_BLANK == rText[ nStop ]; - Boundary aBndry( g_pBreakIt->GetBreakIter()->getWordBoundary( rText, nIdx, - g_pBreakIt->GetLocale( eLang ), - WordType::DICTIONARY_WORD, true ) ); - nStop = aBndry.endPos; - if( nIdx <= aBndry.startPos && nIdx && nIdx-1 != rArg.nNoLineBreak ) - rArg.NewWord(); - if( nStop == nIdx ) - ++nStop; - if( nStop > nEnd ) - nStop = nEnd; - } - else - { - while( nStop < nEnd && CH_BLANK != rText[ nStop ] ) - ++nStop; - bClear = nStop == nIdx; - if ( bClear ) - { - rArg.NewWord(); - while( nStop < nEnd && CH_BLANK == rText[ nStop ] ) - ++nStop; - } - } + assert(g_pBreakIt && g_pBreakIt->GetBreakIter().is()); + + bClear = CH_BLANK == rText[ nStop ]; + Boundary aBndry( g_pBreakIt->GetBreakIter()->getWordBoundary( rText, nIdx, + g_pBreakIt->GetLocale( eLang ), + WordType::DICTIONARY_WORD, true ) ); + nStop = aBndry.endPos; + if( nIdx <= aBndry.startPos && nIdx && nIdx-1 != rArg.nNoLineBreak ) + rArg.NewWord(); + if( nStop == nIdx ) + ++nStop; + if( nStop > nEnd ) + nStop = nEnd; SwDrawTextInfo aDrawInf( rArg.pSh, *rArg.pOut, nullptr, rText, nIdx, nStop - nIdx ); long nAktWidth = pFnt->GetTextSize_( aDrawInf ).Width(); @@ -807,8 +794,7 @@ sal_uInt16 SwTextNode::GetScalingOfSelectedText( sal_Int32 nStt, sal_Int32 nEnd if ( nStt == nEnd ) { - if ( !g_pBreakIt->GetBreakIter().is() ) - return 100; + assert(g_pBreakIt && g_pBreakIt->GetBreakIter().is()); SwScriptInfo aScriptInfo; SwAttrIter aIter( *const_cast<SwTextNode*>(this), aScriptInfo ); diff --git a/sw/source/core/text/porfld.cxx b/sw/source/core/text/porfld.cxx index 1a7a3bf402b6..3821625a238e 100644 --- a/sw/source/core/text/porfld.cxx +++ b/sw/source/core/text/porfld.cxx @@ -194,7 +194,7 @@ SwFieldSlot::~SwFieldSlot() void SwFieldPortion::CheckScript( const SwTextSizeInfo &rInf ) { OUString aText; - if( GetExpText( rInf, aText ) && !aText.isEmpty() && g_pBreakIt->GetBreakIter().is() ) + if (GetExpText(rInf, aText) && !aText.isEmpty()) { SwFontScript nActual = pFnt ? pFnt->GetActual() : rInf.GetFont()->GetActual(); sal_uInt16 nScript = g_pBreakIt->GetBreakIter()->getScriptType( aText, 0 ); @@ -1074,24 +1074,19 @@ SwCombinedPortion::SwCombinedPortion( const OUString &rText ) // Initialization of the scripttype array, // the arrays of width and position are filled by the format function - if( g_pBreakIt->GetBreakIter().is() ) + assert(g_pBreakIt && g_pBreakIt->GetBreakIter().is()); + + SwFontScript nScr = SW_SCRIPTS; + for( sal_Int32 i = 0; i < rText.getLength(); ++i ) { - SwFontScript nScr = SW_SCRIPTS; - for( sal_Int32 i = 0; i < rText.getLength(); ++i ) - { - switch ( g_pBreakIt->GetBreakIter()->getScriptType( rText, i ) ) { - case i18n::ScriptType::LATIN : nScr = SwFontScript::Latin; break; - case i18n::ScriptType::ASIAN : nScr = SwFontScript::CJK; break; - case i18n::ScriptType::COMPLEX : nScr = SwFontScript::CTL; break; - } - aScrType[i] = nScr; + switch ( g_pBreakIt->GetBreakIter()->getScriptType( rText, i ) ) { + case i18n::ScriptType::LATIN : nScr = SwFontScript::Latin; break; + case i18n::ScriptType::ASIAN : nScr = SwFontScript::CJK; break; + case i18n::ScriptType::COMPLEX : nScr = SwFontScript::CTL; break; } + aScrType[i] = nScr; } - else - { - for(SwFontScript & rn : aScrType) - rn = SwFontScript::Latin; - } + memset( &aWidth, 0, sizeof(aWidth) ); } diff --git a/sw/source/core/text/porlay.cxx b/sw/source/core/text/porlay.cxx index b1bc88582d67..53ef42eb8992 100644 --- a/sw/source/core/text/porlay.cxx +++ b/sw/source/core/text/porlay.cxx @@ -698,8 +698,7 @@ void SwScriptInfo::InitScriptInfo( const SwTextNode& rNode ) void SwScriptInfo::InitScriptInfo( const SwTextNode& rNode, bool bRTL ) { - if( !g_pBreakIt->GetBreakIter().is() ) - return; + assert(g_pBreakIt && g_pBreakIt->GetBreakIter().is()); const OUString& rText = rNode.GetText(); @@ -2215,7 +2214,7 @@ void SwScriptInfo::CalcHiddenRanges( const SwTextNode& rNode, MultiSelection& rH sal_Int32 SwScriptInfo::CountCJKCharacters( const OUString &rText, sal_Int32 nPos, sal_Int32 nEnd, LanguageType aLang) { sal_Int32 nCount = 0; - if ( nEnd > nPos && g_pBreakIt->GetBreakIter().is() ) + if (nEnd > nPos) { sal_Int32 nDone = 0; const lang::Locale &rLocale = g_pBreakIt->GetLocale( aLang ); @@ -2239,7 +2238,7 @@ void SwScriptInfo::CJKJustify( const OUString& rText, long* pKernArray, long nSpaceAdd, bool bIsSpaceStop ) { assert( pKernArray != nullptr && nStt >= 0 ); - if ( nLen > 0 && g_pBreakIt->GetBreakIter().is() ) + if (nLen > 0) { long nSpaceSum = 0; const lang::Locale &rLocale = g_pBreakIt->GetLocale( aLang ); diff --git a/sw/source/core/text/portxt.cxx b/sw/source/core/text/portxt.cxx index cd508425cb94..bcdd4772cd31 100644 --- a/sw/source/core/text/portxt.cxx +++ b/sw/source/core/text/portxt.cxx @@ -75,7 +75,7 @@ static sal_Int32 lcl_AddSpace( const SwTextSizeInfo &rInf, const OUString* pStr, // first we get the script type if ( pSI ) nScript = pSI->ScriptType( nPos ); - else if ( g_pBreakIt->GetBreakIter().is() ) + else nScript = (sal_uInt8)g_pBreakIt->GetBreakIter()->getScriptType( *pStr, nPos ); // Note: rInf.GetIdx() can differ from nPos, @@ -177,7 +177,7 @@ static sal_Int32 lcl_AddSpace( const SwTextSizeInfo &rInf, const OUString* pStr, if ( pPor && pPor->IsKernPortion() ) pPor = pPor->GetPortion(); - if ( ! g_pBreakIt->GetBreakIter().is() || ! pPor || pPor->InFixMargGrp() ) + if (!pPor || pPor->InFixMargGrp()) return nCnt; // next character is inside a field? diff --git a/sw/source/core/text/redlnitr.cxx b/sw/source/core/text/redlnitr.cxx index ef9915ad4b6e..d5b5edc77e95 100644 --- a/sw/source/core/text/redlnitr.cxx +++ b/sw/source/core/text/redlnitr.cxx @@ -89,41 +89,35 @@ void SwAttrIter::CtorInitAttrIter( SwTextNode& rTextNode, SwScriptInfo& rScrInf, if ( m_pScriptInfo->GetInvalidityA() != COMPLETE_STRING ) m_pScriptInfo->InitScriptInfo( rTextNode, bRTL ); - if ( g_pBreakIt->GetBreakIter().is() ) - { - m_pFont->SetActual( SwScriptInfo::WhichFont( 0, nullptr, m_pScriptInfo ) ); + assert(g_pBreakIt && g_pBreakIt->GetBreakIter().is()); - sal_Int32 nChg = 0; - size_t nCnt = 0; + m_pFont->SetActual( SwScriptInfo::WhichFont( 0, nullptr, m_pScriptInfo ) ); - do - { - if ( nCnt >= m_pScriptInfo->CountScriptChg() ) - break; - nChg = m_pScriptInfo->GetScriptChg( nCnt ); - SwFontScript nTmp = SW_SCRIPTS; - switch ( m_pScriptInfo->GetScriptType( nCnt++ ) ) { - case i18n::ScriptType::ASIAN : - if( !m_aMagicNo[SwFontScript::CJK] ) nTmp = SwFontScript::CJK; - break; - case i18n::ScriptType::COMPLEX : - if( !m_aMagicNo[SwFontScript::CTL] ) nTmp = SwFontScript::CTL; - break; - default: - if( !m_aMagicNo[SwFontScript::Latin ] ) nTmp = SwFontScript::Latin; - } - if( nTmp < SW_SCRIPTS ) - { - m_pFont->ChkMagic( m_pViewShell, nTmp ); - m_pFont->GetMagic( m_aMagicNo[ nTmp ], m_aFontIdx[ nTmp ], nTmp ); - } - } while (nChg < rTextNode.GetText().getLength()); - } - else + sal_Int32 nChg = 0; + size_t nCnt = 0; + + do { - m_pFont->ChkMagic( m_pViewShell, SwFontScript::Latin ); - m_pFont->GetMagic( m_aMagicNo[ SwFontScript::Latin ], m_aFontIdx[ SwFontScript::Latin ], SwFontScript::Latin ); - } + if ( nCnt >= m_pScriptInfo->CountScriptChg() ) + break; + nChg = m_pScriptInfo->GetScriptChg( nCnt ); + SwFontScript nTmp = SW_SCRIPTS; + switch ( m_pScriptInfo->GetScriptType( nCnt++ ) ) { + case i18n::ScriptType::ASIAN : + if( !m_aMagicNo[SwFontScript::CJK] ) nTmp = SwFontScript::CJK; + break; + case i18n::ScriptType::COMPLEX : + if( !m_aMagicNo[SwFontScript::CTL] ) nTmp = SwFontScript::CTL; + break; + default: + if( !m_aMagicNo[SwFontScript::Latin ] ) nTmp = SwFontScript::Latin; + } + if( nTmp < SW_SCRIPTS ) + { + m_pFont->ChkMagic( m_pViewShell, nTmp ); + m_pFont->GetMagic( m_aMagicNo[ nTmp ], m_aFontIdx[ nTmp ], nTmp ); + } + } while (nChg < rTextNode.GetText().getLength()); m_nStartIndex = m_nEndIndex = m_nPosition = m_nChgCnt = 0; m_nPropFont = 0; diff --git a/sw/source/core/text/txtdrop.cxx b/sw/source/core/text/txtdrop.cxx index 157bfeef6719..be96cbc6bf81 100644 --- a/sw/source/core/text/txtdrop.cxx +++ b/sw/source/core/text/txtdrop.cxx @@ -127,7 +127,7 @@ sal_Int32 SwTextNode::GetDropLen( sal_Int32 nWishLen ) const if( nWishLen && nWishLen < nEnd ) nEnd = nWishLen; - if ( ! nWishLen && g_pBreakIt->GetBreakIter().is() ) + if (! nWishLen) { // find first word const SwAttrSet& rAttrSet = GetSwAttrSet(); diff --git a/sw/source/core/text/txthyph.cxx b/sw/source/core/text/txthyph.cxx index 6b5bd8470648..01940c21f79d 100644 --- a/sw/source/core/text/txthyph.cxx +++ b/sw/source/core/text/txthyph.cxx @@ -60,8 +60,7 @@ bool SwTextFrame::Hyphenate( SwInterHyphInfo &rHyphInf ) vcl::RenderContext* pRenderContext = getRootFrame()->GetCurrShell()->GetOut(); OSL_ENSURE( ! IsVertical() || ! IsSwapped(),"swapped frame at SwTextFrame::Hyphenate" ); - if( !g_pBreakIt->GetBreakIter().is() ) - return false; + assert(g_pBreakIt && g_pBreakIt->GetBreakIter().is()); // We lock it, to start with OSL_ENSURE( !IsLocked(), "SwTextFrame::Hyphenate: this is locked" ); diff --git a/sw/source/core/txtnode/fntcache.cxx b/sw/source/core/txtnode/fntcache.cxx index 44518377975f..03c201afb29e 100644 --- a/sw/source/core/txtnode/fntcache.cxx +++ b/sw/source/core/txtnode/fntcache.cxx @@ -2134,19 +2134,13 @@ sal_Int32 SwFntObj::GetCursorOfst( SwDrawTextInfo &rInf ) } sal_Int32 nDone = 0; - LanguageType aLang = LANGUAGE_NONE; - bool bSkipCharacterCells = false; sal_Int32 nIdx = rInf.GetIdx(); sal_Int32 nLastIdx = nIdx; const sal_Int32 nEnd = rInf.GetIdx() + rInf.GetLen(); // #i105901# // skip character cells for all script types - if ( g_pBreakIt->GetBreakIter().is() ) - { - aLang = rInf.GetFont()->GetLanguage(); - bSkipCharacterCells = true; - } + LanguageType aLang = rInf.GetFont()->GetLanguage(); while ( ( nRight < long( rInf.GetOfst() ) ) && ( nIdx < nEnd ) ) { @@ -2156,16 +2150,11 @@ sal_Int32 SwFntObj::GetCursorOfst( SwDrawTextInfo &rInf ) // go to next character (cell). nLastIdx = nIdx; - if ( bSkipCharacterCells ) - { - nIdx = g_pBreakIt->GetBreakIter()->nextCharacters( rInf.GetText(), - nIdx, g_pBreakIt->GetLocale( aLang ), - i18n::CharacterIteratorMode::SKIPCELL, 1, nDone ); - if ( nIdx <= nLastIdx ) - break; - } - else - ++nIdx; + nIdx = g_pBreakIt->GetBreakIter()->nextCharacters( rInf.GetText(), + nIdx, g_pBreakIt->GetLocale( aLang ), + i18n::CharacterIteratorMode::SKIPCELL, 1, nDone ); + if ( nIdx <= nLastIdx ) + break; nLeft = nRight; nRight = pKernArray[ nIdx - rInf.GetIdx() - 1 ] + nKernSum + nSpaceSum; @@ -2398,8 +2387,7 @@ sal_Int32 SwFont::GetTextBreak( SwDrawTextInfo& rInf, long nTextWidth ) { const OUString aSnippet(rInf.GetText().copy(rInf.GetIdx(), nLn)); aTmpText = m_aSub[m_nActual].CalcCaseMap( aSnippet ); - const bool bTitle = SvxCaseMap::Capitalize == m_aSub[m_nActual].GetCaseMap() && - g_pBreakIt->GetBreakIter().is(); + const bool bTitle = SvxCaseMap::Capitalize == m_aSub[m_nActual].GetCaseMap(); // Uaaaaahhhh!!! In title case mode, we would get wrong results if ( bTitle && nLn ) diff --git a/sw/source/core/txtnode/fntcap.cxx b/sw/source/core/txtnode/fntcap.cxx index 4713bfc61119..2965b496e2d2 100644 --- a/sw/source/core/txtnode/fntcap.cxx +++ b/sw/source/core/txtnode/fntcap.cxx @@ -66,8 +66,7 @@ sal_Int32 sw_CalcCaseMap( const SwFont& rFnt, OSL_ENSURE( nEnd <= rOrigString.getLength(), "sw_CalcCaseMap: Wrong parameters" ); // special case for title case: - const bool bTitle = SvxCaseMap::Capitalize == rFnt.GetCaseMap() && - g_pBreakIt->GetBreakIter().is(); + const bool bTitle = SvxCaseMap::Capitalize == rFnt.GetCaseMap(); for ( sal_Int32 i = nOfst; i < nEnd; ++i ) { OUString aTmp(rOrigString.copy(i, 1)); diff --git a/sw/source/core/txtnode/txatritr.cxx b/sw/source/core/txtnode/txatritr.cxx index 9048fde21b2a..a977fc3df73c 100644 --- a/sw/source/core/txtnode/txatritr.cxx +++ b/sw/source/core/txtnode/txatritr.cxx @@ -35,61 +35,55 @@ SwScriptIterator::SwScriptIterator( , nCurScript(i18n::ScriptType::WEAK) , bForward(bFrwrd) { - if( g_pBreakIt->GetBreakIter().is() ) - { - if ( ! bFrwrd && nStt ) - --nStt; + assert(g_pBreakIt && g_pBreakIt->GetBreakIter().is()); + if ( ! bFrwrd && nStt ) + --nStt; - sal_Int32 nPos = nStt; - nCurScript = g_pBreakIt->GetBreakIter()->getScriptType(m_rText, nPos); - if( i18n::ScriptType::WEAK == nCurScript ) + sal_Int32 nPos = nStt; + nCurScript = g_pBreakIt->GetBreakIter()->getScriptType(m_rText, nPos); + if( i18n::ScriptType::WEAK == nCurScript ) + { + if( nPos ) { - if( nPos ) + nPos = g_pBreakIt->GetBreakIter()->beginOfScript( + m_rText, nPos, nCurScript); + if (nPos > 0 && nPos < m_rText.getLength()) { - nPos = g_pBreakIt->GetBreakIter()->beginOfScript( - m_rText, nPos, nCurScript); - if (nPos > 0 && nPos < m_rText.getLength()) - { - nStt = --nPos; - nCurScript = - g_pBreakIt->GetBreakIter()->getScriptType(m_rText,nPos); - } + nStt = --nPos; + nCurScript = + g_pBreakIt->GetBreakIter()->getScriptType(m_rText,nPos); } } - - m_nChgPos = (bForward) - ? g_pBreakIt->GetBreakIter()->endOfScript( - m_rText, nStt, nCurScript) - : g_pBreakIt->GetBreakIter()->beginOfScript( - m_rText, nStt, nCurScript); } + + m_nChgPos = (bForward) + ? g_pBreakIt->GetBreakIter()->endOfScript( + m_rText, nStt, nCurScript) + : g_pBreakIt->GetBreakIter()->beginOfScript( + m_rText, nStt, nCurScript); } bool SwScriptIterator::Next() { + assert(g_pBreakIt && g_pBreakIt->GetBreakIter().is()); bool bRet = false; - if( g_pBreakIt->GetBreakIter().is() ) + if (bForward && m_nChgPos >= 0 && m_nChgPos < m_rText.getLength()) { - if (bForward && m_nChgPos >= 0 && m_nChgPos < m_rText.getLength()) - { - nCurScript = - g_pBreakIt->GetBreakIter()->getScriptType(m_rText, m_nChgPos); - m_nChgPos = g_pBreakIt->GetBreakIter()->endOfScript( + nCurScript = + g_pBreakIt->GetBreakIter()->getScriptType(m_rText, m_nChgPos); + m_nChgPos = g_pBreakIt->GetBreakIter()->endOfScript( + m_rText, m_nChgPos, nCurScript); + bRet = true; + } + else if (!bForward && m_nChgPos > 0) + { + --m_nChgPos; + nCurScript = + g_pBreakIt->GetBreakIter()->getScriptType(m_rText, m_nChgPos); + m_nChgPos = g_pBreakIt->GetBreakIter()->beginOfScript( m_rText, m_nChgPos, nCurScript); - bRet = true; - } - else if (!bForward && m_nChgPos > 0) - { - --m_nChgPos; - nCurScript = - g_pBreakIt->GetBreakIter()->getScriptType(m_rText, m_nChgPos); - m_nChgPos = g_pBreakIt->GetBreakIter()->beginOfScript( - m_rText, m_nChgPos, nCurScript); - bRet = true; - } + bRet = true; } - else - m_nChgPos = m_rText.getLength(); return bRet; } diff --git a/sw/source/core/txtnode/txtedt.cxx b/sw/source/core/txtnode/txtedt.cxx index 5b5e44713adb..f509ffea7c54 100644 --- a/sw/source/core/txtnode/txtedt.cxx +++ b/sw/source/core/txtnode/txtedt.cxx @@ -699,26 +699,23 @@ OUString SwTextNode::GetCurWord( sal_Int32 nPos ) const if (m_Text.isEmpty()) return m_Text; - Boundary aBndry; + assert(g_pBreakIt && g_pBreakIt->GetBreakIter().is()); const uno::Reference< XBreakIterator > &rxBreak = g_pBreakIt->GetBreakIter(); - if (rxBreak.is()) - { - sal_Int16 nWordType = WordType::DICTIONARY_WORD; - lang::Locale aLocale( g_pBreakIt->GetLocale( GetLang( nPos ) ) ); + sal_Int16 nWordType = WordType::DICTIONARY_WORD; + lang::Locale aLocale( g_pBreakIt->GetLocale( GetLang( nPos ) ) ); #if OSL_DEBUG_LEVEL > 1 - sal_Bool bBegin = rxBreak->isBeginWord( m_Text, nPos, aLocale, nWordType ); - sal_Bool bEnd = rxBreak->isEndWord ( m_Text, nPos, aLocale, nWordType ); - (void)bBegin; - (void)bEnd; + sal_Bool bBegin = rxBreak->isBeginWord( m_Text, nPos, aLocale, nWordType ); + sal_Bool bEnd = rxBreak->isEndWord ( m_Text, nPos, aLocale, nWordType ); + (void)bBegin; + (void)bEnd; #endif - aBndry = - rxBreak->getWordBoundary( m_Text, nPos, aLocale, nWordType, true ); + Boundary aBndry = + rxBreak->getWordBoundary( m_Text, nPos, aLocale, nWordType, true ); - // if no word was found use previous word (if any) - if (aBndry.startPos == aBndry.endPos) - { - aBndry = rxBreak->previousWord( m_Text, nPos, aLocale, nWordType ); - } + // if no word was found use previous word (if any) + if (aBndry.startPos == aBndry.endPos) + { + aBndry = rxBreak->previousWord( m_Text, nPos, aLocale, nWordType ); } // check if word was found and if it uses a symbol font, if so @@ -1679,7 +1676,7 @@ void SwTextNode::TransliterateText( sal_Int32 nStt, sal_Int32 nEnd, SwUndoTransliterate* pUndo ) { - if (nStt < nEnd && g_pBreakIt->GetBreakIter().is()) + if (nStt < nEnd) { // since we don't use Hiragana/Katakana or half-width/full-width transliterations here // it is fine to use ANYWORD_IGNOREWHITESPACES. (ANY_WORD btw is broken and will @@ -2049,30 +2046,29 @@ bool SwTextNode::CountWords( SwDocStat& rStat, // count words in masked and expanded text: if (!aExpandText.isEmpty()) { - if (g_pBreakIt->GetBreakIter().is()) - { - // zero is NULL for pLanguage -----------v last param = true for clipping - SwScanner aScanner( *this, aExpandText, nullptr, aConversionMap, i18n::WordType::WORD_COUNT, - nExpandBegin, nExpandEnd, true ); + assert(g_pBreakIt && g_pBreakIt->GetBreakIter().is()); + + // zero is NULL for pLanguage -----------v last param = true for clipping + SwScanner aScanner( *this, aExpandText, nullptr, aConversionMap, i18n::WordType::WORD_COUNT, + nExpandBegin, nExpandEnd, true ); - // used to filter out scanner returning almost empty strings (len=1; unichar=0x0001) - const OUString aBreakWord( CH_TXTATR_BREAKWORD ); + // used to filter out scanner returning almost empty strings (len=1; unichar=0x0001) + const OUString aBreakWord( CH_TXTATR_BREAKWORD ); - while ( aScanner.NextWord() ) + while ( aScanner.NextWord() ) + { + if( !aExpandText.match(aBreakWord, aScanner.GetBegin() )) { - if( !aExpandText.match(aBreakWord, aScanner.GetBegin() )) - { - ++nTmpWords; - const OUString &rWord = aScanner.GetWord(); - if (g_pBreakIt->GetBreakIter()->getScriptType(rWord, 0) == i18n::ScriptType::ASIAN) - ++nTmpAsianWords; - nTmpCharsExcludingSpaces += g_pBreakIt->getGraphemeCount(rWord); - } + ++nTmpWords; + const OUString &rWord = aScanner.GetWord(); + if (g_pBreakIt->GetBreakIter()->getScriptType(rWord, 0) == i18n::ScriptType::ASIAN) + ++nTmpAsianWords; + nTmpCharsExcludingSpaces += g_pBreakIt->getGraphemeCount(rWord); } - - nTmpCharsExcludingSpaces += aScanner.getOverriddenDashCount(); } + nTmpCharsExcludingSpaces += aScanner.getOverriddenDashCount(); + nTmpChars = g_pBreakIt->getGraphemeCount(aExpandText, nExpandBegin, nExpandEnd); } diff --git a/sw/source/filter/ww8/rtfattributeoutput.cxx b/sw/source/filter/ww8/rtfattributeoutput.cxx index 6385c73d009c..bb9bc38329d4 100644 --- a/sw/source/filter/ww8/rtfattributeoutput.cxx +++ b/sw/source/filter/ww8/rtfattributeoutput.cxx @@ -472,11 +472,8 @@ void RtfAttributeOutput::StartRuby(const SwTextNode& rNode, sal_Int32 /*nPos*/, other, so we make a guess based upon the first character of the text, defaulting to asian. */ - sal_uInt16 nRubyScript; - if (g_pBreakIt->GetBreakIter().is()) - nRubyScript = g_pBreakIt->GetBreakIter()->getScriptType(rRuby.GetText(), 0); - else - nRubyScript = i18n::ScriptType::ASIAN; + assert(g_pBreakIt && g_pBreakIt->GetBreakIter().is()); + sal_uInt16 nRubyScript = g_pBreakIt->GetBreakIter()->getScriptType(rRuby.GetText(), 0); const SwTextRuby* pRubyText = rRuby.GetTextRuby(); const SwCharFormat* pFormat = pRubyText ? pRubyText->GetCharFormat() : nullptr; @@ -516,7 +513,7 @@ void RtfAttributeOutput::StartRuby(const SwTextNode& rNode, sal_Int32 /*nPos*/, } aStr += "(\\s\\up "; - if (g_pBreakIt->GetBreakIter().is() && pRubyText) + if (pRubyText) nRubyScript = g_pBreakIt->GetBreakIter()->getScriptType(rNode.GetText(), pRubyText->GetStart()); else diff --git a/sw/source/filter/ww8/writerwordglue.cxx b/sw/source/filter/ww8/writerwordglue.cxx index 4cea33ce6ed0..a2a6aa29c454 100644 --- a/sw/source/filter/ww8/writerwordglue.cxx +++ b/sw/source/filter/ww8/writerwordglue.cxx @@ -533,7 +533,8 @@ namespace sw using namespace ::com::sun::star::i18n; sal_uInt16 nScript = i18n::ScriptType::LATIN; - if (!rText.isEmpty() && g_pBreakIt && g_pBreakIt->GetBreakIter().is()) + assert(g_pBreakIt && g_pBreakIt->GetBreakIter().is()); + if (!rText.isEmpty()) nScript = g_pBreakIt->GetBreakIter()->getScriptType(rText, 0); rtl_TextEncoding eChrSet = ItemGet<SvxFontItem>(rTextNd, @@ -591,21 +592,19 @@ namespace sw } ubidi_close(pBidi); + assert(g_pBreakIt && g_pBreakIt->GetBreakIter().is()); - if (g_pBreakIt && g_pBreakIt->GetBreakIter().is()) + sal_Int32 nLen = rText.getLength(); + sal_Int32 nPos = 0; + while (nPos < nLen) { - sal_Int32 nLen = rText.getLength(); - sal_Int32 nPos = 0; - while (nPos < nLen) - { - sal_Int32 nEnd2 = g_pBreakIt->GetBreakIter()->endOfScript(rText, nPos, - nScript); - if (nEnd2 < 0) - break; - nPos = nEnd2; - aScripts.push_back(ScriptEntry(nPos, nScript)); - nScript = g_pBreakIt->GetBreakIter()->getScriptType(rText, nPos); - } + sal_Int32 nEnd2 = g_pBreakIt->GetBreakIter()->endOfScript(rText, nPos, + nScript); + if (nEnd2 < 0) + break; + nPos = nEnd2; + aScripts.push_back(ScriptEntry(nPos, nScript)); + nScript = g_pBreakIt->GetBreakIter()->getScriptType(rText, nPos); } cDirIter aBiDiEnd = aDirChanges.end(); diff --git a/sw/source/filter/ww8/wrtw8esh.cxx b/sw/source/filter/ww8/wrtw8esh.cxx index 0e1ebe84c0e2..8bf4fc9eac0d 100644 --- a/sw/source/filter/ww8/wrtw8esh.cxx +++ b/sw/source/filter/ww8/wrtw8esh.cxx @@ -1086,10 +1086,8 @@ void MSWord_SdrAttrIter::NextPara( sal_Int32 nPar ) pEditPool = aSet.GetPool(); eNdChrSet = ItemGet<SvxFontItem>(aSet,EE_CHAR_FONTINFO).GetCharSet(); - if( g_pBreakIt->GetBreakIter().is() ) - nScript = g_pBreakIt->GetBreakIter()->getScriptType( pEditObj->GetText(nPara), 0); - else - nScript = i18n::ScriptType::LATIN; + assert(g_pBreakIt && g_pBreakIt->GetBreakIter().is()); + nScript = g_pBreakIt->GetBreakIter()->getScriptType( pEditObj->GetText(nPara), 0); pEditObj->GetCharAttribs( nPara, aTextAtrArr ); nAktSwPos = SearchNext( 1 ); diff --git a/sw/source/filter/ww8/wrtw8nds.cxx b/sw/source/filter/ww8/wrtw8nds.cxx index 6c83fae8a43d..d931cb8fab5f 100644 --- a/sw/source/filter/ww8/wrtw8nds.cxx +++ b/sw/source/filter/ww8/wrtw8nds.cxx @@ -805,11 +805,8 @@ void WW8AttributeOutput::StartRuby( const SwTextNode& rNode, sal_Int32 /*nPos*/, other, so we make a guess based upon the first character of the text, defaulting to asian. */ - sal_uInt16 nRubyScript; - if( g_pBreakIt->GetBreakIter().is() ) - nRubyScript = g_pBreakIt->GetBreakIter()->getScriptType( rRuby.GetText(), 0); - else - nRubyScript = i18n::ScriptType::ASIAN; + assert(g_pBreakIt && g_pBreakIt->GetBreakIter().is()); + sal_uInt16 nRubyScript = g_pBreakIt->GetBreakIter()->getScriptType( rRuby.GetText(), 0); const SwTextRuby* pRubyText = rRuby.GetTextRuby(); const SwCharFormat* pFormat = pRubyText ? pRubyText->GetCharFormat() : nullptr; @@ -853,11 +850,9 @@ void WW8AttributeOutput::StartRuby( const SwTextNode& rNode, sal_Int32 /*nPos*/, } aStr += "(\\s\\up "; - if ( g_pBreakIt->GetBreakIter().is() ) - nRubyScript = g_pBreakIt->GetBreakIter()->getScriptType( rNode.GetText(), - pRubyText->GetStart() ); - else - nRubyScript = i18n::ScriptType::ASIAN; + assert(g_pBreakIt && g_pBreakIt->GetBreakIter().is()); + nRubyScript = g_pBreakIt->GetBreakIter()->getScriptType( rNode.GetText(), + pRubyText->GetStart() ); const SwAttrSet& rSet = rNode.GetSwAttrSet(); const SvxFontHeightItem &rHeightItem = @@ -1652,9 +1647,8 @@ OUString SwWW8AttrIter::GetSnippet(const OUString &rStr, sal_Int32 nAktPos, if (SvxCaseMap::Capitalize == static_cast<const SvxCaseMapItem&>(rItem).GetValue()) { - sal_uInt16 nScriptType = i18n::ScriptType::LATIN; - if (g_pBreakIt->GetBreakIter().is()) - nScriptType = g_pBreakIt->GetBreakIter()->getScriptType(aSnippet, 0); + assert(g_pBreakIt && g_pBreakIt->GetBreakIter().is()); + sal_uInt16 nScriptType = g_pBreakIt->GetBreakIter()->getScriptType(aSnippet, 0); LanguageType nLanguage; switch (nScriptType) @@ -1679,7 +1673,7 @@ OUString SwWW8AttrIter::GetSnippet(const OUString &rStr, sal_Int32 nAktPos, //If we weren't at the begin of a word undo the case change. //not done before doing the casemap because the sequence might start //with whitespace - if (g_pBreakIt->GetBreakIter().is() && !g_pBreakIt->GetBreakIter()->isBeginWord( + if (!g_pBreakIt->GetBreakIter()->isBeginWord( rStr, nAktPos, g_pBreakIt->GetLocale(nLanguage), i18n::WordType::ANYWORD_IGNOREWHITESPACES ) ) { diff --git a/sw/source/filter/ww8/ww8atr.cxx b/sw/source/filter/ww8/ww8atr.cxx index 92f2affe9db0..4c46be68f905 100644 --- a/sw/source/filter/ww8/ww8atr.cxx +++ b/sw/source/filter/ww8/ww8atr.cxx @@ -2828,11 +2828,8 @@ void AttributeOutputBase::TextField( const SwFormatField& rField ) asian or western text based up on the first character and use the font size of that script as our default. */ - sal_uInt16 nScript; - if( g_pBreakIt->GetBreakIter().is() ) - nScript = g_pBreakIt->GetBreakIter()->getScriptType( pField->GetPar1(), 0); - else - nScript = i18n::ScriptType::ASIAN; + assert(g_pBreakIt && g_pBreakIt->GetBreakIter().is()); + sal_uInt16 nScript = g_pBreakIt->GetBreakIter()->getScriptType( pField->GetPar1(), 0); long nHeight = static_cast<const SvxFontHeightItem&>((GetExport().GetItem( GetWhichOfScript(RES_CHRATR_FONTSIZE,nScript)))).GetHeight(); @@ -4313,11 +4310,7 @@ void AttributeOutputBase::ParaLineSpacing( const SvxLineSpacingItem& rSpacing ) { const SwTextNode* pNd = static_cast<const SwTextNode*>(GetExport().m_pOutFormatNode); pSet = &pNd->GetSwAttrSet(); - if ( g_pBreakIt->GetBreakIter().is() ) - { - nScript = g_pBreakIt->GetBreakIter()-> - getScriptType(pNd->GetText(), 0); - } + nScript = g_pBreakIt->GetBreakIter()->getScriptType(pNd->GetText(), 0); } OSL_ENSURE( pSet, "No attrset for lineheight :-(" ); if ( pSet ) diff --git a/sw/source/filter/ww8/ww8par.cxx b/sw/source/filter/ww8/ww8par.cxx index 2a52276d6359..fdd95eeb040f 100644 --- a/sw/source/filter/ww8/ww8par.cxx +++ b/sw/source/filter/ww8/ww8par.cxx @@ -3195,11 +3195,7 @@ void SwWW8ImplReader::emulateMSWordAddTextToParagraph(const OUString& rAddString return; uno::Reference<i18n::XBreakIterator> xBI(g_pBreakIt->GetBreakIter()); - if (!xBI.is()) - { - simpleAddTextToParagraph(rAddString); - return; - } + assert(xBI.is()); sal_Int16 nScript = lcl_getScriptType(xBI, rAddString, 0); sal_Int32 nLen = rAddString.getLength(); diff --git a/sw/source/filter/ww8/ww8par5.cxx b/sw/source/filter/ww8/ww8par5.cxx index 3c254f99dc71..01dbc987c4fa 100644 --- a/sw/source/filter/ww8/ww8par5.cxx +++ b/sw/source/filter/ww8/ww8par5.cxx @@ -2704,11 +2704,8 @@ void SwWW8ImplReader::Read_SubF_Ruby( WW8ReadFieldParams& rReadParam) SwFormatRuby aRuby(sRuby); const SwCharFormat *pCharFormat=nullptr; //Make a guess at which of asian of western we should be setting - sal_uInt16 nScript; - if (g_pBreakIt->GetBreakIter().is()) - nScript = g_pBreakIt->GetBreakIter()->getScriptType(sRuby, 0); - else - nScript = i18n::ScriptType::ASIAN; + assert(g_pBreakIt && g_pBreakIt->GetBreakIter().is()); + sal_uInt16 nScript = g_pBreakIt->GetBreakIter()->getScriptType(sRuby, 0); //Check to see if we already have a ruby charstyle that this fits std::vector<const SwCharFormat*>::const_iterator aEnd = diff --git a/sw/source/uibase/docvw/edtwin.cxx b/sw/source/uibase/docvw/edtwin.cxx index 017c719c81f7..355629a7f051 100644 --- a/sw/source/uibase/docvw/edtwin.cxx +++ b/sw/source/uibase/docvw/edtwin.cxx @@ -748,15 +748,13 @@ bool SwEditWin::IsInputSequenceCheckingRequired( const OUString &rText, const Sw SwBreakIt *pBreakIter = SwBreakIt::Get(); uno::Reference < i18n::XBreakIterator > xBI = pBreakIter->GetBreakIter(); + assert(xBI.is()); long nCTLScriptPos = -1; - if (xBI.is()) - { - if (xBI->getScriptType( rText, 0 ) == i18n::ScriptType::COMPLEX) - nCTLScriptPos = 0; - else - nCTLScriptPos = xBI->nextScript( rText, 0, i18n::ScriptType::COMPLEX ); - } + if (xBI->getScriptType( rText, 0 ) == i18n::ScriptType::COMPLEX) + nCTLScriptPos = 0; + else + nCTLScriptPos = xBI->nextScript( rText, 0, i18n::ScriptType::COMPLEX ); return (0 <= nCTLScriptPos && nCTLScriptPos <= rText.getLength()); }
_______________________________________________ Libreoffice-commits mailing list libreoffice-comm...@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/libreoffice-commits