diff options
Diffstat (limited to 'src/gui/text')
-rw-r--r-- | src/gui/text/qdistancefield.cpp | 10 | ||||
-rw-r--r-- | src/gui/text/qfontsubset.cpp | 8 | ||||
-rw-r--r-- | src/gui/text/qstatictext.h | 2 | ||||
-rw-r--r-- | src/gui/text/qtextdocument.cpp | 2 | ||||
-rw-r--r-- | src/gui/text/qtextengine_p.h | 17 | ||||
-rw-r--r-- | src/gui/text/qtextlayout.cpp | 58 |
6 files changed, 47 insertions, 50 deletions
diff --git a/src/gui/text/qdistancefield.cpp b/src/gui/text/qdistancefield.cpp index 064c2aca7f..746200fd9c 100644 --- a/src/gui/text/qdistancefield.cpp +++ b/src/gui/text/qdistancefield.cpp @@ -436,7 +436,7 @@ static void drawPolygons(qint32 *bits, int width, int height, const QPoint *vert const quint32 *indices, int indexCount, qint32 value) { Q_ASSERT(indexCount != 0); - typedef QVarLengthArray<quint8, 16> ScanLine; + typedef QVarLengthArray<quint16, 16> ScanLine; QVarLengthArray<ScanLine, 128> scans(height); int first = 0; for (int i = 1; i < indexCount; ++i) { @@ -461,16 +461,16 @@ static void drawPolygons(qint32 *bits, int width, int height, const QPoint *vert for (int y = fromY; y < toY; ++y) { quint32 c = quint32(x >> 8); if (c < quint32(width)) - scans[y].append(quint8(c)); + scans[y].append(quint16(c)); x += dx; } } for (int i = 0; i < height; ++i) { - quint8 *scanline = scans[i].data(); + quint16 *scanline = scans[i].data(); int size = scans[i].size(); for (int j = 1; j < size; ++j) { int k = j; - quint8 value = scanline[k]; + quint16 value = scanline[k]; for (; k != 0 && value < scanline[k - 1]; --k) scanline[k] = scanline[k - 1]; scanline[k] = value; @@ -478,7 +478,7 @@ static void drawPolygons(qint32 *bits, int width, int height, const QPoint *vert qint32 *line = bits + i * width; int j = 0; for (; j + 1 < size; j += 2) { - for (quint8 x = scanline[j]; x < scanline[j + 1]; ++x) + for (quint16 x = scanline[j]; x < scanline[j + 1]; ++x) line[x] = value; } if (j < size) { diff --git a/src/gui/text/qfontsubset.cpp b/src/gui/text/qfontsubset.cpp index 92eeaf7919..f5fc562e13 100644 --- a/src/gui/text/qfontsubset.cpp +++ b/src/gui/text/qfontsubset.cpp @@ -136,7 +136,7 @@ QByteArray QFontSubset::widthArray() const QByteArray width; QPdf::ByteStream s(&width); - QFixed scale = QFixed(1000)/emSquare; + const qreal scale = 1000.0/emSquare.toInt(); QFixed defWidth = widths[0]; //qDebug("defWidth=%d, scale=%f", defWidth.toInt(), scale.toReal()); @@ -145,7 +145,7 @@ QByteArray QFontSubset::widthArray() const defWidth = 0; } if (defWidth > 0) { - s << "/DW " << (defWidth*scale).toInt(); + s << "/DW " << qRound(defWidth.toInt() * scale); } else { s << "/W ["; for (int g = 0; g < nGlyphs();) { @@ -174,11 +174,11 @@ QByteArray QFontSubset::widthArray() const if (endnonlinear > start) { s << start << '['; for (int i = start; i < endnonlinear; ++i) - s << (widths[i]*scale).toInt(); + s << qRound(widths[i].toInt() * scale); s << "]\n"; } if (startLinear) - s << startLinear << g - 1 << (widths[startLinear]*scale).toInt() << '\n'; + s << startLinear << g - 1 << qRound(widths[startLinear].toInt() * scale) << '\n'; } s << "]\n"; } diff --git a/src/gui/text/qstatictext.h b/src/gui/text/qstatictext.h index 00dfccc144..e6a196d865 100644 --- a/src/gui/text/qstatictext.h +++ b/src/gui/text/qstatictext.h @@ -62,7 +62,7 @@ public: }; QStaticText(); - QStaticText(const QString &text); + explicit QStaticText(const QString &text); QStaticText(const QStaticText &other); #ifdef Q_COMPILER_RVALUE_REFS QStaticText &operator=(QStaticText &&other) Q_DECL_NOTHROW { swap(other); return *this; } diff --git a/src/gui/text/qtextdocument.cpp b/src/gui/text/qtextdocument.cpp index f8215f92e9..db0650d154 100644 --- a/src/gui/text/qtextdocument.cpp +++ b/src/gui/text/qtextdocument.cpp @@ -71,7 +71,7 @@ QT_BEGIN_NAMESPACE -Q_CORE_EXPORT unsigned int qt_int_sqrt(unsigned int n); +Q_CORE_EXPORT Q_DECL_CONST_FUNCTION unsigned int qt_int_sqrt(unsigned int n); /*! Returns \c true if the string \a text is likely to be rich text; diff --git a/src/gui/text/qtextengine_p.h b/src/gui/text/qtextengine_p.h index f49e2638f5..89f1328241 100644 --- a/src/gui/text/qtextengine_p.h +++ b/src/gui/text/qtextengine_p.h @@ -323,13 +323,9 @@ public: QFontEngine *fontEngine; }; -struct Q_AUTOTEST_EXPORT QScriptItem +struct QScriptItem { - inline QScriptItem() - : position(0), - num_glyphs(0), descent(-1), ascent(-1), leading(-1), width(-1), - glyph_data_offset(0) {} - inline QScriptItem(int p, const QScriptAnalysis &a) + Q_DECL_CONSTEXPR QScriptItem(int p, QScriptAnalysis a) Q_DECL_NOTHROW : position(p), analysis(a), num_glyphs(0), descent(-1), ascent(-1), leading(-1), width(-1), glyph_data_offset(0) {} @@ -342,11 +338,12 @@ struct Q_AUTOTEST_EXPORT QScriptItem QFixed leading; QFixed width; int glyph_data_offset; - QFixed height() const { return ascent + descent; } + Q_DECL_CONSTEXPR QFixed height() const Q_DECL_NOTHROW { return ascent + descent; } +private: + friend class QVector<QScriptItem>; + QScriptItem() {}; // for QVector, don't use }; - - -Q_DECLARE_TYPEINFO(QScriptItem, Q_MOVABLE_TYPE); +Q_DECLARE_TYPEINFO(QScriptItem, Q_PRIMITIVE_TYPE); typedef QVector<QScriptItem> QScriptItemArray; diff --git a/src/gui/text/qtextlayout.cpp b/src/gui/text/qtextlayout.cpp index 023a1b7f52..2848d55fef 100644 --- a/src/gui/text/qtextlayout.cpp +++ b/src/gui/text/qtextlayout.cpp @@ -167,7 +167,7 @@ QRectF QTextInlineObject::rect() const */ qreal QTextInlineObject::width() const { - return eng->layoutData->items[itm].width.toReal(); + return eng->layoutData->items.at(itm).width.toReal(); } /*! @@ -177,7 +177,7 @@ qreal QTextInlineObject::width() const */ qreal QTextInlineObject::ascent() const { - return eng->layoutData->items[itm].ascent.toReal(); + return eng->layoutData->items.at(itm).ascent.toReal(); } /*! @@ -187,7 +187,7 @@ qreal QTextInlineObject::ascent() const */ qreal QTextInlineObject::descent() const { - return eng->layoutData->items[itm].descent.toReal(); + return eng->layoutData->items.at(itm).descent.toReal(); } /*! @@ -198,7 +198,7 @@ qreal QTextInlineObject::descent() const */ qreal QTextInlineObject::height() const { - return eng->layoutData->items[itm].height().toReal(); + return eng->layoutData->items.at(itm).height().toReal(); } /*! @@ -918,7 +918,7 @@ QRectF QTextLayout::boundingRect() const QFixed ymin = d->lines.at(0).y; for (int i = 0; i < d->lines.size(); ++i) { - const QScriptLine &si = d->lines[i]; + const QScriptLine &si = d->lines.at(i); xmin = qMin(xmin, si.x); ymin = qMin(ymin, si.y); QFixed lineWidth = si.width < QFIXED_MAX ? qMax(si.width, si.textWidth) : si.textWidth; @@ -1046,9 +1046,9 @@ QList<QGlyphRun> QTextLayout::glyphRuns(int from, int length) const QHash<QPair<QFontEngine *, int>, QGlyphRun> glyphRunHash; for (int i=0; i<d->lines.size(); ++i) { - if (d->lines[i].from > from + length) + if (d->lines.at(i).from > from + length) break; - else if (d->lines[i].from + d->lines[i].length >= from) { + else if (d->lines.at(i).from + d->lines[i].length >= from) { QList<QGlyphRun> glyphRuns = QTextLine(i, d).glyphRuns(from, length); for (int j = 0; j < glyphRuns.size(); j++) { @@ -1109,7 +1109,7 @@ void QTextLayout::draw(QPainter *p, const QPointF &pos, const QVector<FormatRang int lastLine = d->lines.size(); for (int i = 0; i < d->lines.size(); ++i) { QTextLine l(i, d); - const QScriptLine &sl = d->lines[i]; + const QScriptLine &sl = d->lines.at(i); if (sl.y > clipe) { lastLine = i; @@ -1131,7 +1131,7 @@ void QTextLayout::draw(QPainter *p, const QPointF &pos, const QVector<FormatRang region.setFillRule(Qt::WindingFill); for (int line = firstLine; line < lastLine; ++line) { - const QScriptLine &sl = d->lines[line]; + const QScriptLine &sl = d->lines.at(line); QTextLine tl(line, d); QRectF lineRect(tl.naturalTextRect()); @@ -1296,7 +1296,7 @@ void QTextLayout::drawCursor(QPainter *p, const QPointF &pos, int cursorPosition return; QTextLine l(line, d); - const QScriptLine &sl = d->lines[line]; + const QScriptLine &sl = d->lines.at(line); qreal x = position.x() + l.cursorToX(cursorPosition); @@ -1409,7 +1409,7 @@ void QTextLayout::drawCursor(QPainter *p, const QPointF &pos, int cursorPosition */ QRectF QTextLine::rect() const { - const QScriptLine& sl = eng->lines[index]; + const QScriptLine& sl = eng->lines.at(index); return QRectF(sl.x.toReal(), sl.y.toReal(), sl.width.toReal(), sl.height().toReal()); } @@ -1418,7 +1418,7 @@ QRectF QTextLine::rect() const */ QRectF QTextLine::naturalTextRect() const { - const QScriptLine& sl = eng->lines[index]; + const QScriptLine& sl = eng->lines.at(index); QFixed x = sl.x + eng->alignLine(sl); QFixed width = sl.textWidth; @@ -1435,7 +1435,7 @@ QRectF QTextLine::naturalTextRect() const */ qreal QTextLine::x() const { - return eng->lines[index].x.toReal(); + return eng->lines.at(index).x.toReal(); } /*! @@ -1445,7 +1445,7 @@ qreal QTextLine::x() const */ qreal QTextLine::y() const { - return eng->lines[index].y.toReal(); + return eng->lines.at(index).y.toReal(); } /*! @@ -1455,7 +1455,7 @@ qreal QTextLine::y() const */ qreal QTextLine::width() const { - return eng->lines[index].width.toReal(); + return eng->lines.at(index).width.toReal(); } @@ -1466,7 +1466,7 @@ qreal QTextLine::width() const */ qreal QTextLine::ascent() const { - return eng->lines[index].ascent.toReal(); + return eng->lines.at(index).ascent.toReal(); } /*! @@ -1476,7 +1476,7 @@ qreal QTextLine::ascent() const */ qreal QTextLine::descent() const { - return eng->lines[index].descent.toReal(); + return eng->lines.at(index).descent.toReal(); } /*! @@ -1488,7 +1488,7 @@ qreal QTextLine::descent() const */ qreal QTextLine::height() const { - return eng->lines[index].height().ceil().toReal(); + return eng->lines.at(index).height().ceil().toReal(); } /*! @@ -1500,7 +1500,7 @@ qreal QTextLine::height() const */ qreal QTextLine::leading() const { - return eng->lines[index].leading.toReal(); + return eng->lines.at(index).leading.toReal(); } /*! @@ -1535,7 +1535,7 @@ void QTextLine::setLeadingIncluded(bool included) */ bool QTextLine::leadingIncluded() const { - return eng->lines[index].leadingIncluded; + return eng->lines.at(index).leadingIncluded; } /*! @@ -1545,7 +1545,7 @@ bool QTextLine::leadingIncluded() const */ qreal QTextLine::naturalTextWidth() const { - return eng->lines[index].textWidth.toReal(); + return eng->lines.at(index).textWidth.toReal(); } /*! @@ -1560,7 +1560,7 @@ qreal QTextLine::naturalTextWidth() const */ qreal QTextLine::horizontalAdvance() const { - return eng->lines[index].textAdvance.toReal(); + return eng->lines.at(index).textAdvance.toReal(); } /*! @@ -1826,7 +1826,7 @@ void QTextLine::layout_helper(int maxGlyphs) lbh.softHyphenWidth = 0; if (newItem != item) { item = newItem; - const QScriptItem ¤t = eng->layoutData->items[item]; + const QScriptItem ¤t = eng->layoutData->items.at(item); if (!current.num_glyphs) { eng->shape(item); attributes = eng->attributes(); @@ -1844,7 +1844,7 @@ void QTextLine::layout_helper(int maxGlyphs) QFixed::fromReal(fontEngine->minRightBearing())); } } - const QScriptItem ¤t = eng->layoutData->items[item]; + const QScriptItem ¤t = eng->layoutData->items.at(item); lbh.tmpData.leading = qMax(lbh.tmpData.leading + lbh.tmpData.ascent, current.leading + current.ascent) - qMax(lbh.tmpData.ascent, @@ -2087,7 +2087,7 @@ void QTextLine::setPosition(const QPointF &pos) */ QPointF QTextLine::position() const { - return QPointF(eng->lines[index].x.toReal(), eng->lines[index].y.toReal()); + return QPointF(eng->lines.at(index).x.toReal(), eng->lines.at(index).y.toReal()); } // ### DOC: I have no idea what this means/does. @@ -2103,7 +2103,7 @@ QPointF QTextLine::position() const */ int QTextLine::textStart() const { - return eng->lines[index].from; + return eng->lines.at(index).from; } /*! @@ -2115,9 +2115,9 @@ int QTextLine::textLength() const { if (eng->option.flags() & QTextOption::ShowLineAndParagraphSeparators && eng->block.isValid() && index == eng->lines.count()-1) { - return eng->lines[index].length - 1; + return eng->lines.at(index).length - 1; } - return eng->lines[index].length + eng->lines[index].trailingSpaces; + return eng->lines.at(index).length + eng->lines.at(index).trailingSpaces; } static void setPenAndDrawBackground(QPainter *p, const QPen &defaultPen, const QTextCharFormat &chf, const QRectF &r) @@ -2241,7 +2241,7 @@ static QGlyphRun glyphRunWithInfo(QFontEngine *fontEngine, */ QList<QGlyphRun> QTextLine::glyphRuns(int from, int length) const { - const QScriptLine &line = eng->lines[index]; + const QScriptLine &line = eng->lines.at(index); if (line.length == 0) return QList<QGlyphRun>(); |