diff options
author | jghali <jghali@11d20701-8431-0410-a711-e3c959e3b870> | 2012-08-03 22:33:53 +0000 |
---|---|---|
committer | jghali <jghali@11d20701-8431-0410-a711-e3c959e3b870> | 2012-08-03 22:33:53 +0000 |
commit | 092996ccb67d5d9897a757ac78aa43996a75dd93 (patch) | |
tree | 7bbb9f0978221cbb39b6c84e3dca7dd5ab620b13 | |
parent | 7d5ed2f76d11a6b0ad428e69680c4d4d6f444cc5 (diff) | |
download | scribus-092996ccb67d5d9897a757ac78aa43996a75dd93.tar.gz scribus-092996ccb67d5d9897a757ac78aa43996a75dd93.tar.xz scribus-092996ccb67d5d9897a757ac78aa43996a75dd93.zip |
#10999: Speed up some loops for very long text in many linked frames
git-svn-id: svn://scribus.net/branches/Version14x/Scribus@17750 11d20701-8431-0410-a711-e3c959e3b870
-rw-r--r-- | scribus/pdflib_core.cpp | 16 | ||||
-rw-r--r-- | scribus/plugins/scriptplugin/cmdutil.cpp | 2 | ||||
-rw-r--r-- | scribus/scribusdoc.cpp | 4 |
3 files changed, 16 insertions, 6 deletions
diff --git a/scribus/pdflib_core.cpp b/scribus/pdflib_core.cpp index 6a652cb..9018b7f 100644 --- a/scribus/pdflib_core.cpp +++ b/scribus/pdflib_core.cpp @@ -933,7 +933,9 @@ bool PDFLibCore::PDF_Begin_Doc(const QString& fn, SCFonts &AllFonts, QMap<QStrin ReallyUsed.insert(pgit->itemText.defaultStyle().charStyle().font().replacementName(), DocFonts[pgit->itemText.defaultStyle().charStyle().font().replacementName()]); } } - for (uint e = 0; e < static_cast<uint>(pgit->itemText.length()); ++e) + uint start = pgit->isTextFrame() ? (uint) pgit->firstInFrame() : 0; + uint stop = pgit->isTextFrame() ? (uint) pgit->lastInFrame() + 1 : (uint) pgit->itemText.length(); + for (uint e = start; e < stop; ++e) { ReallyUsed.insert(pgit->itemText.charStyle(e).font().replacementName(), DocFonts[pgit->itemText.charStyle(e).font().replacementName()]); } @@ -957,7 +959,9 @@ bool PDFLibCore::PDF_Begin_Doc(const QString& fn, SCFonts &AllFonts, QMap<QStrin ReallyUsed.insert(pgit->itemText.defaultStyle().charStyle().font().replacementName(), DocFonts[pgit->itemText.defaultStyle().charStyle().font().replacementName()]); } } - for (uint e = 0; e < static_cast<uint>(pgit->itemText.length()); ++e) + uint start = pgit->isTextFrame() ? (uint) pgit->firstInFrame() : 0; + uint stop = pgit->isTextFrame() ? (uint) pgit->lastInFrame() + 1 : (uint) pgit->itemText.length(); + for (uint e = start; e < stop; ++e) { ReallyUsed.insert(pgit->itemText.charStyle(e).font().replacementName(), DocFonts[pgit->itemText.charStyle(e).font().replacementName()]); } @@ -981,7 +985,9 @@ bool PDFLibCore::PDF_Begin_Doc(const QString& fn, SCFonts &AllFonts, QMap<QStrin ReallyUsed.insert(pgit->itemText.defaultStyle().charStyle().font().replacementName(), DocFonts[pgit->itemText.defaultStyle().charStyle().font().replacementName()]); } } - for (uint e = 0; e < static_cast<uint>(pgit->itemText.length()); ++e) + uint start = pgit->isTextFrame() ? (uint) pgit->firstInFrame() : 0; + uint stop = pgit->isTextFrame() ? (uint) pgit->lastInFrame() + 1 : (uint) pgit->itemText.length(); + for (uint e = start; e < stop; ++e) { ReallyUsed.insert(pgit->itemText.charStyle(e).font().replacementName(), DocFonts[pgit->itemText.charStyle(e).font().replacementName()]); } @@ -1011,7 +1017,9 @@ bool PDFLibCore::PDF_Begin_Doc(const QString& fn, SCFonts &AllFonts, QMap<QStrin ReallyUsed.insert(pgit->itemText.defaultStyle().charStyle().font().replacementName(), DocFonts[pgit->itemText.defaultStyle().charStyle().font().replacementName()]); } } - for (uint e = 0; e < static_cast<uint>(pgit->itemText.length()); ++e) + uint start = pgit->isTextFrame() ? (uint) pgit->firstInFrame() : 0; + uint stop = pgit->isTextFrame() ? (uint) pgit->lastInFrame() + 1 : (uint) pgit->itemText.length(); + for (uint e = start; e < stop; ++e) { ReallyUsed.insert(pgit->itemText.charStyle(e).font().replacementName(), DocFonts[pgit->itemText.charStyle(e).font().replacementName()]); } diff --git a/scribus/plugins/scriptplugin/cmdutil.cpp b/scribus/plugins/scriptplugin/cmdutil.cpp index ce8cfa0..3bec529 100644 --- a/scribus/plugins/scriptplugin/cmdutil.cpp +++ b/scribus/plugins/scriptplugin/cmdutil.cpp @@ -76,7 +76,7 @@ void ReplaceColor(QString col, QString rep) for (int c = 0; c < ScCore->primaryMainWindow()->doc->Items->count(); c++) { PageItem *ite = ScCore->primaryMainWindow()->doc->Items->at(c); - if (ite->itemType() == PageItem::TextFrame) + if ((ite->itemType() == PageItem::TextFrame) && (ite->prevInChain() == NULL)) { for (int d = 0; d < ite->itemText.length(); d++) { diff --git a/scribus/scribusdoc.cpp b/scribus/scribusdoc.cpp index 72e0dd5..eca15a2 100644 --- a/scribus/scribusdoc.cpp +++ b/scribus/scribusdoc.cpp @@ -3154,7 +3154,9 @@ void ScribusDoc::checkItemForFonts(PageItem *it, QMap<QString, QMap<uint, FPoint Really.insert(it->itemText.defaultStyle().charStyle().font().replacementName(), QMap<uint, FPointArray>()); } }*/ - for (int e = 0; e < it->itemText.length(); ++e) + int start = it->isTextFrame() ? it->firstInFrame() : 0; + int stop = it->isTextFrame() ? it->lastInFrame() + 1 : it->itemText.length(); + for (int e = start; e < stop; ++e) { if (! Really.contains(it->itemText.charStyle(e).font().replacementName()) ) { |