diff --git a/src/vtextdocumentlayout.cpp b/src/vtextdocumentlayout.cpp index 3d2be0af..8acab03b 100644 --- a/src/vtextdocumentlayout.cpp +++ b/src/vtextdocumentlayout.cpp @@ -84,7 +84,7 @@ void VTextDocumentLayout::blockRangeFromRect(const QRectF &p_rect, QTextBlock block = document()->firstBlock(); while (block.isValid()) { const BlockLayoutInfo *info = VTextBlockData::layoutInfo(block); - Q_ASSERT(info->hasOffset()); + V_ASSERT(info->hasOffset()); if (info->top() == y || (info->top() < y && info->bottom() >= y)) { @@ -103,7 +103,7 @@ void VTextDocumentLayout::blockRangeFromRect(const QRectF &p_rect, y += p_rect.height(); while (block.isValid()) { const BlockLayoutInfo *info = VTextBlockData::layoutInfo(block); - Q_ASSERT(info->hasOffset()); + V_ASSERT(info->hasOffset()); if (info->bottom() > y) { p_last = block.blockNumber(); @@ -140,7 +140,7 @@ void VTextDocumentLayout::blockRangeFromRectBS(const QRectF &p_rect, p_last = document()->blockCount() - 1; while (block.isValid()) { const BlockLayoutInfo *tinfo = VTextBlockData::layoutInfo(block); - Q_ASSERT(tinfo->hasOffset()); + V_ASSERT(tinfo->hasOffset()); if (tinfo->bottom() > y) { p_last = block.blockNumber(); @@ -164,7 +164,7 @@ int VTextDocumentLayout::findBlockByPosition(const QPointF &p_point) const return -1; } - Q_ASSERT(info->hasOffset()); + V_ASSERT(info->hasOffset()); if (info->top() <= y && info->bottom() > y) { // Found it. return mid; @@ -203,7 +203,7 @@ void VTextDocumentLayout::draw(QPainter *p_painter, const PaintContext &p_contex while (block.isValid()) { const BlockLayoutInfo *info = VTextBlockData::layoutInfo(block); - Q_ASSERT(info->hasOffset()); + V_ASSERT(info->hasOffset()); const QRectF &rect = info->m_rect; QTextLayout *layout = block.layout(); @@ -339,7 +339,7 @@ QVector VTextDocumentLayout::formatRangeFromSelection( // a position to specify the line. that's more convenience in usage. QTextLayout::FormatRange o; QTextLine l = p_block.layout()->lineForTextPosition(range.cursor.position() - blpos); - Q_ASSERT(l.isValid()); + V_ASSERT(l.isValid()); o.start = l.textStart(); o.length = l.textLength(); if (o.start + o.length == bllen - 1) { @@ -363,7 +363,7 @@ int VTextDocumentLayout::hitTest(const QPointF &p_point, Qt::HitTestAccuracy p_a } QTextBlock block = document()->findBlockByNumber(bn); - Q_ASSERT(block.isValid()); + V_ASSERT(block.isValid()); QTextLayout *layout = block.layout(); int off = 0; QPointF pos = p_point - QPointF(m_margin, VTextBlockData::layoutInfo(block)->top()); @@ -494,7 +494,7 @@ void VTextDocumentLayout::clearBlockLayout(QTextBlock &p_block) void VTextDocumentLayout::layoutBlock(const QTextBlock &p_block) { QTextDocument *doc = document(); - Q_ASSERT(m_margin == doc->documentMargin()); + V_ASSERT(m_margin == doc->documentMargin()); QTextLayout *tl = p_block.layout(); QTextOption option = doc->defaultTextOption(); @@ -529,9 +529,10 @@ void VTextDocumentLayout::layoutBlock(const QTextBlock &p_block) void VTextDocumentLayout::updateOffsetBefore(const QTextBlock &p_block) { BlockLayoutInfo *info = VTextBlockData::layoutInfo(p_block); - Q_ASSERT(!info->isNull()); + V_ASSERT(!info->isNull()); - if (p_block.blockNumber() == 0) { + const int blockNum = p_block.blockNumber(); + if (blockNum == 0) { info->m_offset = 0; } else { QTextBlock blk = p_block.previous(); @@ -554,26 +555,25 @@ void VTextDocumentLayout::updateOffsetBefore(const QTextBlock &p_block) // Now we reach a block with offset. qreal offset = pinfo->bottom(); blk = blk.next(); - while (blk.isValid()) { + while (blk.isValid() && blk.blockNumber() <= blockNum) { BlockLayoutInfo *ninfo = VTextBlockData::layoutInfo(blk); + Q_ASSERT(!ninfo->isNull()); ninfo->m_offset = offset; - if (blk.blockNumber() == p_block.blockNumber()) { - break; - } - offset = ninfo->bottom(); blk = blk.next(); } + + break; } - Q_ASSERT(info->hasOffset()); + V_ASSERT(info->hasOffset()); } } void VTextDocumentLayout::updateOffsetAfter(const QTextBlock &p_block) { BlockLayoutInfo *info = VTextBlockData::layoutInfo(p_block); - Q_ASSERT(info->hasOffset()); + V_ASSERT(info->hasOffset()); qreal offset = info->bottom(); QTextBlock blk = p_block.next(); while (blk.isValid()) { @@ -599,7 +599,7 @@ qreal VTextDocumentLayout::layoutLines(const QTextBlock &p_block, qreal p_availableWidth, qreal p_height) { - Q_ASSERT(p_block.isValid()); + V_ASSERT(p_block.isValid()); // Handle block inline image. bool hasInlineImages = false; @@ -696,18 +696,18 @@ void VTextDocumentLayout::finishBlockLayout(const QTextBlock &p_block, const QVector &p_markers, const QVector &p_images) { - Q_ASSERT(p_block.isValid()); + V_ASSERT(p_block.isValid()); ImagePaintInfo ipi; BlockLayoutInfo *info = VTextBlockData::layoutInfo(p_block); - Q_ASSERT(info->isNull()); + V_ASSERT(info->isNull()); info->reset(); info->m_rect = blockRectFromTextLayout(p_block, &ipi); - Q_ASSERT(!info->m_rect.isNull()); + V_ASSERT(!info->m_rect.isNull()); bool hasImage = false; if (ipi.isValid()) { - Q_ASSERT(p_markers.isEmpty()); - Q_ASSERT(p_images.isEmpty()); + V_ASSERT(p_markers.isEmpty()); + V_ASSERT(p_images.isEmpty()); info->m_images.append(ipi); hasImage = true; } else if (!p_markers.isEmpty()) { @@ -749,7 +749,7 @@ void VTextDocumentLayout::updateDocumentSize() QTextBlock blk = document()->firstBlock(); while (blk.isValid()) { const BlockLayoutInfo *ninfo = VTextBlockData::layoutInfo(blk); - Q_ASSERT(ninfo->hasOffset()); + V_ASSERT(ninfo->hasOffset()); if (m_width < ninfo->m_rect.width()) { m_width = ninfo->m_rect.width(); m_maximumWidthBlockNumber = blk.blockNumber(); @@ -787,7 +787,7 @@ QRectF VTextDocumentLayout::blockRectFromTextLayout(const QTextBlock &p_block, // Handle block non-inline image. if (m_blockImageEnabled) { VTextBlockData *blockData = VTextBlockData::blockData(p_block); - Q_ASSERT(blockData); + V_ASSERT(blockData); const QVector &info = blockData->getPreviews(); if (info.size() == 1) { const VPreviewedImageInfo& img = info.first()->m_imageInfo; @@ -1013,7 +1013,7 @@ qreal VTextDocumentLayout::fetchInlineImagesForOneLine(const QVectorm_imageInfo; - Q_ASSERT(img.m_inline); + V_ASSERT(img.m_inline); if (img.m_startPos >= start && img.m_startPos < end) { // Start of a new image. @@ -1098,8 +1098,8 @@ int VTextDocumentLayout::getTextWidthWithinTextLine(const QTextLayout *p_layout, int p_length) { QTextLine line = p_layout->lineForTextPosition(p_pos); - Q_ASSERT(line.isValid()); - Q_ASSERT(p_pos + p_length <= line.textStart() + line.textLength()); + V_ASSERT(line.isValid()); + V_ASSERT(p_pos + p_length <= line.textStart() + line.textLength()); return line.cursorToX(p_pos + p_length) - line.cursorToX(p_pos); } diff --git a/src/vtextdocumentlayoutdata.h b/src/vtextdocumentlayoutdata.h index ce9f1599..71b7e4ec 100644 --- a/src/vtextdocumentlayoutdata.h +++ b/src/vtextdocumentlayoutdata.h @@ -1,6 +1,8 @@ #ifndef VTEXTDOCUMENTLAYOUTDATA_H #define VTEXTDOCUMENTLAYOUTDATA_H +#include "utils/vutils.h" + // Denote the start and end position of a marker line. struct Marker { @@ -57,13 +59,13 @@ struct BlockLayoutInfo qreal top() const { - Q_ASSERT(hasOffset()); + V_ASSERT(hasOffset()); return m_offset; } qreal bottom() const { - Q_ASSERT(hasOffset()); + V_ASSERT(hasOffset()); return m_offset + m_rect.height(); }