Author: jghali
Date: Sat May 16 16:25:36 2020
New Revision: 23812

URL: http://scribus.net/websvn/listing.php?repname=Scribus&sc=1&rev=23812
Log:
Fix cases of non optimal iteration across document patterns

Modified:
    trunk/Scribus/scribus/scribusdoc.cpp

Modified: trunk/Scribus/scribus/scribusdoc.cpp
URL: 
http://scribus.net/websvn/diff.php?repname=Scribus&rev=23812&path=/trunk/Scribus/scribus/scribusdoc.cpp
==============================================================================
--- trunk/Scribus/scribus/scribusdoc.cpp        (original)
+++ trunk/Scribus/scribus/scribusdoc.cpp        Sat May 16 16:25:36 2020
@@ -529,10 +529,10 @@
                }
                allItems.clear();
        }
-       QStringList patterns = docPatterns.keys();
-       for (int i = 0; i < patterns.count(); ++i)
-       {
-               ScPattern pa = docPatterns[patterns[i]];
+       auto patternEnd = docPatterns.end();
+       for (auto it = docPatterns.begin(); it != patternEnd; ++it)
+       {
+               ScPattern& pa = it.value();
                for (int j = 0; j < pa.items.count(); j++)
                {
                        PageItem *currItem = pa.items.at(j);
@@ -3688,10 +3688,10 @@
                }
                allItems.clear();
        }
-       QStringList patterns = docPatterns.keys();
-       for (int c = 0; c < patterns.count(); ++c)
-       {
-               ScPattern pa = docPatterns[patterns[c]];
+       auto patternEnd = docPatterns.end();
+       for (auto it = docPatterns.begin(); it != patternEnd; ++it)
+       {
+               ScPattern& pa = it.value();
                for (int o = 0; o < pa.items.count(); o++)
                {
                        PageItem *currItem = pa.items.at(o);
@@ -3843,11 +3843,12 @@
                }
                allItems.clear();
        }
-       for (QHash<QString, ScPattern>::const_iterator it = 
docPatterns.begin(); it != docPatterns.end(); ++it)
-       {
-               for (int i = 0; i < it.value().items.count(); ++i)
-               {
-                       PageItem* currItem = it.value().items.at(i);
+       for (auto it = docPatterns.constBegin(); it != docPatterns.constEnd(); 
++it)
+       {
+               const ScPattern& pattern = it.value();
+               for (int i = 0; i < pattern.items.count(); ++i)
+               {
+                       PageItem* currItem = pattern.items.at(i);
                        if (currItem->isGroup())
                                allItems = currItem->getAllChildren();
                        else
@@ -4075,9 +4076,10 @@
        }
        for (auto it = docPatterns.cbegin(); it != docPatterns.cend(); ++it)
        {
-               for (int i = 0; i < it.value().items.count(); ++i)
-               {
-                       PageItem* currItem = it.value().items.at(i);
+               const ScPattern& pattern = it.value();
+               for (int i = 0; i < pattern.items.count(); ++i)
+               {
+                       PageItem* currItem = pattern.items.at(i);
                        if (currItem->isGroup())
                                allItems = currItem->getAllChildren();
                        else
@@ -4201,8 +4203,8 @@
                }
        }
 
-       QHash<QString, ScPattern>::const_iterator patIter;
-       for (patIter = docPatterns.begin(); patIter != docPatterns.end(); 
++patIter)
+       auto patternEnd = docPatterns.cend();
+       for (auto patIter = docPatterns.cbegin(); patIter != patternEnd; 
++patIter)
        {
                const ScPattern& pat = patIter.value();
                allItems = pat.items;
@@ -4644,10 +4646,10 @@
                }
        }
 
-       QStringList patterns = docPatterns.keys();
-       for (int i = 0; i < patterns.count(); ++i)
-       {
-               ScPattern pa = docPatterns[patterns[i]];
+       auto patternEnd = docPatterns.constEnd();
+       for (auto patIter = docPatterns.constBegin(); patIter != patternEnd; 
++patIter)
+       {
+               const ScPattern& pa = patIter.value();
                for (it.begin(pa.items); *it; ++it)
                {
                        PageItem *currItem = *it;
@@ -4680,10 +4682,10 @@
                }
        }
 
-       QStringList patterns = docPatterns.keys();
-       for (int i = 0; i < patterns.count(); ++i)
-       {
-               ScPattern pa = docPatterns[patterns[i]];
+       auto patternEnd = docPatterns.constEnd();
+       for (auto patIter = docPatterns.constBegin(); patIter != patternEnd; 
++patIter)
+       {
+               const ScPattern& pa = patIter.value();
                for (it.begin(pa.items); *it; ++it)
                {
                        PageItem *currItem = *it;
@@ -4709,12 +4711,10 @@
        return m_docPrefsData.docSetupPrefs.docUnitIndex;
 }
 
-
 double ScribusDoc::unitRatio() const
 {
        return m_docUnitRatio;
 }
-
 
 bool ScribusDoc::applyMasterPage(const QString& pageName, int pageNumber)
 {
@@ -5113,10 +5113,10 @@
                }
                allItems.clear();
        }
-       QStringList patterns = docPatterns.keys();
-       for (int c = 0; c < patterns.count(); ++c)
-       {
-               ScPattern pa = docPatterns[patterns[c]];
+       auto patternEnd = docPatterns.end();
+       for (auto patIter = docPatterns.begin(); patIter != patternEnd; 
++patIter)
+       {
+               ScPattern& pa = patIter.value();
                if (pa.items.count() <= 0)
                        continue;
                for (int o = 0; o < pa.items.count(); o++)
@@ -5176,7 +5176,7 @@
                miny = qMin(miny, y1);
                maxx = qMax(maxx, x2);
                maxy = qMax(maxy, y2);
-               docPatterns[patterns[c]].pattern = 
ite->DrawObj_toImage(qMin(qMax(maxx - minx, maxy - miny), 500.0));
+               pa.pattern = ite->DrawObj_toImage(qMin(qMax(maxx - minx, maxy - 
miny), 500.0));
        }
 
        m_undoManager->setUndoEnabled(true);
@@ -6060,8 +6060,7 @@
 
        // #11274: Scribus crash when opening .sla document
        // OwnPage is not meaningful for pattern items
-       QHash<QString, ScPattern>::iterator patternIt;
-       for (patternIt = docPatterns.begin(); patternIt != docPatterns.end(); 
++patternIt)
+       for (auto patternIt = docPatterns.begin(); patternIt != 
docPatterns.end(); ++patternIt)
        {
                QList<PageItem*> patternItems = patternIt->items;
                while (patternItems.count() > 0)
@@ -9890,7 +9889,7 @@
 //CB Same as RecalcPicturesRes apart from the name checking, which should be 
able to be removed
 void ScribusDoc::updatePict(const QString& name)
 {
-       bool updated=false;
+       bool updated = false;
        QList<PageItem*> allItems;
        for (int i = 0; i < DocItems.count(); ++i)
        {
@@ -9967,10 +9966,10 @@
                }
                allItems.clear();
        }
-       QStringList patterns = docPatterns.keys();
-       for (int i = 0; i < patterns.count(); ++i)
-       {
-               ScPattern pa = docPatterns[patterns[i]];
+       auto patternEnd = docPatterns.end();
+       for (auto it = docPatterns.begin(); it != patternEnd; ++it)
+       {
+               ScPattern& pa = it.value();
                if (pa.items.count() <= 0)
                        continue;
                for (int j = 0; j < pa.items.count(); j++)
@@ -10009,7 +10008,7 @@
                miny = qMin(miny, y1);
                maxx = qMax(maxx, x2);
                maxy = qMax(maxy, y2);
-               docPatterns[patterns[i]].pattern = 
ite->DrawObj_toImage(qMin(qMax(maxx - minx, maxy - miny), 500.0));
+               pa.pattern = ite->DrawObj_toImage(qMin(qMax(maxx - minx, maxy - 
miny), 500.0));
        }
        if (updated)
        {
@@ -10109,10 +10108,10 @@
                }
                allItems.clear();
        }
-       QStringList patterns = docPatterns.keys();
-       for (int c = 0; c < patterns.count(); ++c)
-       {
-               ScPattern pa = docPatterns[patterns[c]];
+       auto patternEnd = docPatterns.end();
+       for (auto it = docPatterns.begin(); it != patternEnd; ++it)
+       {
+               ScPattern& pa = it.value();
                if (pa.items.count() <= 0)
                        continue;
                for (int o = 0; o < pa.items.count(); o++)
@@ -10155,7 +10154,7 @@
                miny = qMin(miny, y1);
                maxx = qMax(maxx, x2);
                maxy = qMax(maxy, y2);
-               docPatterns[patterns[c]].pattern = 
ite->DrawObj_toImage(qMin(qMax(maxx - minx, maxy - miny), 500.0));
+               pa.pattern = ite->DrawObj_toImage(qMin(qMax(maxx - minx, maxy - 
miny), 500.0));
        }
        if (updated)
        {
@@ -10172,7 +10171,6 @@
        PageItemIterator itemIt;
        ScGuardedPtr<ScribusDoc> docPtr = guardedPtr();
        QList<PageItem*> frameItemList = FrameItems.values();
-       QStringList patterns = docPatterns.keys();
 
        for (itemIt.begin(DocItems); *itemIt; ++itemIt)
        {
@@ -10192,9 +10190,10 @@
                if (currItem->imageIsAvailable)
                        imageCount++;
        }
-       for (int c = 0; c < patterns.count(); ++c)
-       {
-               ScPattern pa = docPatterns[patterns[c]];
+       auto patternConstEnd = docPatterns.constEnd();
+       for (auto patIt = docPatterns.constBegin(); patIt != patternConstEnd; 
++patIt)
+       {
+               const ScPattern& pa = patIt.value();
                for (itemIt.begin(pa.items); *itemIt; ++itemIt)
                {
                        PageItem *currItem = *itemIt;
@@ -10317,9 +10316,10 @@
                if (!docPtr) return;
        }
 
-       for (int i = 0; i < patterns.count(); ++i)
-       {
-               ScPattern pa = docPatterns[patterns[i]];
+       auto patternEnd = docPatterns.end();
+       for (auto patIt = docPatterns.begin(); patIt != patternEnd; ++patIt)
+       {
+               ScPattern& pa = patIt.value();
                if (pa.items.count() <= 0)
                        continue;
                for (itemIt.begin(pa.items); *itemIt; ++itemIt)
@@ -10368,7 +10368,7 @@
                miny = qMin(miny, y1);
                maxx = qMax(maxx, x2);
                maxy = qMax(maxy, y2);
-               docPatterns[patterns[i]].pattern = 
ite->DrawObj_toImage(qMin(qMax(maxx - minx, maxy - miny), 500.0));
+               pa.pattern = ite->DrawObj_toImage(qMin(qMax(maxx - minx, maxy - 
miny), 500.0));
        }
        regionsChanged()->update(QRectF());
        changed();
@@ -10383,7 +10383,7 @@
 
 void ScribusDoc::removePict(const QString& name)
 {
-       bool updated=false;
+       bool updated = false;
        QList<PageItem*> allItems;
        for (int a = 0; a < DocItems.count(); ++a)
        {
@@ -10399,7 +10399,7 @@
                        {
                                currItem->imageIsAvailable = false;
                                currItem->pixm = ScImage();
-                               updated=true;
+                               updated = true;
                        }
                }
                allItems.clear();
@@ -10418,7 +10418,7 @@
                        {
                                currItem->imageIsAvailable = false;
                                currItem->pixm = ScImage();
-                               updated=true;
+                               updated = true;
                        }
                }
                allItems.clear();
@@ -10437,15 +10437,15 @@
                        {
                                currItem->imageIsAvailable = false;
                                currItem->pixm = ScImage();
-                               updated=true;
+                               updated = true;
                        }
                }
                allItems.clear();
        }
-       QStringList patterns = docPatterns.keys();
-       for (int c = 0; c < patterns.count(); ++c)
-       {
-               ScPattern pa = docPatterns[patterns[c]];
+       auto patternEnd = docPatterns.end();
+       for (auto it = docPatterns.begin(); it != patternEnd; ++it)
+       {
+               ScPattern& pa = it.value();
                if (pa.items.count() <= 0)
                        continue;
                for (int o = 0; o < pa.items.count(); o++)
@@ -10462,7 +10462,7 @@
                                {
                                        currItem->imageIsAvailable = false;
                                        currItem->pixm = ScImage();
-                                       updated=true;
+                                       updated = true;
                                }
                        }
                        allItems.clear();
@@ -10478,7 +10478,7 @@
                miny = qMin(miny, y1);
                maxx = qMax(maxx, x2);
                maxy = qMax(maxy, y2);
-               docPatterns[patterns[c]].pattern = 
ite->DrawObj_toImage(qMin(qMax(maxx - minx, maxy - miny), 500.0));
+               pa.pattern = ite->DrawObj_toImage(qMin(qMax(maxx - minx, maxy - 
miny), 500.0));
        }
        if (updated)
        {
@@ -10496,7 +10496,7 @@
        if (docSelectionCount <= 0)
                return;
 
-       bool toUpdate=false;
+       bool toUpdate = false;
        for (uint i = 0; i < docSelectionCount; ++i)
        {
                PageItem* currItem = m_Selection->itemAt(i);


_______________________________________________
scribus-commit mailing list
[email protected]
http://lists.scribus.net/mailman/listinfo/scribus-commit

Reply via email to