summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorjghali <jghali@11d20701-8431-0410-a711-e3c959e3b870>2012-08-03 22:33:53 +0000
committerjghali <jghali@11d20701-8431-0410-a711-e3c959e3b870>2012-08-03 22:33:53 +0000
commit092996ccb67d5d9897a757ac78aa43996a75dd93 (patch)
tree7bbb9f0978221cbb39b6c84e3dca7dd5ab620b13
parent7d5ed2f76d11a6b0ad428e69680c4d4d6f444cc5 (diff)
downloadscribus-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.cpp16
-rw-r--r--scribus/plugins/scriptplugin/cmdutil.cpp2
-rw-r--r--scribus/scribusdoc.cpp4
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()) )
{