From 5cce9a11fe945747c7fbb3560a547d9e6fa63c9e Mon Sep 17 00:00:00 2001 From: Albert Astals Cid Date: Wed, 16 Jan 2019 19:29:52 +0100 Subject: [PATCH] Small refactor in TextDocumentGeneratorPrivate add const to a few variables Make two functions return a qlist instead of using a member qlist to return the results in them --- core/textdocumentgenerator.cpp | 29 +++++++++-------- core/textdocumentgenerator_p.h | 58 ++++++++++++++++------------------ 2 files changed, 44 insertions(+), 43 deletions(-) diff --git a/core/textdocumentgenerator.cpp b/core/textdocumentgenerator.cpp index 37286789a..c764809a8 100644 --- a/core/textdocumentgenerator.cpp +++ b/core/textdocumentgenerator.cpp @@ -165,8 +165,10 @@ void TextDocumentGeneratorPrivate::addMetaData( DocumentInfo::Key key, const QSt mDocumentInfo.set( key, value ); } -void TextDocumentGeneratorPrivate::generateLinkInfos() +QList TextDocumentGeneratorPrivate::generateLinkInfos() const { + QList result; + for ( int i = 0; i < mLinkPositions.count(); ++i ) { const LinkPosition &linkPosition = mLinkPositions[ i ]; @@ -177,12 +179,16 @@ void TextDocumentGeneratorPrivate::generateLinkInfos() info.boundingRect, info.page ); if ( info.page >= 0 ) - mLinkInfos.append( info ); + result.append( info ); } + + return result; } -void TextDocumentGeneratorPrivate::generateAnnotationInfos() +QList TextDocumentGeneratorPrivate::generateAnnotationInfos() const { + QList result; + for ( int i = 0; i < mAnnotationPositions.count(); ++i ) { const AnnotationPosition &annotationPosition = mAnnotationPositions[ i ]; @@ -193,8 +199,10 @@ void TextDocumentGeneratorPrivate::generateAnnotationInfos() info.boundingRect, info.page ); if ( info.page >= 0 ) - mAnnotationInfos.append( info ); + result.append( info ); } + + return result; } void TextDocumentGeneratorPrivate::generateTitleInfos() @@ -310,17 +318,15 @@ Document::OpenResult TextDocumentGenerator::loadDocumentWithPassword( const QStr d->mDocument = d->mConverter->document(); d->generateTitleInfos(); - d->generateLinkInfos(); - d->generateAnnotationInfos(); + const QList linkInfos = d->generateLinkInfos(); + const QList annotationInfos = d->generateAnnotationInfos(); pagesVector.resize( d->mDocument->pageCount() ); const QSize size = d->mDocument->pageSize().toSize(); QVector< QLinkedList > objects( d->mDocument->pageCount() ); - for ( int i = 0; i < d->mLinkInfos.count(); ++i ) { - const TextDocumentGeneratorPrivate::LinkInfo &info = d->mLinkInfos.at( i ); - + for ( const TextDocumentGeneratorPrivate::LinkInfo &info : linkInfos ) { // in case that the converter report bogus link info data, do not assert here if ( info.page >= objects.count() ) continue; @@ -331,8 +337,7 @@ Document::OpenResult TextDocumentGenerator::loadDocumentWithPassword( const QStr } QVector< QLinkedList > annots( d->mDocument->pageCount() ); - for ( int i = 0; i < d->mAnnotationInfos.count(); ++i ) { - const TextDocumentGeneratorPrivate::AnnotationInfo &info = d->mAnnotationInfos[ i ]; + for ( const TextDocumentGeneratorPrivate::AnnotationInfo &info : annotationInfos ) { annots[ info.page ].append( info.annotation ); } @@ -360,9 +365,7 @@ bool TextDocumentGenerator::doCloseDocument() d->mTitlePositions.clear(); d->mLinkPositions.clear(); - d->mLinkInfos.clear(); d->mAnnotationPositions.clear(); - d->mAnnotationInfos.clear(); // do not use clear() for the following two, otherwise they change type d->mDocumentInfo = Okular::DocumentInfo(); d->mDocumentSynopsis = Okular::DocumentSynopsis(); diff --git a/core/textdocumentgenerator_p.h b/core/textdocumentgenerator_p.h index e5fb0b34a..052860b8f 100644 --- a/core/textdocumentgenerator_p.h +++ b/core/textdocumentgenerator_p.h @@ -35,25 +35,25 @@ namespace TextDocumentUtils { const QTextBlock endBlock = document->findBlock( endPosition ); const QRectF endBoundingRect = document->documentLayout()->blockBoundingRect( endBlock ); - QTextLayout *startLayout = startBlock.layout(); - QTextLayout *endLayout = endBlock.layout(); + const QTextLayout *startLayout = startBlock.layout(); + const QTextLayout *endLayout = endBlock.layout(); if (!startLayout || !endLayout) { qCWarning(OkularCoreDebug) << "Start or end layout not found" << startLayout << endLayout; page = -1; return; } - int startPos = startPosition - startBlock.position(); - int endPos = endPosition - endBlock.position(); + const int startPos = startPosition - startBlock.position(); + const int endPos = endPosition - endBlock.position(); const QTextLine startLine = startLayout->lineForTextPosition( startPos ); const QTextLine endLine = endLayout->lineForTextPosition( endPos ); - double x = startBoundingRect.x() + startLine.cursorToX( startPos ); - double y = startBoundingRect.y() + startLine.y(); - double r = endBoundingRect.x() + endLine.cursorToX( endPos ); - double b = endBoundingRect.y() + endLine.y() + endLine.height(); + const double x = startBoundingRect.x() + startLine.cursorToX( startPos ); + const double y = startBoundingRect.y() + startLine.y(); + const double r = endBoundingRect.x() + endLine.cursorToX( endPos ); + const double b = endBoundingRect.y() + endLine.y() + endLine.height(); - int offset = qRound( y ) % qRound( pageSize.height() ); + const int offset = qRound( y ) % qRound( pageSize.height() ); if ( x > r ) { // line break, so return a pseudo character on the start line rect = QRectF( x / pageSize.width(), offset / pageSize.height(), @@ -71,7 +71,7 @@ namespace TextDocumentUtils { { const QAbstractTextDocumentLayout *layout = document->documentLayout(); const QSizeF pageSize = document->pageSize(); - double margin = document->rootFrame()->frameFormat().margin(); + const double margin = document->rootFrame()->frameFormat().margin(); /** * Take the upper left and lower left corner including the margin @@ -85,8 +85,8 @@ namespace TextDocumentUtils { const QSizeF pageSize = document->pageSize(); const QRectF rect = document->documentLayout()->blockBoundingRect( block ); - int page = qRound( rect.y() ) / qRound( pageSize.height() ); - int offset = qRound( rect.y() ) % qRound( pageSize.height() ); + const int page = qRound( rect.y() ) / qRound( pageSize.height() ); + const int offset = qRound( rect.y() ) % qRound( pageSize.height() ); Okular::DocumentViewport viewport( page ); viewport.rePos.normalizedX = (double)rect.x() / (double)pageSize.width(); @@ -128,6 +128,20 @@ class TextDocumentGeneratorPrivate : public GeneratorPrivate void initializeGenerator(); + struct LinkInfo + { + int page; + QRectF boundingRect; + Action *link; + }; + + struct AnnotationInfo + { + int page; + QRectF boundingRect; + Annotation *annotation; + }; + Q_DECLARE_PUBLIC( TextDocumentGenerator ) /* reimp */ QVariant metaData( const QString &key, const QVariant &option ) const override; @@ -143,8 +157,8 @@ class TextDocumentGeneratorPrivate : public GeneratorPrivate void addMetaData( const QString &key, const QString &value, const QString &title ); void addMetaData( DocumentInfo::Key, const QString &value ); - void generateLinkInfos(); - void generateAnnotationInfos(); + QList generateLinkInfos() const; + QList generateAnnotationInfos() const; void generateTitleInfos(); TextDocumentConverter *mConverter; @@ -169,14 +183,6 @@ class TextDocumentGeneratorPrivate : public GeneratorPrivate }; QList mLinkPositions; - struct LinkInfo - { - int page; - QRectF boundingRect; - Action *link; - }; - QList mLinkInfos; - struct AnnotationPosition { int startPosition; @@ -185,14 +191,6 @@ class TextDocumentGeneratorPrivate : public GeneratorPrivate }; QList mAnnotationPositions; - struct AnnotationInfo - { - int page; - QRectF boundingRect; - Annotation *annotation; - }; - QList mAnnotationInfos; - TextDocumentSettings *mGeneralSettings; QFont mFont;