mirror of
https://invent.kde.org/graphics/okular
synced 2024-08-25 10:55:37 +00:00
Put duplicate code in a function
This commit is contained in:
parent
7825e4c545
commit
e74894ce94
|
@ -768,6 +768,54 @@ RegularAreaRect* TextPage::findText( int searchID, const QString &query, SearchD
|
|||
return ret;
|
||||
}
|
||||
|
||||
// hyphenated '-' must be at the end of a word, so hyphenation means
|
||||
// we have a '-' just followed by a '\n' character
|
||||
// check if the string contains a '-' character
|
||||
// if the '-' is the last entry
|
||||
static int stringLengthAdaptedWithHyphen(const QString &str, const TextList::ConstIterator &it, const TextList::ConstIterator &end, PagePrivate *page)
|
||||
{
|
||||
int len = str.length();
|
||||
|
||||
// hyphenated '-' must be at the end of a word, so hyphenation means
|
||||
// we have a '-' just followed by a '\n' character
|
||||
// check if the string contains a '-' character
|
||||
// if the '-' is the last entry
|
||||
if ( str.endsWith( '-' ) )
|
||||
{
|
||||
// validity chek of it + 1
|
||||
if ( ( it + 1 ) != end )
|
||||
{
|
||||
// 1. if the next character is '\n'
|
||||
const QString &lookahedStr = (*(it+1))->text();
|
||||
if (lookahedStr.startsWith('\n'))
|
||||
{
|
||||
len -= 1;
|
||||
}
|
||||
else
|
||||
{
|
||||
// 2. if the next word is in a different line or not
|
||||
const int pageWidth = page->m_page->width();
|
||||
const int pageHeight = page->m_page->height();
|
||||
|
||||
const QRect hyphenArea = (*it)->area.roundedGeometry(pageWidth, pageHeight);
|
||||
const QRect lookaheadArea = (*(it + 1))->area.roundedGeometry(pageWidth, pageHeight);
|
||||
|
||||
// lookahead to check whether both the '-' rect and next character rect overlap
|
||||
if( !doesConsumeY( hyphenArea, lookaheadArea, 70 ) )
|
||||
{
|
||||
len -= 1;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
// else if it is the second last entry - for example in pdf format
|
||||
else if (str.endsWith("-\n"))
|
||||
{
|
||||
len -= 2;
|
||||
}
|
||||
|
||||
return len;
|
||||
}
|
||||
|
||||
RegularAreaRect* TextPagePrivate::findTextInternalForward( int searchID, const QString &_query,
|
||||
Qt::CaseSensitivity caseSensitivity,
|
||||
|
@ -808,7 +856,7 @@ RegularAreaRect* TextPagePrivate::findTextInternalForward( int searchID, const Q
|
|||
offsetMoved = true;
|
||||
}
|
||||
{
|
||||
len=str.length();
|
||||
len = stringLengthAdaptedWithHyphen(str, it, end, m_page);
|
||||
|
||||
#ifdef DEBUG_TEXTPAGE
|
||||
kDebug(OkularDebug) << str.mid(offset,min) << ":" << _query.mid(j,min);
|
||||
|
@ -816,44 +864,6 @@ RegularAreaRect* TextPagePrivate::findTextInternalForward( int searchID, const Q
|
|||
// we have equal (or less than) area of the query left as the length of the current
|
||||
// entity
|
||||
|
||||
// hyphenated '-' must be at the end of a word, so hyphenation means
|
||||
// we have a '-' just followed by a '\n' character
|
||||
// check if the string contains a '-' character
|
||||
// if the '-' is the last entry
|
||||
if ( str.endsWith( '-' ) )
|
||||
{
|
||||
// validity chek of it + 1
|
||||
if ( ( it + 1 ) != end )
|
||||
{
|
||||
// 1. if the next character is '\n'
|
||||
const QString &lookahedStr = (*(it+1))->text();
|
||||
if (lookahedStr.startsWith('\n'))
|
||||
{
|
||||
len -= 1;
|
||||
}
|
||||
else
|
||||
{
|
||||
// 2. if the next word is in a different line or not
|
||||
const int pageWidth = m_page->m_page->width();
|
||||
const int pageHeight = m_page->m_page->height();
|
||||
|
||||
const QRect hyphenArea = (*it)->area.roundedGeometry(pageWidth, pageHeight);
|
||||
const QRect lookaheadArea = (*(it + 1))->area.roundedGeometry(pageWidth, pageHeight);
|
||||
|
||||
// lookahead to check whether both the '-' rect and next character rect overlap
|
||||
if( !doesConsumeY( hyphenArea, lookaheadArea, 70 ) )
|
||||
{
|
||||
len -= 1;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
// else if it is the second last entry - for example in pdf format
|
||||
else if (str.endsWith("-\n"))
|
||||
{
|
||||
len -= 2;
|
||||
}
|
||||
|
||||
int min=qMin(queryLeft,len);
|
||||
int resStrLen = 0, resQueryLen = 0;
|
||||
if ( !comparer( str.midRef( offset, min ), query.midRef( j, min ),
|
||||
|
@ -967,45 +977,7 @@ RegularAreaRect* TextPagePrivate::findTextInternalBackward( int searchID, const
|
|||
}
|
||||
else
|
||||
{
|
||||
len=str.length();
|
||||
|
||||
// hyphenated '-' must be at the end of a word, so hyphenation means
|
||||
// we have a '-' just followed by a '\n' character
|
||||
// check if the string contains a '-' character
|
||||
// if the '-' is the last entry
|
||||
if ( str.endsWith('-') )
|
||||
{
|
||||
// validity chek of it + 1
|
||||
if ( ( it + 1 ) != end )
|
||||
{
|
||||
// 1. if the next character is '\n'
|
||||
const QString &lookahedStr = (*(it+1))->text();
|
||||
if ( lookahedStr.startsWith('\n') )
|
||||
{
|
||||
len -= 1;
|
||||
}
|
||||
else
|
||||
{
|
||||
// 2. if the next word is in a different line or not
|
||||
const int pageWidth = m_page->m_page->width();
|
||||
const int pageHeight = m_page->m_page->height();
|
||||
|
||||
const QRect hyphenArea = (*it)->area.roundedGeometry(pageWidth,pageHeight);
|
||||
const QRect lookaheadArea = (*(it + 1))->area.roundedGeometry(pageWidth,pageHeight);
|
||||
|
||||
// lookahead to check whether both the '-' rect and next character rect overlap
|
||||
if ( !doesConsumeY( hyphenArea, lookaheadArea, 70 ) )
|
||||
{
|
||||
len -= 1;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
// else if it is the second last entry - for example in pdf format
|
||||
else if ( str.endsWith("-\n") )
|
||||
{
|
||||
len -= 2;
|
||||
}
|
||||
len = stringLengthAdaptedWithHyphen(str, it, end, m_page);
|
||||
|
||||
int min=qMin(queryLeft,len);
|
||||
#ifdef DEBUG_TEXTPAGE
|
||||
|
|
Loading…
Reference in a new issue