Author: jghali Date: Tue May 1 22:54:37 2018 New Revision: 22511 URL: http://scribus.net/websvn/listing.php?repname=Scribus&sc=1&rev=22511 Log: remove some iterator ugliness by using c++11 auto type deduction
Modified: trunk/Scribus/scribus/scribusdoc.cpp trunk/Scribus/scribus/scribusdoc.h Modified: trunk/Scribus/scribus/scribusdoc.cpp URL: http://scribus.net/websvn/diff.php?repname=Scribus&rev=22511&path=/trunk/Scribus/scribus/scribusdoc.cpp ============================================================================== --- trunk/Scribus/scribus/scribusdoc.cpp (original) +++ trunk/Scribus/scribus/scribusdoc.cpp Tue May 1 22:54:37 2018 @@ -3612,25 +3612,26 @@ } -void ScribusDoc::orderedLayerList(QStringList* list) -{ - Q_ASSERT(list!=nullptr); - int layerCount=Layers.count(); - if (layerCount != 0) - { - for (int i=0; i < layerCount; ++i) - { - ScLayers::iterator itend=Layers.end(); - for (ScLayers::iterator it = Layers.begin(); it != itend; ++it) - { - if (layerCount-(*it).Level-1 == i) - list->append((*it).Name); - } - } +void ScribusDoc::orderedLayerList(QStringList* list) const +{ + Q_ASSERT(list != nullptr); + + int layerCount = Layers.count(); + if (layerCount == 0) + return; + + for (int i=0; i < layerCount; ++i) + { + auto itend = Layers.cend(); + for (auto it = Layers.cbegin(); it != itend; ++it) + { + if (layerCount - it->Level - 1 == i) + list->append(it->Name); + } } } -int ScribusDoc::firstLayerID() +int ScribusDoc::firstLayerID() const { QStringList newNames; orderedLayerList(&newNames); @@ -3701,18 +3702,17 @@ } } -void ScribusDoc::getUsedColors(ColorList &colorsToUse, bool spot) +void ScribusDoc::getUsedColors(ColorList &colorsToUse, bool spot) const { bool found; colorsToUse.clear(); - colorsToUse.setDocument(this); - ColorList::Iterator it; + colorsToUse.setDocument(const_cast<ScribusDoc*>(this)); ResourceCollection resources; this->getNamedResources(resources); const QMap<QString, QString>& resColors = resources.colors(); - for (it = PageColors.begin(); it != PageColors.end(); ++it) + for (auto it = PageColors.cbegin(); it != PageColors.cend(); ++it) { found = false; // Tool preferences colors @@ -3751,19 +3751,18 @@ } } -bool ScribusDoc::lineStylesUseColor(const QString& colorName) +bool ScribusDoc::lineStylesUseColor(const QString& colorName) const { bool found = false; - QHash<QString,multiLine>::const_iterator itm, itmend; multiLine::const_iterator its, itsend; - itmend = MLineStyles.constEnd(); - for (itm = MLineStyles.constBegin(); itm != itmend && !found; ++itm) + auto itmend = MLineStyles.constEnd(); + for (auto itm = MLineStyles.constBegin(); itm != itmend && !found; ++itm) { const multiLine& ml = itm.value(); itsend = ml.constEnd(); for (its = ml.constBegin(); its != itsend; ++its) { - if ( its->Color == colorName ) + if (its->Color == colorName) { found = true; break; @@ -3773,22 +3772,21 @@ return found; } -void ScribusDoc::getUsedGradients(QHash<QString, VGradient> &gradients) +void ScribusDoc::getUsedGradients(QHash<QString, VGradient> &gradients) const { ResourceCollection resources; this->getNamedResources(resources); const QMap<QString, QString>& resGradients = resources.gradients(); - QHash<QString, VGradient>::iterator it; - for (it = docGradients.begin(); it != docGradients.end(); ++it) + for (auto it = docGradients.cbegin(); it != docGradients.cend(); ++it) { if (resGradients.contains(it.key())) - gradients.insert(it.key(), docGradients[it.key()]); - } -} - -bool ScribusDoc::addGradient(QString &name, VGradient &gradient) -{ - for (QHash<QString, VGradient>::Iterator it = docGradients.begin(); it != docGradients.end(); ++it) + gradients.insert(it.key(), it.value()); + } +} + +bool ScribusDoc::addGradient(QString &name, const VGradient &gradient) +{ + for (auto it = docGradients.cbegin(); it != docGradients.cend(); ++it) { if (it.value() == gradient) { @@ -3803,7 +3801,7 @@ return true; } -void ScribusDoc::setGradients(QHash<QString, VGradient> &gradients) +void ScribusDoc::setGradients(const QHash<QString, VGradient> &gradients) { docGradients.clear(); docGradients = gradients; @@ -3908,7 +3906,7 @@ return pattern; } -void ScribusDoc::setPatterns(QHash<QString, ScPattern> &patterns) +void ScribusDoc::setPatterns(const QHash<QString, ScPattern> &patterns) { docPatterns.clear(); docPatterns = patterns; @@ -4025,61 +4023,59 @@ } -QStringList ScribusDoc::getUsedPatternsSelection(Selection* customSelection) +QStringList ScribusDoc::getUsedPatternsSelection(Selection* customSelection) const { QStringList results; int selectedItemCount = customSelection->count(); - if (selectedItemCount != 0) - { - for (int i = 0; i < selectedItemCount; ++i) - { - PageItem *currItem = customSelection->itemAt(i); - QList<PageItem*> allItems; - if (currItem->isGroup()) - allItems = currItem->getAllChildren(); - else - allItems.append(currItem); - for (int j = 0; j < allItems.count(); j++) - { - currItem = allItems.at(j); - if ((currItem->GrType == 8) || (currItem->itemType() == PageItem::Symbol)) - { - const QString& pat = currItem->pattern(); - if (!pat.isEmpty() && !results.contains(pat)) - results.append(currItem->pattern()); - } - const QString& pat2 = currItem->strokePattern(); - if (!pat2.isEmpty() && !results.contains(pat2)) - results.append(currItem->strokePattern()); - const QString& pat3 = currItem->patternMask(); - if (!pat3.isEmpty() && !results.contains(pat3)) - results.append(currItem->patternMask()); - } - allItems.clear(); - } - QStringList results2 = results; - for (int i = 0; i < results.count(); ++i) - { - QStringList pats = getUsedPatternsHelper(results[i], results2); - if (pats.isEmpty()) - continue; - for (int j = 0; j < pats.count(); j++) - { - if (!results2.contains(pats[j])) - results2.append(pats[j]); - } - } - return results2; - } - else + if (selectedItemCount == 0) return QStringList(); -} - -QStringList ScribusDoc::getUsedPatternsHelper(QString pattern, QStringList &results) + + for (int i = 0; i < selectedItemCount; ++i) + { + PageItem *currItem = customSelection->itemAt(i); + QList<PageItem*> allItems; + if (currItem->isGroup()) + allItems = currItem->getAllChildren(); + else + allItems.append(currItem); + for (int j = 0; j < allItems.count(); j++) + { + currItem = allItems.at(j); + if ((currItem->GrType == 8) || (currItem->itemType() == PageItem::Symbol)) + { + const QString& pat = currItem->pattern(); + if (!pat.isEmpty() && !results.contains(pat)) + results.append(currItem->pattern()); + } + const QString& pat2 = currItem->strokePattern(); + if (!pat2.isEmpty() && !results.contains(pat2)) + results.append(currItem->strokePattern()); + const QString& pat3 = currItem->patternMask(); + if (!pat3.isEmpty() && !results.contains(pat3)) + results.append(currItem->patternMask()); + } + allItems.clear(); + } + QStringList results2 = results; + for (int i = 0; i < results.count(); ++i) + { + QStringList pats = getUsedPatternsHelper(results[i], results2); + if (pats.isEmpty()) + continue; + for (int j = 0; j < pats.count(); j++) + { + if (!results2.contains(pats[j])) + results2.append(pats[j]); + } + } + return results2; +} + +QStringList ScribusDoc::getUsedPatternsHelper(QString pattern, QStringList &results) const { if (!docPatterns.contains(pattern)) return QStringList(); - ScPattern *pat = &docPatterns[pattern]; + const ScPattern *pat = &docPatterns[pattern]; QStringList pats; for (int i = 0; i < pat->items.count(); ++i) { @@ -4124,7 +4120,7 @@ return results; } -QStringList ScribusDoc::getPatternDependencyList(QStringList used) +QStringList ScribusDoc::getPatternDependencyList(QStringList used) const { QStringList results; QStringList pp; @@ -4157,7 +4153,7 @@ return results; } -QStringList ScribusDoc::getUsedSymbols() +QStringList ScribusDoc::getUsedSymbols() const { QList<PageItem*> allItems; QStringList results; @@ -4223,7 +4219,7 @@ } allItems.clear(); } - for (QHash<QString, ScPattern>::Iterator it = docPatterns.begin(); it != docPatterns.end(); ++it) + for (auto it = docPatterns.cbegin(); it != docPatterns.cend(); ++it) { for (int i = 0; i < it.value().items.count(); ++i) { @@ -4249,9 +4245,9 @@ return results; } -QStringList ScribusDoc::getUsedSymbolsHelper(QString pattern, QStringList &results) -{ - ScPattern *pat = &docPatterns[pattern]; +QStringList ScribusDoc::getUsedSymbolsHelper(QString pattern, QStringList &results) const +{ + const ScPattern *pat = &docPatterns[pattern]; QStringList pats; for (int i = 0; i < pat->items.count(); ++i) { @@ -4635,23 +4631,24 @@ } -void ScribusDoc::getUsedProfiles(ProfilesL& usedProfiles) +void ScribusDoc::getUsedProfiles(ProfilesL& usedProfiles) const { PageItem* it = nullptr; QStringList profileNames; + QList<PageItem*> allItems; int counter = 0; + usedProfiles.clear(); - QList<PageItem*> allItems; profileNames.append(m_docPrefsData.colorPrefs.DCMSset.DefaultSolidColorRGBProfile); profileNames.append(m_docPrefsData.colorPrefs.DCMSset.DefaultSolidColorCMYKProfile); - if (profileNames.indexOf(m_docPrefsData.colorPrefs.DCMSset.DefaultImageRGBProfile) < 0 ) + if (profileNames.indexOf(m_docPrefsData.colorPrefs.DCMSset.DefaultImageRGBProfile) < 0) profileNames.append(m_docPrefsData.colorPrefs.DCMSset.DefaultImageRGBProfile); - if (profileNames.indexOf(m_docPrefsData.colorPrefs.DCMSset.DefaultImageCMYKProfile) < 0 ) + if (profileNames.indexOf(m_docPrefsData.colorPrefs.DCMSset.DefaultImageCMYKProfile) < 0) profileNames.append(m_docPrefsData.colorPrefs.DCMSset.DefaultImageCMYKProfile); - if (profileNames.indexOf(m_docPrefsData.colorPrefs.DCMSset.DefaultMonitorProfile) < 0 ) + if (profileNames.indexOf(m_docPrefsData.colorPrefs.DCMSset.DefaultMonitorProfile) < 0) profileNames.append(m_docPrefsData.colorPrefs.DCMSset.DefaultMonitorProfile); - if (profileNames.indexOf(m_docPrefsData.colorPrefs.DCMSset.DefaultPrinterProfile) < 0 ) + if (profileNames.indexOf(m_docPrefsData.colorPrefs.DCMSset.DefaultPrinterProfile) < 0) profileNames.append(m_docPrefsData.colorPrefs.DCMSset.DefaultPrinterProfile); if (profileNames.indexOf(m_docPrefsData.pdfPrefs.SolidProf) < 0) @@ -4661,18 +4658,14 @@ if (profileNames.indexOf(m_docPrefsData.pdfPrefs.PrintProf) < 0) profileNames.append(m_docPrefsData.pdfPrefs.PrintProf); + const QList<PageItem*>* itemLists[] = { &MasterItems, &DocItems }; for (int lc = 0; lc < 2; ++lc) { - if (lc == 0) - counter = MasterItems.count(); - else if (lc == 1) - counter = DocItems.count(); + const auto* pItemList = itemLists[lc]; + counter = pItemList->count(); for (int d = 0; d < counter; ++d) { - if (lc == 0) - it = MasterItems.at(d); - else if (lc == 1) - it = DocItems.at(d); + it = pItemList->at(d); if (it->isGroup()) allItems = it->getAllChildren(); else @@ -4687,7 +4680,8 @@ allItems.clear(); } } - for (auto itf = FrameItems.begin(); itf != FrameItems.end(); ++itf) + + for (auto itf = FrameItems.cbegin(); itf != FrameItems.cend(); ++itf) { PageItem *it = itf.value(); if (it->isGroup()) @@ -4704,7 +4698,7 @@ allItems.clear(); } - for (QStringList::Iterator pIter = profileNames.begin(); pIter != profileNames.end(); pIter++) + for (auto pIter = profileNames.cbegin(); pIter != profileNames.cend(); pIter++) { if (ScCore->InputProfiles.contains(*pIter)) usedProfiles[*pIter] = ScCore->InputProfiles[*pIter]; Modified: trunk/Scribus/scribus/scribusdoc.h URL: http://scribus.net/websvn/diff.php?repname=Scribus&rev=22511&path=/trunk/Scribus/scribus/scribusdoc.h ============================================================================== --- trunk/Scribus/scribus/scribusdoc.h (original) +++ trunk/Scribus/scribus/scribusdoc.h Tue May 1 22:54:37 2018 @@ -501,16 +501,17 @@ * @brief Return a list of the layers in their order * @param list QStringList to insert the layer names into */ - void orderedLayerList(QStringList* list); - - int firstLayerID(); + void orderedLayerList(QStringList* list) const; + + int firstLayerID() const; + //Items bool deleteTaggedItems(); /*! * @brief Builds a qmap of the icc profiles used within the document */ - void getUsedProfiles(ProfilesL& usedProfiles); + void getUsedProfiles(ProfilesL& usedProfiles) const; bool OpenCMSProfiles(ProfilesL InPo, ProfilesL InPoCMYK, ProfilesL MoPo, ProfilesL PrPo); void CloseCMSProfiles(); void SetDefaultCMSParams(); @@ -675,26 +676,26 @@ /*! * @brief Builds a qmap of the colours used within the document */ - void getUsedColors(ColorList &colorsToUse, bool spot = false); + void getUsedColors(ColorList &colorsToUse, bool spot = false) const; /*! * @brief Return if a specific color is used by line styles */ - bool lineStylesUseColor(const QString& colorName); + bool lineStylesUseColor(const QString& colorName) const; /*! * @brief Builds a qmap of the gradients used within the document */ - void getUsedGradients(QHash<QString, VGradient> &Gradients); + void getUsedGradients(QHash<QString, VGradient> &Gradients) const; /*! * @brief Set the gradients for a document */ - bool addGradient(QString &name, VGradient &gradient); - void setGradients(QHash<QString, VGradient> &gradients); + bool addGradient(QString &name, const VGradient &gradient); + void setGradients(const QHash<QString, VGradient> &gradients); /*! * @brief Set the patterns for a document */ bool addPattern(QString &name, ScPattern& pattern); void removePattern(QString name); - void setPatterns(QHash<QString, ScPattern> &patterns); + void setPatterns(const QHash<QString, ScPattern> &patterns); /*! * @brief Check pattern with specified name and return it if valid */ @@ -703,14 +704,14 @@ * @brief Builds a QStringList of the patterns used within the document */ QStringList getUsedPatterns() const; - QStringList getUsedPatternsSelection(Selection* customSelection); - QStringList getUsedPatternsHelper(QString pattern, QStringList &results); - QStringList getPatternDependencyList(QStringList used); + QStringList getUsedPatternsSelection(Selection* customSelection) const; + QStringList getUsedPatternsHelper(QString pattern, QStringList &results) const; + QStringList getPatternDependencyList(QStringList used) const; /*! * @brief Builds a QStringList of the symbols used within the document */ - QStringList getUsedSymbols(); - QStringList getUsedSymbolsHelper(QString pattern, QStringList &results); + QStringList getUsedSymbols() const; + QStringList getUsedSymbolsHelper(QString pattern, QStringList &results) const; /*! * @brief Check if document use Acrobat Form Fields _______________________________________________ scribus-commit mailing list scribus-commit@lists.scribus.net http://lists.scribus.net/mailman/listinfo/scribus-commit