summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorjghali <jghali@11d20701-8431-0410-a711-e3c959e3b870>2012-07-28 12:16:51 +0000
committerjghali <jghali@11d20701-8431-0410-a711-e3c959e3b870>2012-07-28 12:16:51 +0000
commit54bb3b108238b6d9eefff7dea8d7b2d1f74487de (patch)
tree2c5c6f9262d78e58c1a5a313cb5532952dc0bb84
parenta8c7246e2bda01a146105463a27c3b5827abf488 (diff)
downloadscribus-54bb3b108238b6d9eefff7dea8d7b2d1f74487de.tar.gz
scribus-54bb3b108238b6d9eefff7dea8d7b2d1f74487de.tar.xz
scribus-54bb3b108238b6d9eefff7dea8d7b2d1f74487de.zip
#10884: Text spills out of frame
git-svn-id: svn://scribus.net/branches/Version14x/Scribus@17739 11d20701-8431-0410-a711-e3c959e3b870
-rw-r--r--scribus/pageitem_textframe.cpp46
1 files changed, 39 insertions, 7 deletions
diff --git a/scribus/pageitem_textframe.cpp b/scribus/pageitem_textframe.cpp
index 5684d5d..e6f8fd4 100644
--- a/scribus/pageitem_textframe.cpp
+++ b/scribus/pageitem_textframe.cpp
@@ -242,6 +242,39 @@ void PageItem_TextFrame::setShadow()
}
}
+static void debugLineLayout(const StoryText& itemText, const LineSpec& line)
+{
+ QFile debugFile(QDir::homePath() + "/Desktop/debug_line.csv");
+ debugFile.open(QIODevice::WriteOnly);
+
+ QTextStream stream(&debugFile);
+ stream.setRealNumberNotation(QTextStream::FixedNotation);
+ stream.setRealNumberPrecision(7);
+
+ stream << "xoffset" << "\t";
+ stream << "yoffset" << "\t";
+ stream << "xadvance" << "\t";
+ stream << "yadvance" << "\t";
+ stream << "scaleH" << "\t";
+ stream << "scaleV" << "\t";
+ stream << "\n";
+
+ for (int zc = line.firstItem; zc < line.lastItem; ++zc)
+ {
+ const ScText* item = itemText.item(zc);
+
+ stream << item->glyph.xoffset << "\t";
+ stream << item->glyph.yoffset << "\t";
+ stream << item->glyph.xadvance << "\t";
+ stream << item->glyph.yadvance << "\t";
+ stream << item->glyph.scaleH << "\t";
+ stream << item->glyph.scaleV << "\t";
+ stream << "\n";
+ }
+
+ debugFile.close();
+}
+
static void dumpIt(const ParagraphStyle& pstyle, QString indent = QString("->"))
{
QString db = QString("%6%1/%2 @ %3: %4--%5 linespa%6: %7 align%8")
@@ -2464,14 +2497,13 @@ void PageItem_TextFrame::layout()
}
MaxChars = itemText.length();
invalid = false;
- if (NextBox != NULL)
+
+ PageItem_TextFrame* nextFrame = dynamic_cast<PageItem_TextFrame*>(NextBox);
+ while (nextFrame != NULL)
{
- PageItem_TextFrame* nextFrame = dynamic_cast<PageItem_TextFrame*>(NextBox);
- if (nextFrame != NULL)
- {
- nextFrame->invalid = true;
- nextFrame->firstChar = MaxChars;
- }
+ nextFrame->invalid = true;
+ nextFrame->firstChar = MaxChars;
+ nextFrame = dynamic_cast<PageItem_TextFrame*>(nextFrame->NextBox);
}
// qDebug("textframe: len=%d, done relayout", itemText.length());
return;