summaryrefslogtreecommitdiffstats
path: root/src/gui/text
diff options
context:
space:
mode:
Diffstat (limited to 'src/gui/text')
-rw-r--r--src/gui/text/qabstracttextdocumentlayout.cpp2
-rw-r--r--src/gui/text/qcssparser.cpp35
-rw-r--r--src/gui/text/qcssparser_p.h6
-rw-r--r--src/gui/text/qdistancefield.cpp10
-rw-r--r--src/gui/text/qfont.cpp83
-rw-r--r--src/gui/text/qfontdatabase.cpp53
-rw-r--r--src/gui/text/qfontengine.cpp46
-rw-r--r--src/gui/text/qfontengine_qpf2.cpp24
-rw-r--r--src/gui/text/qfontmetrics.cpp160
-rw-r--r--src/gui/text/qglyphrun.cpp2
-rw-r--r--src/gui/text/qglyphrun_p.h3
-rw-r--r--src/gui/text/qharfbuzzng.cpp8
-rw-r--r--src/gui/text/qplatformfontdatabase.cpp2
-rw-r--r--src/gui/text/qrawfont.cpp8
-rw-r--r--src/gui/text/qstatictext.cpp4
-rw-r--r--src/gui/text/qsyntaxhighlighter.cpp6
-rw-r--r--src/gui/text/qtextcursor.cpp27
-rw-r--r--src/gui/text/qtextdocument.cpp59
-rw-r--r--src/gui/text/qtextdocument.h2
-rw-r--r--src/gui/text/qtextdocument_p.cpp20
-rw-r--r--src/gui/text/qtextdocument_p.h7
-rw-r--r--src/gui/text/qtextdocumentfragment.cpp16
-rw-r--r--src/gui/text/qtextdocumentlayout.cpp24
-rw-r--r--src/gui/text/qtextdocumentwriter.cpp6
-rw-r--r--src/gui/text/qtextengine.cpp69
-rw-r--r--src/gui/text/qtextengine_p.h19
-rw-r--r--src/gui/text/qtexthtmlparser.cpp13
-rw-r--r--src/gui/text/qtextimagehandler.cpp2
-rw-r--r--src/gui/text/qtextlayout.cpp8
-rw-r--r--src/gui/text/qtextmarkdownimporter.cpp42
-rw-r--r--src/gui/text/qtextmarkdownwriter.cpp3
-rw-r--r--src/gui/text/qtextobject.cpp16
-rw-r--r--src/gui/text/qtextodfwriter.cpp12
-rw-r--r--src/gui/text/qtextoption.cpp8
-rw-r--r--src/gui/text/qzip.cpp16
35 files changed, 442 insertions, 379 deletions
diff --git a/src/gui/text/qabstracttextdocumentlayout.cpp b/src/gui/text/qabstracttextdocumentlayout.cpp
index 8b8f3e28ac..8528f59844 100644
--- a/src/gui/text/qabstracttextdocumentlayout.cpp
+++ b/src/gui/text/qabstracttextdocumentlayout.cpp
@@ -471,7 +471,7 @@ QTextObjectInterface *QAbstractTextDocumentLayout::handlerForObject(int objectTy
QTextObjectHandler handler = d->handlers.value(objectType);
if (!handler.component)
- return 0;
+ return nullptr;
return handler.iface;
}
diff --git a/src/gui/text/qcssparser.cpp b/src/gui/text/qcssparser.cpp
index ce7c7610c1..c0b0071e4d 100644
--- a/src/gui/text/qcssparser.cpp
+++ b/src/gui/text/qcssparser.cpp
@@ -123,6 +123,7 @@ static const QCssKnownValue properties[NumProperties - 1] = {
{ "font-variant", FontVariant },
{ "font-weight", FontWeight },
{ "height", Height },
+ { "icon", QtIcon },
{ "image", QtImage },
{ "image-position", QtImageAlignment },
{ "left", Left },
@@ -443,6 +444,7 @@ void ValueExtractor::lengthValues(const Declaration &decl, int *m)
{
if (decl.d->parsed.isValid()) {
QList<QVariant> v = decl.d->parsed.toList();
+ Q_ASSERT(v.size() == 4);
for (int i = 0; i < 4; i++)
m[i] = lengthValueFromData(qvariant_cast<LengthData>(v.at(i)), f);
return;
@@ -681,7 +683,7 @@ bool ValueExtractor::extractOutline(int *borders, QBrush *colors, BorderStyle *s
static Qt::Alignment parseAlignment(const QCss::Value *values, int count)
{
- Qt::Alignment a[2] = { 0, 0 };
+ Qt::Alignment a[2] = { { }, { } };
for (int i = 0; i < qMin(2, count); i++) {
if (values[i].type != Value::KnownIdentifier)
break;
@@ -1379,6 +1381,37 @@ bool ValueExtractor::extractImage(QIcon *icon, Qt::Alignment *a, QSize *size)
return hit;
}
+bool ValueExtractor::extractIcon(QIcon *icon, QSize *size)
+{
+ // Find last declaration that specifies an icon
+ const auto declaration = std::find_if(
+ declarations.rbegin(), declarations.rend(),
+ [](const Declaration &decl) { return decl.d->propertyId == QtIcon; });
+ if (declaration == declarations.rend())
+ return false;
+
+ *icon = declaration->iconValue();
+
+ // If the value contains a URI, try to get the size of the icon
+ if (declaration->d->values.isEmpty())
+ return true;
+
+ const auto &propertyValue = declaration->d->values.constFirst();
+ if (propertyValue.type != Value::Uri)
+ return true;
+
+ // First try to read just the size from the image without loading it
+ const QString url(propertyValue.variant.toString());
+ QImageReader imageReader(url);
+ *size = imageReader.size();
+ if (!size->isNull())
+ return true;
+
+ // Get the size by loading the image instead
+ *size = imageReader.read().size();
+ return true;
+}
+
///////////////////////////////////////////////////////////////////////////////
// Declaration
QColor Declaration::colorValue(const QPalette &pal) const
diff --git a/src/gui/text/qcssparser_p.h b/src/gui/text/qcssparser_p.h
index ab85e76cf3..ef5ae8c80b 100644
--- a/src/gui/text/qcssparser_p.h
+++ b/src/gui/text/qcssparser_p.h
@@ -198,6 +198,7 @@ enum Property {
QtLineHeightType,
FontKerning,
QtForegroundTextureCacheKey,
+ QtIcon,
NumProperties
};
@@ -855,14 +856,15 @@ struct Q_GUI_EXPORT ValueExtractor
bool extractPalette(QBrush *fg, QBrush *sfg, QBrush *sbg, QBrush *abg);
int extractStyleFeatures();
bool extractImage(QIcon *icon, Qt::Alignment *a, QSize *size);
+ bool extractIcon(QIcon *icon, QSize *size);
- int lengthValue(const Declaration &decl);
+ void lengthValues(const Declaration &decl, int *m);
private:
void extractFont();
void borderValue(const Declaration &decl, int *width, QCss::BorderStyle *style, QBrush *color);
LengthData lengthValue(const Value& v);
- void lengthValues(const Declaration &decl, int *m);
+ int lengthValue(const Declaration &decl);
QSize sizeValue(const Declaration &decl);
void sizeValues(const Declaration &decl, QSize *radii);
diff --git a/src/gui/text/qdistancefield.cpp b/src/gui/text/qdistancefield.cpp
index d8a971c7b7..c843e3b706 100644
--- a/src/gui/text/qdistancefield.cpp
+++ b/src/gui/text/qdistancefield.cpp
@@ -850,7 +850,7 @@ QDistanceFieldData::QDistanceFieldData(const QDistanceFieldData &other)
if (nbytes && other.data)
data = (uchar *)memcpy(malloc(nbytes), other.data, nbytes);
else
- data = 0;
+ data = nullptr;
}
QDistanceFieldData::~QDistanceFieldData()
@@ -952,7 +952,7 @@ void QDistanceField::setGlyph(QFontEngine *fontEngine, glyph_t glyph, bool doubl
{
QFixedPoint position;
QPainterPath path;
- fontEngine->addGlyphsToPath(&glyph, &position, 1, &path, 0);
+ fontEngine->addGlyphsToPath(&glyph, &position, 1, &path, { });
path.translate(-path.boundingRect().topLeft());
path.setFillRule(Qt::WindingFill);
@@ -1046,7 +1046,7 @@ const uchar *QDistanceField::constBits() const
uchar *QDistanceField::scanLine(int i)
{
if (isNull())
- return 0;
+ return nullptr;
Q_ASSERT(i >= 0 && i < d->height);
return d->data + i * d->width;
@@ -1055,7 +1055,7 @@ uchar *QDistanceField::scanLine(int i)
const uchar *QDistanceField::scanLine(int i) const
{
if (isNull())
- return 0;
+ return nullptr;
Q_ASSERT(i >= 0 && i < d->height);
return d->data + i * d->width;
@@ -1064,7 +1064,7 @@ const uchar *QDistanceField::scanLine(int i) const
const uchar *QDistanceField::constScanLine(int i) const
{
if (isNull())
- return 0;
+ return nullptr;
Q_ASSERT(i >= 0 && i < d->height);
return d->data + i * d->width;
diff --git a/src/gui/text/qfont.cpp b/src/gui/text/qfont.cpp
index 76fde5388c..9ede90d8de 100644
--- a/src/gui/text/qfont.cpp
+++ b/src/gui/text/qfont.cpp
@@ -180,14 +180,14 @@ Q_GUI_EXPORT int qt_defaultDpi()
}
QFontPrivate::QFontPrivate()
- : engineData(0), dpi(qt_defaultDpi()),
+ : engineData(nullptr), dpi(qt_defaultDpi()),
underline(false), overline(false), strikeOut(false), kerning(true),
- capital(0), letterSpacingIsAbsolute(false), scFont(0)
+ capital(0), letterSpacingIsAbsolute(false), scFont(nullptr)
{
}
QFontPrivate::QFontPrivate(const QFontPrivate &other)
- : request(other.request), engineData(0), dpi(other.dpi),
+ : request(other.request), engineData(nullptr), dpi(other.dpi),
underline(other.underline), overline(other.overline),
strikeOut(other.strikeOut), kerning(other.kerning),
capital(other.capital), letterSpacingIsAbsolute(other.letterSpacingIsAbsolute),
@@ -202,10 +202,10 @@ QFontPrivate::~QFontPrivate()
{
if (engineData && !engineData->ref.deref())
delete engineData;
- engineData = 0;
+ engineData = nullptr;
if (scFont && scFont != this)
scFont->ref.deref();
- scFont = 0;
+ scFont = nullptr;
}
extern QRecursiveMutex *qt_fontdatabase_mutex();
@@ -221,7 +221,7 @@ QFontEngine *QFontPrivate::engineForScript(int script) const
// throw out engineData that came from a different thread
if (!engineData->ref.deref())
delete engineData;
- engineData = 0;
+ engineData = nullptr;
}
if (!engineData || !QT_FONT_ENGINE_FROM_DATA(engineData, script))
QFontDatabase::load(this, script);
@@ -261,7 +261,7 @@ QFontPrivate *QFontPrivate::smallCapsFontPrivate() const
void QFontPrivate::resolve(uint mask, const QFontPrivate *other)
{
- Q_ASSERT(other != 0);
+ Q_ASSERT(other != nullptr);
dpi = other->dpi;
@@ -271,8 +271,13 @@ void QFontPrivate::resolve(uint mask, const QFontPrivate *other)
if (! (mask & QFont::FamilyResolved))
request.family = other->request.family;
- if (!(mask & QFont::FamiliesResolved))
+ if (!(mask & QFont::FamiliesResolved)) {
request.families = other->request.families;
+ // Prepend the family explicitly set so it will be given
+ // preference in this case
+ if (mask & QFont::FamilyResolved)
+ request.families.prepend(request.family);
+ }
if (! (mask & QFont::StyleNameResolved))
request.styleName = other->request.styleName;
@@ -341,7 +346,7 @@ QFontEngineData::~QFontEngineData()
if (engines[i]) {
if (!engines[i]->ref.deref())
delete engines[i];
- engines[i] = 0;
+ engines[i] = nullptr;
}
}
}
@@ -605,10 +610,10 @@ void QFont::detach()
if (d->ref.loadRelaxed() == 1) {
if (d->engineData && !d->engineData->ref.deref())
delete d->engineData;
- d->engineData = 0;
+ d->engineData = nullptr;
if (d->scFont && d->scFont != d.data())
d->scFont->ref.deref();
- d->scFont = 0;
+ d->scFont = nullptr;
return;
}
@@ -1661,7 +1666,7 @@ void QFont::setRawMode(bool)
bool QFont::exactMatch() const
{
QFontEngine *engine = d->engineForScript(QChar::Script_Common);
- Q_ASSERT(engine != 0);
+ Q_ASSERT(engine != nullptr);
return d->request.exactMatch(engine->fontDef);
}
@@ -1829,7 +1834,7 @@ Q_GLOBAL_STATIC(QFontSubst, globalFontSubst)
QString QFont::substitute(const QString &familyName)
{
QFontSubst *fontSubst = globalFontSubst();
- Q_ASSERT(fontSubst != 0);
+ Q_ASSERT(fontSubst != nullptr);
QFontSubst::ConstIterator it = fontSubst->constFind(familyName.toLower());
if (it != fontSubst->constEnd() && !(*it).isEmpty())
return (*it).first();
@@ -1850,7 +1855,7 @@ QString QFont::substitute(const QString &familyName)
QStringList QFont::substitutes(const QString &familyName)
{
QFontSubst *fontSubst = globalFontSubst();
- Q_ASSERT(fontSubst != 0);
+ Q_ASSERT(fontSubst != nullptr);
return fontSubst->value(familyName.toLower(), QStringList());
}
@@ -1865,7 +1870,7 @@ void QFont::insertSubstitution(const QString &familyName,
const QString &substituteName)
{
QFontSubst *fontSubst = globalFontSubst();
- Q_ASSERT(fontSubst != 0);
+ Q_ASSERT(fontSubst != nullptr);
QStringList &list = (*fontSubst)[familyName.toLower()];
QString s = substituteName.toLower();
if (!list.contains(s))
@@ -1883,7 +1888,7 @@ void QFont::insertSubstitutions(const QString &familyName,
const QStringList &substituteNames)
{
QFontSubst *fontSubst = globalFontSubst();
- Q_ASSERT(fontSubst != 0);
+ Q_ASSERT(fontSubst != nullptr);
QStringList &list = (*fontSubst)[familyName.toLower()];
for (const QString &substituteName : substituteNames) {
const QString lowerSubstituteName = substituteName.toLower();
@@ -1901,7 +1906,7 @@ void QFont::insertSubstitutions(const QString &familyName,
void QFont::removeSubstitutions(const QString &familyName)
{
QFontSubst *fontSubst = globalFontSubst();
- Q_ASSERT(fontSubst != 0);
+ Q_ASSERT(fontSubst != nullptr);
fontSubst->remove(familyName.toLower());
}
@@ -1921,7 +1926,7 @@ void QFont::removeSubstitutions(const QString &familyName)
QStringList QFont::substitutions()
{
QFontSubst *fontSubst = globalFontSubst();
- Q_ASSERT(fontSubst != 0);
+ Q_ASSERT(fontSubst != nullptr);
QStringList ret = fontSubst->keys();
ret.sort();
@@ -1935,7 +1940,7 @@ QStringList QFont::substitutions()
*/
static quint8 get_font_bits(int version, const QFontPrivate *f)
{
- Q_ASSERT(f != 0);
+ Q_ASSERT(f != nullptr);
quint8 bits = 0;
if (f->request.style)
bits |= 0x01;
@@ -1960,7 +1965,7 @@ static quint8 get_font_bits(int version, const QFontPrivate *f)
static quint8 get_extended_font_bits(const QFontPrivate *f)
{
- Q_ASSERT(f != 0);
+ Q_ASSERT(f != nullptr);
quint8 bits = 0;
if (f->request.ignorePitch)
bits |= 0x01;
@@ -1975,7 +1980,7 @@ static quint8 get_extended_font_bits(const QFontPrivate *f)
*/
static void set_font_bits(int version, quint8 bits, QFontPrivate *f)
{
- Q_ASSERT(f != 0);
+ Q_ASSERT(f != nullptr);
f->request.style = (bits & 0x01) != 0 ? QFont::StyleItalic : QFont::StyleNormal;
f->underline = (bits & 0x02) != 0;
f->overline = (bits & 0x40) != 0;
@@ -1990,7 +1995,7 @@ static void set_font_bits(int version, quint8 bits, QFontPrivate *f)
static void set_extended_font_bits(quint8 bits, QFontPrivate *f)
{
- Q_ASSERT(f != 0);
+ Q_ASSERT(f != nullptr);
f->request.ignorePitch = (bits & 0x01) != 0;
f->letterSpacingIsAbsolute = (bits & 0x02) != 0;
}
@@ -2544,7 +2549,7 @@ QFontInfo &QFontInfo::operator=(const QFontInfo &fi)
QString QFontInfo::family() const
{
QFontEngine *engine = d->engineForScript(QChar::Script_Common);
- Q_ASSERT(engine != 0);
+ Q_ASSERT(engine != nullptr);
return engine->fontDef.family;
}
@@ -2559,7 +2564,7 @@ QString QFontInfo::family() const
QString QFontInfo::styleName() const
{
QFontEngine *engine = d->engineForScript(QChar::Script_Common);
- Q_ASSERT(engine != 0);
+ Q_ASSERT(engine != nullptr);
return engine->fontDef.styleName;
}
@@ -2571,7 +2576,7 @@ QString QFontInfo::styleName() const
int QFontInfo::pointSize() const
{
QFontEngine *engine = d->engineForScript(QChar::Script_Common);
- Q_ASSERT(engine != 0);
+ Q_ASSERT(engine != nullptr);
return qRound(engine->fontDef.pointSize);
}
@@ -2583,7 +2588,7 @@ int QFontInfo::pointSize() const
qreal QFontInfo::pointSizeF() const
{
QFontEngine *engine = d->engineForScript(QChar::Script_Common);
- Q_ASSERT(engine != 0);
+ Q_ASSERT(engine != nullptr);
return engine->fontDef.pointSize;
}
@@ -2595,7 +2600,7 @@ qreal QFontInfo::pointSizeF() const
int QFontInfo::pixelSize() const
{
QFontEngine *engine = d->engineForScript(QChar::Script_Common);
- Q_ASSERT(engine != 0);
+ Q_ASSERT(engine != nullptr);
return engine->fontDef.pixelSize;
}
@@ -2607,7 +2612,7 @@ int QFontInfo::pixelSize() const
bool QFontInfo::italic() const
{
QFontEngine *engine = d->engineForScript(QChar::Script_Common);
- Q_ASSERT(engine != 0);
+ Q_ASSERT(engine != nullptr);
return engine->fontDef.style != QFont::StyleNormal;
}
@@ -2619,7 +2624,7 @@ bool QFontInfo::italic() const
QFont::Style QFontInfo::style() const
{
QFontEngine *engine = d->engineForScript(QChar::Script_Common);
- Q_ASSERT(engine != 0);
+ Q_ASSERT(engine != nullptr);
return (QFont::Style)engine->fontDef.style;
}
@@ -2631,7 +2636,7 @@ QFont::Style QFontInfo::style() const
int QFontInfo::weight() const
{
QFontEngine *engine = d->engineForScript(QChar::Script_Common);
- Q_ASSERT(engine != 0);
+ Q_ASSERT(engine != nullptr);
return engine->fontDef.weight;
}
@@ -2696,13 +2701,13 @@ bool QFontInfo::strikeOut() const
bool QFontInfo::fixedPitch() const
{
QFontEngine *engine = d->engineForScript(QChar::Script_Common);
- Q_ASSERT(engine != 0);
+ Q_ASSERT(engine != nullptr);
#ifdef Q_OS_MAC
if (!engine->fontDef.fixedPitchComputed) {
QChar ch[2] = { QLatin1Char('i'), QLatin1Char('m') };
QGlyphLayoutArray<2> g;
int l = 2;
- if (!engine->stringToCMap(ch, 2, &g, &l, 0))
+ if (!engine->stringToCMap(ch, 2, &g, &l, {}))
Q_UNREACHABLE();
Q_ASSERT(l == 2);
engine->fontDef.fixedPitch = g.advances[0] == g.advances[1];
@@ -2722,7 +2727,7 @@ bool QFontInfo::fixedPitch() const
QFont::StyleHint QFontInfo::styleHint() const
{
QFontEngine *engine = d->engineForScript(QChar::Script_Common);
- Q_ASSERT(engine != 0);
+ Q_ASSERT(engine != nullptr);
return (QFont::StyleHint) engine->fontDef.styleHint;
}
@@ -2754,7 +2759,7 @@ bool QFontInfo::rawMode() const
bool QFontInfo::exactMatch() const
{
QFontEngine *engine = d->engineForScript(QChar::Script_Common);
- Q_ASSERT(engine != 0);
+ Q_ASSERT(engine != nullptr);
return d->request.exactMatch(engine->fontDef);
}
@@ -2788,7 +2793,7 @@ QFontCache *QFontCache::instance()
void QFontCache::cleanup()
{
- QThreadStorage<QFontCache *> *cache = 0;
+ QThreadStorage<QFontCache *> *cache = nullptr;
QT_TRY {
cache = theFontCache();
} QT_CATCH (const std::bad_alloc &) {
@@ -2825,7 +2830,7 @@ void QFontCache::clear()
Q_ASSERT(engineCacheCount.value(data->engines[i]) == 0);
delete data->engines[i];
}
- data->engines[i] = 0;
+ data->engines[i] = nullptr;
}
}
if (!data->ref.deref()) {
@@ -2858,7 +2863,7 @@ void QFontCache::clear()
FC_DEBUG("QFontCache::clear: engine %p still has refcount %d",
engine, engine->ref.loadRelaxed());
}
- it.value().data = 0;
+ it.value().data = nullptr;
}
}
} while (mightHaveEnginesLeftForCleanup);
@@ -2876,7 +2881,7 @@ QFontEngineData *QFontCache::findEngineData(const QFontDef &def) const
{
EngineDataCache::ConstIterator it = engineDataCache.constFind(def);
if (it == engineDataCache.constEnd())
- return 0;
+ return nullptr;
// found
return it.value();
@@ -2907,7 +2912,7 @@ QFontEngine *QFontCache::findEngine(const Key &key)
{
EngineCache::Iterator it = engineCache.find(key),
end = engineCache.end();
- if (it == end) return 0;
+ if (it == end) return nullptr;
Q_ASSERT(it.value().data != nullptr);
Q_ASSERT(key.multi == (it.value().data->type() == QFontEngine::Multi));
diff --git a/src/gui/text/qfontdatabase.cpp b/src/gui/text/qfontdatabase.cpp
index 261e1d831b..f2fd585835 100644
--- a/src/gui/text/qfontdatabase.cpp
+++ b/src/gui/text/qfontdatabase.cpp
@@ -210,7 +210,7 @@ struct QtFontStyle
QtFontStyle(const Key &k)
: key(k), bitmapScalable(false), smoothScalable(false),
- count(0), pixelSizes(0)
+ count(0), pixelSizes(nullptr)
{
}
@@ -265,7 +265,7 @@ QtFontSize *QtFontStyle::pixelSize(unsigned short size, bool add)
return pixelSizes + i;
}
if (!add)
- return 0;
+ return nullptr;
if (!pixelSizes) {
// Most style have only one font size, we avoid waisting memory
@@ -280,13 +280,13 @@ QtFontSize *QtFontStyle::pixelSize(unsigned short size, bool add)
pixelSizes = newPixelSizes;
}
pixelSizes[count].pixelSize = size;
- pixelSizes[count].handle = 0;
+ pixelSizes[count].handle = nullptr;
return pixelSizes + (count++);
}
struct QtFontFoundry
{
- QtFontFoundry(const QString &n) : name(n), count(0), styles(0) {}
+ QtFontFoundry(const QString &n) : name(n), count(0), styles(nullptr) {}
~QtFontFoundry() {
while (count--)
delete styles[count];
@@ -314,7 +314,7 @@ QtFontStyle *QtFontFoundry::style(const QtFontStyle::Key &key, const QString &st
}
}
if (!create)
- return 0;
+ return nullptr;
// qDebug("adding key (weight=%d, style=%d, oblique=%d stretch=%d) at %d", key.weight, key.style, key.oblique, key.stretch, pos);
if (!(count % 8)) {
@@ -345,7 +345,7 @@ struct QtFontFamily
:
populated(false),
fixedPitch(false),
- name(n), count(0), foundries(0)
+ name(n), count(0), foundries(nullptr)
{
memset(writingSystems, 0, sizeof(writingSystems));
}
@@ -381,7 +381,7 @@ QtFontFoundry *QtFontFamily::foundry(const QString &f, bool create)
return foundries[i];
}
if (!create)
- return 0;
+ return nullptr;
if (!(count % 8)) {
QtFontFoundry **newFoundries = (QtFontFoundry **)
@@ -450,7 +450,7 @@ class QFontDatabasePrivate
{
public:
QFontDatabasePrivate()
- : count(0), families(0),
+ : count(0), families(nullptr),
fallbacksCache(64)
{ }
@@ -469,7 +469,7 @@ public:
while (count--)
delete families[count];
::free(families);
- families = 0;
+ families = nullptr;
count = 0;
// don't clear the memory fonts!
}
@@ -505,7 +505,7 @@ void QFontDatabasePrivate::invalidate()
QtFontFamily *QFontDatabasePrivate::family(const QString &f, FamilyRequestFlags flags)
{
- QtFontFamily *fam = 0;
+ QtFontFamily *fam = nullptr;
int low = 0;
int high = count;
@@ -645,7 +645,7 @@ static void parseFontName(const QString &name, QString &foundry, QString &family
struct QtFontDesc
{
- inline QtFontDesc() : family(0), foundry(0), style(0), size(0) {}
+ inline QtFontDesc() : family(nullptr), foundry(nullptr), style(nullptr), size(nullptr) {}
QtFontFamily *family;
QtFontFoundry *foundry;
QtFontStyle *style;
@@ -731,7 +731,8 @@ void qt_registerFont(const QString &familyName, const QString &stylename,
const QSupportedWritingSystems &writingSystems, void *handle)
{
QFontDatabasePrivate *d = privateDb();
- qCDebug(lcFontDb) << "Adding font" << familyName << weight << style << pixelSize << "aa" << antialiased << "fixed" << fixedPitch;
+ qCDebug(lcFontDb) << "Adding font: familyName" << familyName << "stylename" << stylename << "weight" << weight
+ << "style" << style << "pixelSize" << pixelSize << "antialiased" << antialiased << "fixed" << fixedPitch;
QtFontStyle::Key styleKey;
styleKey.style = style;
styleKey.weight = weight;
@@ -948,7 +949,7 @@ QFontEngine *loadSingleEngine(int script,
if (Q_UNLIKELY(!engine->supportsScript(QChar::Script(script)))) {
qWarning(" OpenType support missing for \"%s\", script %d",
qPrintable(def.family), script);
- return 0;
+ return nullptr;
}
engine->isSmoothlyScalable = style->smoothScalable;
@@ -975,7 +976,7 @@ QFontEngine *loadSingleEngine(int script,
+ qPrintable(def.family), script);
if (engine->ref.loadRelaxed() == 0)
delete engine;
- return 0;
+ return nullptr;
}
engine->isSmoothlyScalable = style->smoothScalable;
@@ -1080,9 +1081,9 @@ unsigned int bestFoundry(int script, unsigned int score, int styleStrategy,
Q_UNUSED(script);
Q_UNUSED(pitch);
- desc->foundry = 0;
- desc->style = 0;
- desc->size = 0;
+ desc->foundry = nullptr;
+ desc->style = nullptr;
+ desc->size = nullptr;
qCDebug(lcFontMatch, " REMARK: looking for best foundry for family '%s' [%d]", family->name.toLatin1().constData(), family->count);
@@ -1103,7 +1104,7 @@ unsigned int bestFoundry(int script, unsigned int score, int styleStrategy,
}
int px = -1;
- QtFontSize *size = 0;
+ QtFontSize *size = nullptr;
// 1. see if we have an exact matching size
if (!(styleStrategy & QFont::ForceOutline)) {
@@ -1243,10 +1244,10 @@ static int match(int script, const QFontDef &request,
foundry_name.isEmpty() ? "-- any --" : foundry_name.toLatin1().constData(),
script, request.weight, request.style, request.stretch, request.pixelSize, pitch);
- desc->family = 0;
- desc->foundry = 0;
- desc->style = 0;
- desc->size = 0;
+ desc->family = nullptr;
+ desc->foundry = nullptr;
+ desc->style = nullptr;
+ desc->size = nullptr;
unsigned int score = ~0u;
@@ -1279,7 +1280,7 @@ static int match(int script, const QFontDef &request,
bestFoundry(script, score, request.styleStrategy,
test.family, foundry_name, styleKey, request.pixelSize, pitch,
&test, request.styleName);
- if (test.foundry == 0 && !foundry_name.isEmpty()) {
+ if (test.foundry == nullptr && !foundry_name.isEmpty()) {
// the specific foundry was not found, so look for
// any foundry matching our requirements
newscore = bestFoundry(script, score, request.styleStrategy, test.family,
@@ -2067,7 +2068,7 @@ bool QFontDatabase::isPrivateFamily(const QString &family) const
*/
QString QFontDatabase::writingSystemName(WritingSystem writingSystem)
{
- const char *name = 0;
+ const char *name = nullptr;
switch (writingSystem) {
case Any:
name = QT_TRANSLATE_NOOP("QFontDatabase", "Any");
@@ -2547,7 +2548,7 @@ QStringList QFontDatabase::applicationFontFamilies(int id)
QFont QFontDatabase::systemFont(QFontDatabase::SystemFont type)
{
- const QFont *font = 0;
+ const QFont *font = nullptr;
if (const QPlatformTheme *theme = QGuiApplicationPrivate::platformTheme()) {
switch (type) {
case GeneralFont:
@@ -2824,7 +2825,7 @@ void QFontDatabase::load(const QFontPrivate *d, int script)
if (fe->type() == QFontEngine::Box && !req.families.at(0).isEmpty()) {
if (fe->ref.loadRelaxed() == 0)
delete fe;
- fe = 0;
+ fe = nullptr;
} else {
if (d->dpi > 0)
fe->fontDef.pointSize = qreal(double((fe->fontDef.pixelSize * 72) / d->dpi));
diff --git a/src/gui/text/qfontengine.cpp b/src/gui/text/qfontengine.cpp
index 403a0510fa..3ca9e9bbde 100644
--- a/src/gui/text/qfontengine.cpp
+++ b/src/gui/text/qfontengine.cpp
@@ -141,7 +141,7 @@ static void hb_getAdvances(HB_Font font, const HB_Glyph *glyphs, hb_uint32 numGl
qglyphs.glyphs = const_cast<glyph_t *>(glyphs);
qglyphs.advances = reinterpret_cast<QFixed *>(advances);
- fe->recalcAdvances(&qglyphs, (flags & HB_ShaperFlag_UseDesignMetrics) ? QFontEngine::DesignMetrics : QFontEngine::ShaperFlags(0));
+ fe->recalcAdvances(&qglyphs, (flags & HB_ShaperFlag_UseDesignMetrics) ? QFontEngine::DesignMetrics : QFontEngine::ShaperFlags{});
}
static HB_Bool hb_canRender(HB_Font font, const HB_UChar16 *string, hb_uint32 length)
@@ -221,7 +221,7 @@ static bool qt_get_font_table_default(void *user_data, uint tag, uchar *buffer,
#ifdef QT_BUILD_INTERNAL
// for testing purpose only, not thread-safe!
-static QList<QFontEngine *> *enginesCollector = 0;
+static QList<QFontEngine *> *enginesCollector = nullptr;
Q_AUTOTEST_EXPORT void QFontEngine_startCollectingEngines()
{
@@ -234,7 +234,7 @@ Q_AUTOTEST_EXPORT QList<QFontEngine *> QFontEngine_stopCollectingEngines()
Q_ASSERT(enginesCollector);
QList<QFontEngine *> ret = *enginesCollector;
delete enginesCollector;
- enginesCollector = 0;
+ enginesCollector = nullptr;
return ret;
}
#endif // QT_BUILD_INTERNAL
@@ -506,7 +506,7 @@ void QFontEngine::getGlyphPositions(const QGlyphLayout &glyphs, const QTransform
g.numGlyphs = 1;
g.glyphs = &kashidaGlyph;
g.advances = &kashidaWidth;
- recalcAdvances(&g, 0);
+ recalcAdvances(&g, { });
for (uint k = 0; k < glyphs.justifications[i].nKashidas; ++k) {
xpos -= kashidaWidth;
@@ -569,9 +569,9 @@ void QFontEngine::getGlyphPositions(const QGlyphLayout &glyphs, const QTransform
void QFontEngine::getGlyphBearings(glyph_t glyph, qreal *leftBearing, qreal *rightBearing)
{
glyph_metrics_t gi = boundingBox(glyph);
- if (leftBearing != 0)
+ if (leftBearing != nullptr)
*leftBearing = gi.leftBearing().toReal();
- if (rightBearing != 0)
+ if (rightBearing != nullptr)
*rightBearing = gi.rightBearing().toReal();
}
@@ -948,7 +948,7 @@ QImage QFontEngine::alphaMapForGlyph(glyph_t glyph)
im.fill(Qt::transparent);
QPainter p(&im);
p.setRenderHint(QPainter::Antialiasing);
- addGlyphsToPath(&glyph, &pt, 1, &path, 0);
+ addGlyphsToPath(&glyph, &pt, 1, &path, { });
p.setPen(Qt::NoPen);
p.setBrush(Qt::black);
p.drawPath(path);
@@ -1022,7 +1022,7 @@ QByteArray QFontEngine::getSfntTable(uint tag) const
{
QByteArray table;
uint len = 0;
- if (!getSfntTableData(tag, 0, &len))
+ if (!getSfntTableData(tag, nullptr, &len))
return table;
table.resize(len);
if (!getSfntTableData(tag, reinterpret_cast<uchar *>(table.data()), &len))
@@ -1231,11 +1231,11 @@ const uchar *QFontEngine::getCMap(const uchar *table, uint tableSize, bool *isSy
// version check
quint16 version;
if (!qSafeFromBigEndian(header, endPtr, &version) || version != 0)
- return 0;
+ return nullptr;
quint16 numTables;
if (!qSafeFromBigEndian(header + 2, endPtr, &numTables))
- return 0;
+ return nullptr;
const uchar *maps = table + 4;
@@ -1255,11 +1255,11 @@ const uchar *QFontEngine::getCMap(const uchar *table, uint tableSize, bool *isSy
for (int n = 0; n < numTables; ++n) {
quint16 platformId;
if (!qSafeFromBigEndian(maps + 8 * n, endPtr, &platformId))
- return 0;
+ return nullptr;
quint16 platformSpecificId = 0;
if (!qSafeFromBigEndian(maps + 8 * n + 2, endPtr, &platformSpecificId))
- return 0;
+ return nullptr;
switch (platformId) {
case 0: // Unicode
@@ -1309,38 +1309,38 @@ const uchar *QFontEngine::getCMap(const uchar *table, uint tableSize, bool *isSy
}
}
if(tableToUse < 0)
- return 0;
+ return nullptr;
resolveTable:
*isSymbolFont = (symbolTable > -1);
quint32 unicode_table = 0;
if (!qSafeFromBigEndian(maps + 8 * tableToUse + 4, endPtr, &unicode_table))
- return 0;
+ return nullptr;
if (!unicode_table)
- return 0;
+ return nullptr;
// get the header of the unicode table
header = table + unicode_table;
quint16 format;
if (!qSafeFromBigEndian(header, endPtr, &format))
- return 0;
+ return nullptr;
quint32 length;
if (format < 8) {
quint16 tmp;
if (!qSafeFromBigEndian(header + 2, endPtr, &tmp))
- return 0;
+ return nullptr;
length = tmp;
} else {
if (!qSafeFromBigEndian(header + 4, endPtr, &length))
- return 0;
+ return nullptr;
}
if (table + unicode_table + length > endPtr)
- return 0;
+ return nullptr;
*cmapSize = length;
// To support symbol fonts that contain a unicode table for the symbol area
@@ -1844,7 +1844,7 @@ QFontEngine *QFontEngineMulti::loadEngine(int at)
return engine;
}
- return 0;
+ return nullptr;
}
glyph_t QFontEngineMulti::glyphIndex(uint ucs4) const
@@ -1865,7 +1865,7 @@ glyph_t QFontEngineMulti::glyphIndex(uint ucs4) const
const_cast<QFontEngineMulti *>(this)->ensureEngineAt(x);
engine = m_engines.at(x);
}
- Q_ASSERT(engine != 0);
+ Q_ASSERT(engine != nullptr);
if (engine->type() == Box)
continue;
@@ -1934,7 +1934,7 @@ bool QFontEngineMulti::stringToCMap(const QChar *str, int len,
if (!engine)
continue;
}
- Q_ASSERT(engine != 0);
+ Q_ASSERT(engine != nullptr);
if (engine->type() == Box)
continue;
@@ -2308,7 +2308,7 @@ QImage QFontEngineMulti::alphaRGBMapForGlyph(glyph_t glyph, QFixed subPixelPosit
*/
QFontEngine *QFontEngineMulti::createMultiFontEngine(QFontEngine *fe, int script)
{
- QFontEngine *engine = 0;
+ QFontEngine *engine = nullptr;
QFontCache::Key key(fe->fontDef, script, /*multi = */true);
QFontCache *fc = QFontCache::instance();
// We can't rely on the fontDef (and hence the cache Key)
diff --git a/src/gui/text/qfontengine_qpf2.cpp b/src/gui/text/qfontengine_qpf2.cpp
index 36d1cd5b9b..d636bca510 100644
--- a/src/gui/text/qfontengine_qpf2.cpp
+++ b/src/gui/text/qfontengine_qpf2.cpp
@@ -151,17 +151,17 @@ static inline const uchar *verifyTag(const uchar *tagPtr, const uchar *endPtr)
const QFontEngineQPF2::Glyph *QFontEngineQPF2::findGlyph(glyph_t g) const
{
if (!g || g >= glyphMapEntries)
- return 0;
+ return nullptr;
const quint32 *gmapPtr = reinterpret_cast<const quint32 *>(fontData + glyphMapOffset);
quint32 glyphPos = qFromBigEndian<quint32>(gmapPtr[g]);
if (glyphPos > glyphDataSize) {
if (glyphPos == 0xffffffff)
- return 0;
+ return nullptr;
#if defined(DEBUG_FONTENGINE)
qDebug() << "glyph" << g << "outside of glyphData, remapping font file";
#endif
if (glyphPos > glyphDataSize)
- return 0;
+ return nullptr;
}
return reinterpret_cast<const Glyph *>(fontData + glyphDataOffset + glyphPos);
}
@@ -230,7 +230,7 @@ QFontEngineQPF2::QFontEngineQPF2(const QFontDef &def, const QByteArray &data)
{
fontDef = def;
cache_cost = 100;
- cmap = 0;
+ cmap = nullptr;
cmapOffset = 0;
cmapSize = 0;
glyphMapOffset = 0;
@@ -456,7 +456,7 @@ glyph_metrics_t QFontEngineQPF2::boundingBox(glyph_t glyph)
QFixed QFontEngineQPF2::ascent() const
{
- return QFixed::fromReal(extractHeaderField(fontData, Tag_Ascent).value<qreal>());
+ return QFixed::fromReal(qvariant_cast<qreal>(extractHeaderField(fontData, Tag_Ascent)));
}
QFixed QFontEngineQPF2::capHeight() const
@@ -466,37 +466,37 @@ QFixed QFontEngineQPF2::capHeight() const
QFixed QFontEngineQPF2::descent() const
{
- return QFixed::fromReal(extractHeaderField(fontData, Tag_Descent).value<qreal>());
+ return QFixed::fromReal(qvariant_cast<qreal>(extractHeaderField(fontData, Tag_Descent)));
}
QFixed QFontEngineQPF2::leading() const
{
- return QFixed::fromReal(extractHeaderField(fontData, Tag_Leading).value<qreal>());
+ return QFixed::fromReal(qvariant_cast<qreal>(extractHeaderField(fontData, Tag_Leading)));
}
qreal QFontEngineQPF2::maxCharWidth() const
{
- return extractHeaderField(fontData, Tag_MaxCharWidth).value<qreal>();
+ return qvariant_cast<qreal>(extractHeaderField(fontData, Tag_MaxCharWidth));
}
qreal QFontEngineQPF2::minLeftBearing() const
{
- return extractHeaderField(fontData, Tag_MinLeftBearing).value<qreal>();
+ return qvariant_cast<qreal>(extractHeaderField(fontData, Tag_MinLeftBearing));
}
qreal QFontEngineQPF2::minRightBearing() const
{
- return extractHeaderField(fontData, Tag_MinRightBearing).value<qreal>();
+ return qvariant_cast<qreal>(extractHeaderField(fontData, Tag_MinRightBearing));
}
QFixed QFontEngineQPF2::underlinePosition() const
{
- return QFixed::fromReal(extractHeaderField(fontData, Tag_UnderlinePosition).value<qreal>());
+ return QFixed::fromReal(qvariant_cast<qreal>(extractHeaderField(fontData, Tag_UnderlinePosition)));
}
QFixed QFontEngineQPF2::lineThickness() const
{
- return QFixed::fromReal(extractHeaderField(fontData, Tag_LineThickness).value<qreal>());
+ return QFixed::fromReal(qvariant_cast<qreal>(extractHeaderField(fontData, Tag_LineThickness)));
}
bool QFontEngineQPF2::isValid() const
diff --git a/src/gui/text/qfontmetrics.cpp b/src/gui/text/qfontmetrics.cpp
index d3e4f11e8c..de9cae0c91 100644
--- a/src/gui/text/qfontmetrics.cpp
+++ b/src/gui/text/qfontmetrics.cpp
@@ -106,12 +106,12 @@ extern void qt_format_text(const QFont& font, const QRectF &_r,
These are by necessity slow, and we recommend avoiding them if
possible.
- For each character, you can get its width(), leftBearing() and
- rightBearing() and find out whether it is in the font using
+ For each character, you can get its horizontalAdvance(), leftBearing(),
+ and rightBearing(), and find out whether it is in the font using
inFont(). You can also treat the character as a string, and use
the string functions on it.
- The string functions include width(), to return the width of a
+ The string functions include horizontalAdvance(), to return the width of a
string in pixels (or points, for a printer), boundingRect(), to
return a rectangle large enough to contain the rendered string,
and size(), to return the size of that rectangle.
@@ -282,7 +282,7 @@ bool QFontMetrics::operator ==(const QFontMetrics &other) const
int QFontMetrics::ascent() const
{
QFontEngine *engine = d->engineForScript(QChar::Script_Common);
- Q_ASSERT(engine != 0);
+ Q_ASSERT(engine != nullptr);
return qRound(engine->ascent());
}
@@ -301,7 +301,7 @@ int QFontMetrics::ascent() const
int QFontMetrics::capHeight() const
{
QFontEngine *engine = d->engineForScript(QChar::Script_Common);
- Q_ASSERT(engine != 0);
+ Q_ASSERT(engine != nullptr);
return qRound(engine->capHeight());
}
@@ -318,7 +318,7 @@ int QFontMetrics::capHeight() const
int QFontMetrics::descent() const
{
QFontEngine *engine = d->engineForScript(QChar::Script_Common);
- Q_ASSERT(engine != 0);
+ Q_ASSERT(engine != nullptr);
return qRound(engine->descent());
}
@@ -332,7 +332,7 @@ int QFontMetrics::descent() const
int QFontMetrics::height() const
{
QFontEngine *engine = d->engineForScript(QChar::Script_Common);
- Q_ASSERT(engine != 0);
+ Q_ASSERT(engine != nullptr);
return qRound(engine->ascent()) + qRound(engine->descent());
}
@@ -346,7 +346,7 @@ int QFontMetrics::height() const
int QFontMetrics::leading() const
{
QFontEngine *engine = d->engineForScript(QChar::Script_Common);
- Q_ASSERT(engine != 0);
+ Q_ASSERT(engine != nullptr);
return qRound(engine->leading());
}
@@ -360,7 +360,7 @@ int QFontMetrics::leading() const
int QFontMetrics::lineSpacing() const
{
QFontEngine *engine = d->engineForScript(QChar::Script_Common);
- Q_ASSERT(engine != 0);
+ Q_ASSERT(engine != nullptr);
return qRound(engine->leading()) + qRound(engine->ascent()) + qRound(engine->descent());
}
@@ -377,7 +377,7 @@ int QFontMetrics::lineSpacing() const
int QFontMetrics::minLeftBearing() const
{
QFontEngine *engine = d->engineForScript(QChar::Script_Common);
- Q_ASSERT(engine != 0);
+ Q_ASSERT(engine != nullptr);
return qRound(engine->minLeftBearing());
}
@@ -394,7 +394,7 @@ int QFontMetrics::minLeftBearing() const
int QFontMetrics::minRightBearing() const
{
QFontEngine *engine = d->engineForScript(QChar::Script_Common);
- Q_ASSERT(engine != 0);
+ Q_ASSERT(engine != nullptr);
return qRound(engine->minRightBearing());
}
@@ -404,7 +404,7 @@ int QFontMetrics::minRightBearing() const
int QFontMetrics::maxWidth() const
{
QFontEngine *engine = d->engineForScript(QChar::Script_Common);
- Q_ASSERT(engine != 0);
+ Q_ASSERT(engine != nullptr);
return qRound(engine->maxCharWidth());
}
@@ -415,7 +415,7 @@ int QFontMetrics::maxWidth() const
int QFontMetrics::xHeight() const
{
QFontEngine *engine = d->engineForScript(QChar::Script_Common);
- Q_ASSERT(engine != 0);
+ Q_ASSERT(engine != nullptr);
if (d->capital == QFont::SmallCaps)
return qRound(d->smallCapsFontPrivate()->engineForScript(QChar::Script_Common)->ascent());
return qRound(engine->xHeight());
@@ -429,7 +429,7 @@ int QFontMetrics::xHeight() const
int QFontMetrics::averageCharWidth() const
{
QFontEngine *engine = d->engineForScript(QChar::Script_Common);
- Q_ASSERT(engine != 0);
+ Q_ASSERT(engine != nullptr);
return qRound(engine->averageCharWidth());
}
@@ -450,7 +450,7 @@ bool QFontMetrics::inFontUcs4(uint ucs4) const
{
const int script = QChar::script(ucs4);
QFontEngine *engine = d->engineForScript(script);
- Q_ASSERT(engine != 0);
+ Q_ASSERT(engine != nullptr);
if (engine->type() == QFontEngine::Box)
return false;
return engine->canRender(ucs4);
@@ -464,9 +464,9 @@ bool QFontMetrics::inFontUcs4(uint ucs4) const
value is negative if the pixels of the character extend to the
left of the logical origin.
- See width() for a graphical description of this metric.
+ See horizontalAdvance() for a graphical description of this metric.
- \sa rightBearing(), minLeftBearing(), width()
+ \sa rightBearing(), minLeftBearing(), horizontalAdvance()
*/
int QFontMetrics::leftBearing(QChar ch) const
{
@@ -476,7 +476,7 @@ int QFontMetrics::leftBearing(QChar ch) const
engine = d->smallCapsFontPrivate()->engineForScript(script);
else
engine = d->engineForScript(script);
- Q_ASSERT(engine != 0);
+ Q_ASSERT(engine != nullptr);
if (engine->type() == QFontEngine::Box)
return 0;
@@ -495,11 +495,11 @@ int QFontMetrics::leftBearing(QChar ch) const
The right bearing is the left-ward distance of the right-most
pixel of the character from the logical origin of a subsequent
character. This value is negative if the pixels of the character
- extend to the right of the width() of the character.
+ extend to the right of the horizontalAdvance() of the character.
- See width() for a graphical description of this metric.
+ See horizontalAdvance() for a graphical description of this metric.
- \sa leftBearing(), minRightBearing(), width()
+ \sa leftBearing(), minRightBearing(), horizontalAdvance()
*/
int QFontMetrics::rightBearing(QChar ch) const
{
@@ -509,7 +509,7 @@ int QFontMetrics::rightBearing(QChar ch) const
engine = d->smallCapsFontPrivate()->engineForScript(script);
else
engine = d->engineForScript(script);
- Q_ASSERT(engine != 0);
+ Q_ASSERT(engine != nullptr);
if (engine->type() == QFontEngine::Box)
return 0;
@@ -518,7 +518,7 @@ int QFontMetrics::rightBearing(QChar ch) const
glyph_t glyph = engine->glyphIndex(ch.unicode());
qreal rb;
- engine->getGlyphBearings(glyph, 0, &rb);
+ engine->getGlyphBearings(glyph, nullptr, &rb);
return qRound(rb);
}
@@ -535,7 +535,7 @@ int QFontMetrics::rightBearing(QChar ch) const
\deprecated in Qt 5.11. Use horizontalAdvance() instead.
- \sa boundingRect()
+ \sa boundingRect(), horizontalAdvance()
*/
int QFontMetrics::width(const QString &text, int len) const
{
@@ -562,7 +562,7 @@ int QFontMetrics::width(const QString &text, int len, int flags) const
int numGlyphs = len;
QVarLengthGlyphLayoutArray glyphs(numGlyphs);
QFontEngine *engine = d->engineForScript(QChar::Script_Common);
- if (!engine->stringToCMap(text.data(), len, &glyphs, &numGlyphs, 0))
+ if (!engine->stringToCMap(text.data(), len, &glyphs, &numGlyphs, { }))
Q_UNREACHABLE();
QFixed width;
@@ -601,7 +601,7 @@ int QFontMetrics::width(const QString &text, int len, int flags) const
processing strings cannot be taken into account. When implementing
an interactive text control, use QTextLayout instead.
- \sa boundingRect()
+ \sa boundingRect(), horizontalAdvance()
*/
int QFontMetrics::width(QChar ch) const
{
@@ -673,7 +673,7 @@ int QFontMetrics::horizontalAdvance(QChar ch) const
engine = d->smallCapsFontPrivate()->engineForScript(script);
else
engine = d->engineForScript(script);
- Q_ASSERT(engine != 0);
+ Q_ASSERT(engine != nullptr);
d->alterCharForCapitalization(ch);
@@ -684,7 +684,7 @@ int QFontMetrics::horizontalAdvance(QChar ch) const
glyphs.numGlyphs = 1;
glyphs.glyphs = &glyph;
glyphs.advances = &advance;
- engine->recalcAdvances(&glyphs, 0);
+ engine->recalcAdvances(&glyphs, { });
return qRound(advance);
}
@@ -725,7 +725,7 @@ int QFontMetrics::charWidth(const QString &text, int pos) const
engine = d->smallCapsFontPrivate()->engineForScript(script);
else
engine = d->engineForScript(script);
- Q_ASSERT(engine != 0);
+ Q_ASSERT(engine != nullptr);
d->alterCharForCapitalization(ch);
@@ -736,7 +736,7 @@ int QFontMetrics::charWidth(const QString &text, int pos) const
glyphs.numGlyphs = 1;
glyphs.glyphs = &glyph;
glyphs.advances = &advance;
- engine->recalcAdvances(&glyphs, 0);
+ engine->recalcAdvances(&glyphs, { });
width = qRound(advance);
}
@@ -751,7 +751,8 @@ int QFontMetrics::charWidth(const QString &text, int pos) const
Note that the bounding rectangle may extend to the left of (0, 0),
e.g. for italicized fonts, and that the width of the returned
- rectangle might be different than what the width() method returns.
+ rectangle might be different than what the horizontalAdvance() method
+ returns.
If you want to know the advance width of the string (to lay out
a set of strings next to each other), use horizontalAdvance() instead.
@@ -762,7 +763,8 @@ int QFontMetrics::charWidth(const QString &text, int pos) const
The height of the bounding rectangle is at least as large as the
value returned by height().
- \sa width(), height(), QPainter::boundingRect(), tightBoundingRect()
+ \sa horizontalAdvance(), height(), QPainter::boundingRect(),
+ tightBoundingRect()
*/
QRect QFontMetrics::boundingRect(const QString &text) const
{
@@ -790,7 +792,7 @@ QRect QFontMetrics::boundingRect(const QString &text) const
\warning The width of the returned rectangle is not the advance width
of the character. Use boundingRect(const QString &) or horizontalAdvance() instead.
- \sa width()
+ \sa horizontalAdvance()
*/
QRect QFontMetrics::boundingRect(QChar ch) const
{
@@ -800,7 +802,7 @@ QRect QFontMetrics::boundingRect(QChar ch) const
engine = d->smallCapsFontPrivate()->engineForScript(script);
else
engine = d->engineForScript(script);
- Q_ASSERT(engine != 0);
+ Q_ASSERT(engine != nullptr);
d->alterCharForCapitalization(ch);
@@ -864,7 +866,7 @@ QRect QFontMetrics::boundingRect(QChar ch) const
fontHeight() and lineSpacing() are used to calculate the height,
rather than individual character heights.
- \sa width(), QPainter::boundingRect(), Qt::Alignment
+ \sa horizontalAdvance(), QPainter::boundingRect(), Qt::Alignment
*/
QRect QFontMetrics::boundingRect(const QRect &rect, int flags, const QString &text, int tabStops,
int *tabArray) const
@@ -877,7 +879,7 @@ QRect QFontMetrics::boundingRect(const QRect &rect, int flags, const QString &te
QRectF rb;
QRectF rr(rect);
qt_format_text(QFont(d.data()), rr, flags | Qt::TextDontPrint, text, &rb, tabStops, tabArray,
- tabArrayLen, 0);
+ tabArrayLen, nullptr);
return rb.toAlignedRect();
}
@@ -920,7 +922,8 @@ QSize QFontMetrics::size(int flags, const QString &text, int tabStops, int *tabA
Note that the bounding rectangle may extend to the left of (0, 0),
e.g. for italicized fonts, and that the width of the returned
- rectangle might be different than what the width() method returns.
+ rectangle might be different than what the horizontalAdvance() method
+ returns.
If you want to know the advance width of the string (to lay out
a set of strings next to each other), use horizontalAdvance() instead.
@@ -930,7 +933,7 @@ QSize QFontMetrics::size(int flags, const QString &text, int tabStops, int *tabA
\warning Calling this method is very slow on Windows.
- \sa width(), height(), boundingRect()
+ \sa horizontalAdvance(), height(), boundingRect()
*/
QRect QFontMetrics::tightBoundingRect(const QString &text) const
{
@@ -994,7 +997,7 @@ QString QFontMetrics::elidedText(const QString &text, Qt::TextElideMode mode, in
int QFontMetrics::underlinePos() const
{
QFontEngine *engine = d->engineForScript(QChar::Script_Common);
- Q_ASSERT(engine != 0);
+ Q_ASSERT(engine != nullptr);
return qRound(engine->underlinePosition());
}
@@ -1030,7 +1033,7 @@ int QFontMetrics::strikeOutPos() const
int QFontMetrics::lineWidth() const
{
QFontEngine *engine = d->engineForScript(QChar::Script_Common);
- Q_ASSERT(engine != 0);
+ Q_ASSERT(engine != nullptr);
return qRound(engine->lineThickness());
}
@@ -1079,12 +1082,12 @@ qreal QFontMetrics::fontDpi() const
These are by necessity slow, and we recommend avoiding them if
possible.
- For each character, you can get its width(), leftBearing() and
- rightBearing() and find out whether it is in the font using
+ For each character, you can get its horizontalAdvance(), leftBearing(), and
+ rightBearing(), and find out whether it is in the font using
inFont(). You can also treat the character as a string, and use
the string functions on it.
- The string functions include width(), to return the width of a
+ The string functions include horizontalAdvance(), to return the width of a
string in pixels (or points, for a printer), boundingRect(), to
return a rectangle large enough to contain the rendered string,
and size(), to return the size of that rectangle.
@@ -1248,7 +1251,7 @@ bool QFontMetricsF::operator ==(const QFontMetricsF &other) const
qreal QFontMetricsF::ascent() const
{
QFontEngine *engine = d->engineForScript(QChar::Script_Common);
- Q_ASSERT(engine != 0);
+ Q_ASSERT(engine != nullptr);
return engine->ascent().toReal();
}
@@ -1267,7 +1270,7 @@ qreal QFontMetricsF::ascent() const
qreal QFontMetricsF::capHeight() const
{
QFontEngine *engine = d->engineForScript(QChar::Script_Common);
- Q_ASSERT(engine != 0);
+ Q_ASSERT(engine != nullptr);
return engine->capHeight().toReal();
}
@@ -1285,7 +1288,7 @@ qreal QFontMetricsF::capHeight() const
qreal QFontMetricsF::descent() const
{
QFontEngine *engine = d->engineForScript(QChar::Script_Common);
- Q_ASSERT(engine != 0);
+ Q_ASSERT(engine != nullptr);
return engine->descent().toReal();
}
@@ -1299,7 +1302,7 @@ qreal QFontMetricsF::descent() const
qreal QFontMetricsF::height() const
{
QFontEngine *engine = d->engineForScript(QChar::Script_Common);
- Q_ASSERT(engine != 0);
+ Q_ASSERT(engine != nullptr);
return (engine->ascent() + engine->descent()).toReal();
}
@@ -1314,7 +1317,7 @@ qreal QFontMetricsF::height() const
qreal QFontMetricsF::leading() const
{
QFontEngine *engine = d->engineForScript(QChar::Script_Common);
- Q_ASSERT(engine != 0);
+ Q_ASSERT(engine != nullptr);
return engine->leading().toReal();
}
@@ -1328,7 +1331,7 @@ qreal QFontMetricsF::leading() const
qreal QFontMetricsF::lineSpacing() const
{
QFontEngine *engine = d->engineForScript(QChar::Script_Common);
- Q_ASSERT(engine != 0);
+ Q_ASSERT(engine != nullptr);
return (engine->leading() + engine->ascent() + engine->descent()).toReal();
}
@@ -1345,7 +1348,7 @@ qreal QFontMetricsF::lineSpacing() const
qreal QFontMetricsF::minLeftBearing() const
{
QFontEngine *engine = d->engineForScript(QChar::Script_Common);
- Q_ASSERT(engine != 0);
+ Q_ASSERT(engine != nullptr);
return engine->minLeftBearing();
}
@@ -1362,7 +1365,7 @@ qreal QFontMetricsF::minLeftBearing() const
qreal QFontMetricsF::minRightBearing() const
{
QFontEngine *engine = d->engineForScript(QChar::Script_Common);
- Q_ASSERT(engine != 0);
+ Q_ASSERT(engine != nullptr);
return engine->minRightBearing();
}
@@ -1372,7 +1375,7 @@ qreal QFontMetricsF::minRightBearing() const
qreal QFontMetricsF::maxWidth() const
{
QFontEngine *engine = d->engineForScript(QChar::Script_Common);
- Q_ASSERT(engine != 0);
+ Q_ASSERT(engine != nullptr);
return engine->maxCharWidth();
}
@@ -1383,7 +1386,7 @@ qreal QFontMetricsF::maxWidth() const
qreal QFontMetricsF::xHeight() const
{
QFontEngine *engine = d->engineForScript(QChar::Script_Common);
- Q_ASSERT(engine != 0);
+ Q_ASSERT(engine != nullptr);
if (d->capital == QFont::SmallCaps)
return d->smallCapsFontPrivate()->engineForScript(QChar::Script_Common)->ascent().toReal();
return engine->xHeight().toReal();
@@ -1397,7 +1400,7 @@ qreal QFontMetricsF::xHeight() const
qreal QFontMetricsF::averageCharWidth() const
{
QFontEngine *engine = d->engineForScript(QChar::Script_Common);
- Q_ASSERT(engine != 0);
+ Q_ASSERT(engine != nullptr);
return engine->averageCharWidth().toReal();
}
@@ -1420,7 +1423,7 @@ bool QFontMetricsF::inFontUcs4(uint ucs4) const
{
const int script = QChar::script(ucs4);
QFontEngine *engine = d->engineForScript(script);
- Q_ASSERT(engine != 0);
+ Q_ASSERT(engine != nullptr);
if (engine->type() == QFontEngine::Box)
return false;
return engine->canRender(ucs4);
@@ -1434,9 +1437,9 @@ bool QFontMetricsF::inFontUcs4(uint ucs4) const
value is negative if the pixels of the character extend to the
left of the logical origin.
- See width() for a graphical description of this metric.
+ See horizontalAdvance() for a graphical description of this metric.
- \sa rightBearing(), minLeftBearing(), width()
+ \sa rightBearing(), minLeftBearing(), horizontalAdvance()
*/
qreal QFontMetricsF::leftBearing(QChar ch) const
{
@@ -1446,7 +1449,7 @@ qreal QFontMetricsF::leftBearing(QChar ch) const
engine = d->smallCapsFontPrivate()->engineForScript(script);
else
engine = d->engineForScript(script);
- Q_ASSERT(engine != 0);
+ Q_ASSERT(engine != nullptr);
if (engine->type() == QFontEngine::Box)
return 0;
@@ -1465,11 +1468,11 @@ qreal QFontMetricsF::leftBearing(QChar ch) const
The right bearing is the left-ward distance of the right-most
pixel of the character from the logical origin of a subsequent
character. This value is negative if the pixels of the character
- extend to the right of the width() of the character.
+ extend to the right of the horizontalAdvance() of the character.
- See width() for a graphical description of this metric.
+ See horizontalAdvance() for a graphical description of this metric.
- \sa leftBearing(), minRightBearing(), width()
+ \sa leftBearing(), minRightBearing(), horizontalAdvance()
*/
qreal QFontMetricsF::rightBearing(QChar ch) const
{
@@ -1479,7 +1482,7 @@ qreal QFontMetricsF::rightBearing(QChar ch) const
engine = d->smallCapsFontPrivate()->engineForScript(script);
else
engine = d->engineForScript(script);
- Q_ASSERT(engine != 0);
+ Q_ASSERT(engine != nullptr);
if (engine->type() == QFontEngine::Box)
return 0;
@@ -1488,7 +1491,7 @@ qreal QFontMetricsF::rightBearing(QChar ch) const
glyph_t glyph = engine->glyphIndex(ch.unicode());
qreal rb;
- engine->getGlyphBearings(glyph, 0, &rb);
+ engine->getGlyphBearings(glyph, nullptr, &rb);
return rb;
}
@@ -1504,7 +1507,7 @@ qreal QFontMetricsF::rightBearing(QChar ch) const
\deprecated in Qt 5.11. Use horizontalAdvance() instead.
- \sa boundingRect()
+ \sa boundingRect(), horizontalAdvance()
*/
qreal QFontMetricsF::width(const QString &text) const
{
@@ -1535,7 +1538,7 @@ qreal QFontMetricsF::width(const QString &text) const
processing strings cannot be taken into account. When implementing
an interactive text control, use QTextLayout instead.
- \sa boundingRect()
+ \sa boundingRect(), horizontalAdvance()
*/
qreal QFontMetricsF::width(QChar ch) const
{
@@ -1581,7 +1584,7 @@ qreal QFontMetricsF::horizontalAdvance(const QString &text, int length) const
ch.
Some of the metrics are described in the image to the right. The
- central dark rectangles cover the logical width() of each
+ central dark rectangles cover the logical horizontalAdvance() of each
character. The outer pale rectangles cover the leftBearing() and
rightBearing() of each character. Notice that the bearings of "f"
in this particular font are both negative, while the bearings of
@@ -1608,7 +1611,7 @@ qreal QFontMetricsF::horizontalAdvance(QChar ch) const
engine = d->smallCapsFontPrivate()->engineForScript(script);
else
engine = d->engineForScript(script);
- Q_ASSERT(engine != 0);
+ Q_ASSERT(engine != nullptr);
d->alterCharForCapitalization(ch);
@@ -1619,7 +1622,7 @@ qreal QFontMetricsF::horizontalAdvance(QChar ch) const
glyphs.numGlyphs = 1;
glyphs.glyphs = &glyph;
glyphs.advances = &advance;
- engine->recalcAdvances(&glyphs, 0);
+ engine->recalcAdvances(&glyphs, { });
return advance.toReal();
}
@@ -1632,7 +1635,7 @@ qreal QFontMetricsF::horizontalAdvance(QChar ch) const
Note that the bounding rectangle may extend to the left of (0, 0),
e.g. for italicized fonts, and that the width of the returned
- rectangle might be different than what the width() method returns.
+ rectangle might be different than what the horizontalAdvance() method returns.
If you want to know the advance width of the string (to lay out
a set of strings next to each other), use horizontalAdvance() instead.
@@ -1643,7 +1646,7 @@ qreal QFontMetricsF::horizontalAdvance(QChar ch) const
The height of the bounding rectangle is at least as large as the
value returned height().
- \sa width(), height(), QPainter::boundingRect()
+ \sa horizontalAdvance(), height(), QPainter::boundingRect()
*/
QRectF QFontMetricsF::boundingRect(const QString &text) const
{
@@ -1669,7 +1672,7 @@ QRectF QFontMetricsF::boundingRect(const QString &text) const
Note that the rectangle usually extends both above and below the
base line.
- \sa width()
+ \sa horizontalAdvance()
*/
QRectF QFontMetricsF::boundingRect(QChar ch) const
{
@@ -1679,7 +1682,7 @@ QRectF QFontMetricsF::boundingRect(QChar ch) const
engine = d->smallCapsFontPrivate()->engineForScript(script);
else
engine = d->engineForScript(script);
- Q_ASSERT(engine != 0);
+ Q_ASSERT(engine != nullptr);
d->alterCharForCapitalization(ch);
@@ -1746,7 +1749,7 @@ QRectF QFontMetricsF::boundingRect(QChar ch) const
fontHeight() and lineSpacing() are used to calculate the height,
rather than individual character heights.
- \sa width(), QPainter::boundingRect(), Qt::Alignment
+ \sa horizontalAdvance(), QPainter::boundingRect(), Qt::Alignment
*/
QRectF QFontMetricsF::boundingRect(const QRectF &rect, int flags, const QString& text,
int tabStops, int *tabArray) const
@@ -1758,7 +1761,7 @@ QRectF QFontMetricsF::boundingRect(const QRectF &rect, int flags, const QString&
QRectF rb;
qt_format_text(QFont(d.data()), rect, flags | Qt::TextDontPrint, text, &rb, tabStops, tabArray,
- tabArrayLen, 0);
+ tabArrayLen, nullptr);
return rb;
}
@@ -1805,7 +1808,8 @@ QSizeF QFontMetricsF::size(int flags, const QString &text, int tabStops, int *ta
Note that the bounding rectangle may extend to the left of (0, 0),
e.g. for italicized fonts, and that the width of the returned
- rectangle might be different than what the width() method returns.
+ rectangle might be different than what the horizontalAdvance() method
+ returns.
If you want to know the advance width of the string (to lay out
a set of strings next to each other), use horizontalAdvance() instead.
@@ -1815,7 +1819,7 @@ QSizeF QFontMetricsF::size(int flags, const QString &text, int tabStops, int *ta
\warning Calling this method is very slow on Windows.
- \sa width(), height(), boundingRect()
+ \sa horizontalAdvance(), height(), boundingRect()
*/
QRectF QFontMetricsF::tightBoundingRect(const QString &text) const
{
@@ -1877,7 +1881,7 @@ QString QFontMetricsF::elidedText(const QString &text, Qt::TextElideMode mode, q
qreal QFontMetricsF::underlinePos() const
{
QFontEngine *engine = d->engineForScript(QChar::Script_Common);
- Q_ASSERT(engine != 0);
+ Q_ASSERT(engine != nullptr);
return engine->underlinePosition().toReal();
}
@@ -1912,7 +1916,7 @@ qreal QFontMetricsF::strikeOutPos() const
qreal QFontMetricsF::lineWidth() const
{
QFontEngine *engine = d->engineForScript(QChar::Script_Common);
- Q_ASSERT(engine != 0);
+ Q_ASSERT(engine != nullptr);
return engine->lineThickness().toReal();
}
diff --git a/src/gui/text/qglyphrun.cpp b/src/gui/text/qglyphrun.cpp
index 3c16c3bf62..f4cd839f15 100644
--- a/src/gui/text/qglyphrun.cpp
+++ b/src/gui/text/qglyphrun.cpp
@@ -279,7 +279,7 @@ void QGlyphRun::clear()
{
detach();
d->rawFont = QRawFont();
- d->flags = 0;
+ d->flags = { };
setPositions(QVector<QPointF>());
setGlyphIndexes(QVector<quint32>());
diff --git a/src/gui/text/qglyphrun_p.h b/src/gui/text/qglyphrun_p.h
index 465c3c7000..46e2a8bbfb 100644
--- a/src/gui/text/qglyphrun_p.h
+++ b/src/gui/text/qglyphrun_p.h
@@ -65,8 +65,7 @@ class QGlyphRunPrivate: public QSharedData
{
public:
QGlyphRunPrivate()
- : flags(nullptr)
- , glyphIndexData(glyphIndexes.constData())
+ : glyphIndexData(glyphIndexes.constData())
, glyphIndexDataSize(0)
, glyphPositionData(glyphPositions.constData())
, glyphPositionDataSize(0)
diff --git a/src/gui/text/qharfbuzzng.cpp b/src/gui/text/qharfbuzzng.cpp
index 9c8582b43d..397e6cc49f 100644
--- a/src/gui/text/qharfbuzzng.cpp
+++ b/src/gui/text/qharfbuzzng.cpp
@@ -695,12 +695,12 @@ _hb_qt_font_create(QFontEngine *fe)
return NULL;
}
- const int y_ppem = fe->fontDef.pixelSize;
- const int x_ppem = (fe->fontDef.pixelSize * fe->fontDef.stretch) / 100;
+ const qreal y_ppem = fe->fontDef.pixelSize;
+ const qreal x_ppem = (fe->fontDef.pixelSize * fe->fontDef.stretch) / 100.0;
hb_font_set_funcs(font, hb_qt_get_font_funcs(), (void *)fe, NULL);
- hb_font_set_scale(font, QFixed(x_ppem).value(), -QFixed(y_ppem).value());
- hb_font_set_ppem(font, x_ppem, y_ppem);
+ hb_font_set_scale(font, QFixed::fromReal(x_ppem).value(), -QFixed::fromReal(y_ppem).value());
+ hb_font_set_ppem(font, int(x_ppem), int(y_ppem));
hb_font_set_ptem(font, fe->fontDef.pointSize);
diff --git a/src/gui/text/qplatformfontdatabase.cpp b/src/gui/text/qplatformfontdatabase.cpp
index 90322b24da..02e25bb6af 100644
--- a/src/gui/text/qplatformfontdatabase.cpp
+++ b/src/gui/text/qplatformfontdatabase.cpp
@@ -368,7 +368,7 @@ QFontEngine *QPlatformFontDatabase::fontEngine(const QByteArray &fontData, qreal
Q_UNUSED(pixelSize);
Q_UNUSED(hintingPreference);
qWarning("This plugin does not support font engines created directly from font data");
- return 0;
+ return nullptr;
}
/*!
diff --git a/src/gui/text/qrawfont.cpp b/src/gui/text/qrawfont.cpp
index a060448924..884525bd76 100644
--- a/src/gui/text/qrawfont.cpp
+++ b/src/gui/text/qrawfont.cpp
@@ -303,7 +303,7 @@ QPainterPath QRawFont::pathForGlyph(quint32 glyphIndex) const
QFixedPoint position;
QPainterPath path;
- d->fontEngine->addGlyphsToPath(&glyphIndex, &position, 1, &path, 0);
+ d->fontEngine->addGlyphsToPath(&glyphIndex, &position, 1, &path, { });
return path;
}
@@ -750,7 +750,7 @@ QRawFont QRawFont::fromFont(const QFont &font, QFontDatabase::WritingSystem writ
int script = qt_script_for_writing_system(writingSystem);
QFontEngine *fe = font_d->engineForScript(script);
- if (fe != 0 && fe->type() == QFontEngine::Multi) {
+ if (fe != nullptr && fe->type() == QFontEngine::Multi) {
QFontEngineMulti *multiEngine = static_cast<QFontEngineMulti *>(fe);
fe = multiEngine->engine(0);
@@ -770,7 +770,7 @@ QRawFont QRawFont::fromFont(const QFont &font, QFontDatabase::WritingSystem writ
Q_ASSERT(fe);
}
- if (fe != 0) {
+ if (fe != nullptr) {
rawFont.d.data()->setFontEngine(fe);
rawFont.d.data()->hintingPreference = font.hintingPreference();
}
@@ -795,7 +795,7 @@ void QRawFont::setPixelSize(qreal pixelSize)
void QRawFontPrivate::loadFromData(const QByteArray &fontData, qreal pixelSize,
QFont::HintingPreference hintingPreference)
{
- Q_ASSERT(fontEngine == 0);
+ Q_ASSERT(fontEngine == nullptr);
QPlatformFontDatabase *pfdb = QGuiApplicationPrivate::platformIntegration()->fontDatabase();
setFontEngine(pfdb->fontEngine(fontData, pixelSize, hintingPreference));
diff --git a/src/gui/text/qstatictext.cpp b/src/gui/text/qstatictext.cpp
index 490e0b6b8f..e588b44efd 100644
--- a/src/gui/text/qstatictext.cpp
+++ b/src/gui/text/qstatictext.cpp
@@ -403,7 +403,7 @@ QSizeF QStaticText::size() const
}
QStaticTextPrivate::QStaticTextPrivate()
- : textWidth(-1.0), items(0), itemCount(0), glyphPool(0), positionPool(0),
+ : textWidth(-1.0), items(nullptr), itemCount(0), glyphPool(nullptr), positionPool(nullptr),
needsRelayout(true), useBackendOptimizations(false), textFormat(Qt::AutoText),
untransformedCoordinates(false)
{
@@ -411,7 +411,7 @@ QStaticTextPrivate::QStaticTextPrivate()
QStaticTextPrivate::QStaticTextPrivate(const QStaticTextPrivate &other)
: text(other.text), font(other.font), textWidth(other.textWidth), matrix(other.matrix),
- items(0), itemCount(0), glyphPool(0), positionPool(0), textOption(other.textOption),
+ items(nullptr), itemCount(0), glyphPool(nullptr), positionPool(nullptr), textOption(other.textOption),
needsRelayout(true), useBackendOptimizations(other.useBackendOptimizations),
textFormat(other.textFormat), untransformedCoordinates(other.untransformedCoordinates)
{
diff --git a/src/gui/text/qsyntaxhighlighter.cpp b/src/gui/text/qsyntaxhighlighter.cpp
index cf584f6980..b50957d63d 100644
--- a/src/gui/text/qsyntaxhighlighter.cpp
+++ b/src/gui/text/qsyntaxhighlighter.cpp
@@ -299,7 +299,7 @@ QSyntaxHighlighter::QSyntaxHighlighter(QObject *parent)
: QObject(*new QSyntaxHighlighterPrivate, parent)
{
if (parent && parent->inherits("QTextEdit")) {
- QTextDocument *doc = parent->property("document").value<QTextDocument *>();
+ QTextDocument *doc = qvariant_cast<QTextDocument *>(parent->property("document"));
if (doc)
setDocument(doc);
}
@@ -321,7 +321,7 @@ QSyntaxHighlighter::QSyntaxHighlighter(QTextDocument *parent)
*/
QSyntaxHighlighter::~QSyntaxHighlighter()
{
- setDocument(0);
+ setDocument(nullptr);
}
/*!
@@ -601,7 +601,7 @@ QTextBlockUserData *QSyntaxHighlighter::currentBlockUserData() const
{
Q_D(const QSyntaxHighlighter);
if (!d->currentBlock.isValid())
- return 0;
+ return nullptr;
return d->currentBlock.userData();
}
diff --git a/src/gui/text/qtextcursor.cpp b/src/gui/text/qtextcursor.cpp
index c88497840f..fa323ef4bd 100644
--- a/src/gui/text/qtextcursor.cpp
+++ b/src/gui/text/qtextcursor.cpp
@@ -371,7 +371,7 @@ bool QTextCursorPrivate::movePosition(QTextCursor::MoveOperation op, QTextCursor
int newPosition = position;
- if (mode == QTextCursor::KeepAnchor && complexSelectionTable() != 0) {
+ if (mode == QTextCursor::KeepAnchor && complexSelectionTable() != nullptr) {
if ((op >= QTextCursor::EndOfLine && op <= QTextCursor::NextWord)
|| (op >= QTextCursor::Right && op <= QTextCursor::WordRight)) {
QTextTable *t = qobject_cast<QTextTable *>(priv->frameAt(position));
@@ -671,7 +671,7 @@ bool QTextCursorPrivate::movePosition(QTextCursor::MoveOperation op, QTextCursor
QTextTable *QTextCursorPrivate::complexSelectionTable() const
{
if (position == anchor)
- return 0;
+ return nullptr;
QTextTable *t = qobject_cast<QTextTable *>(priv->frameAt(position));
if (t) {
@@ -681,7 +681,7 @@ QTextTable *QTextCursorPrivate::complexSelectionTable() const
Q_ASSERT(cell_anchor.isValid());
if (cell_pos == cell_anchor)
- t = 0;
+ t = nullptr;
}
return t;
}
@@ -1044,7 +1044,7 @@ QTextLayout *QTextCursorPrivate::blockLayout(QTextBlock &block) const{
Constructs a null cursor.
*/
QTextCursor::QTextCursor()
- : d(0)
+ : d(nullptr)
{
}
@@ -1623,7 +1623,7 @@ bool QTextCursor::hasComplexSelection() const
if (!d)
return false;
- return d->complexSelectionTable() != 0;
+ return d->complexSelectionTable() != nullptr;
}
/*!
@@ -2111,7 +2111,7 @@ QTextList *QTextCursor::insertList(QTextListFormat::Style style)
QTextList *QTextCursor::createList(const QTextListFormat &format)
{
if (!d || !d->priv)
- return 0;
+ return nullptr;
QTextList *list = static_cast<QTextList *>(d->priv->createObject(format));
QTextBlockFormat modifier;
@@ -2146,7 +2146,7 @@ QTextList *QTextCursor::createList(QTextListFormat::Style style)
QTextList *QTextCursor::currentList() const
{
if (!d || !d->priv)
- return 0;
+ return nullptr;
QTextBlockFormat b = blockFormat();
QTextObject *o = d->priv->objectForFormat(b);
@@ -2186,7 +2186,7 @@ QTextTable *QTextCursor::insertTable(int rows, int cols)
QTextTable *QTextCursor::insertTable(int rows, int cols, const QTextTableFormat &format)
{
if(!d || !d->priv || rows == 0 || cols == 0)
- return 0;
+ return nullptr;
int pos = d->position;
QTextTable *t = QTextTablePrivate::createTable(d->priv, d->position, rows, cols, format);
@@ -2206,7 +2206,7 @@ QTextTable *QTextCursor::insertTable(int rows, int cols, const QTextTableFormat
QTextTable *QTextCursor::currentTable() const
{
if(!d || !d->priv)
- return 0;
+ return nullptr;
QTextFrame *frame = d->priv->frameAt(d->position);
while (frame) {
@@ -2215,7 +2215,7 @@ QTextTable *QTextCursor::currentTable() const
return table;
frame = frame->parentFrame();
}
- return 0;
+ return nullptr;
}
/*!
@@ -2230,7 +2230,7 @@ QTextTable *QTextCursor::currentTable() const
QTextFrame *QTextCursor::insertFrame(const QTextFrameFormat &format)
{
if (!d || !d->priv)
- return 0;
+ return nullptr;
return d->priv->insertFrame(selectionStart(), selectionEnd(), format);
}
@@ -2243,7 +2243,7 @@ QTextFrame *QTextCursor::insertFrame(const QTextFrameFormat &format)
QTextFrame *QTextCursor::currentFrame() const
{
if(!d || !d->priv)
- return 0;
+ return nullptr;
return d->priv->frameAt(d->position);
}
@@ -2261,6 +2261,7 @@ void QTextCursor::insertFragment(const QTextDocumentFragment &fragment)
d->remove();
fragment.d->insert(*this);
d->priv->endEditBlock();
+ d->setX();
if (fragment.d && fragment.d->doc)
d->priv->mergeCachedResources(fragment.d->doc->docHandle());
@@ -2603,7 +2604,7 @@ QTextDocument *QTextCursor::document() const
{
if (d->priv)
return d->priv->document();
- return 0; // document went away
+ return nullptr; // document went away
}
QT_END_NAMESPACE
diff --git a/src/gui/text/qtextdocument.cpp b/src/gui/text/qtextdocument.cpp
index e94f635651..2d7f2bb844 100644
--- a/src/gui/text/qtextdocument.cpp
+++ b/src/gui/text/qtextdocument.cpp
@@ -347,7 +347,19 @@ QTextDocument *QTextDocument::clone(QObject *parent) const
{
Q_D(const QTextDocument);
QTextDocument *doc = new QTextDocument(parent);
- QTextCursor(doc).insertFragment(QTextDocumentFragment(this));
+ if (isEmpty()) {
+ const QTextCursor thisCursor(const_cast<QTextDocument *>(this));
+
+ const auto blockFormat = thisCursor.blockFormat();
+ if (blockFormat.isValid() && !blockFormat.isEmpty())
+ QTextCursor(doc).setBlockFormat(blockFormat);
+
+ const auto blockCharFormat = thisCursor.blockCharFormat();
+ if (blockCharFormat.isValid() && !blockCharFormat.isEmpty())
+ QTextCursor(doc).setBlockCharFormat(blockCharFormat);
+ } else {
+ QTextCursor(doc).insertFragment(QTextDocumentFragment(this));
+ }
doc->rootFrame()->setFrameFormat(rootFrame()->frameFormat());
QTextDocumentPrivate *priv = doc->d_func();
priv->title = d->title;
@@ -1666,7 +1678,7 @@ QTextCursor QTextDocument::find(const QRegularExpression &expr, const QTextCurso
*/
QTextObject *QTextDocument::createObject(const QTextFormat &f)
{
- QTextObject *obj = 0;
+ QTextObject *obj = nullptr;
if (f.isListFormat())
obj = new QTextList(this);
else if (f.isTableFormat())
@@ -2285,6 +2297,15 @@ QTextHtmlExporter::QTextHtmlExporter(const QTextDocument *_doc)
defaultCharFormat.clearProperty(QTextFormat::TextUnderlineStyle);
}
+static QStringList resolvedFontFamilies(const QTextCharFormat &format)
+{
+ QStringList fontFamilies = format.fontFamilies().toStringList();
+ const QString mainFontFamily = format.fontFamily();
+ if (!mainFontFamily.isEmpty() && !fontFamilies.contains(mainFontFamily))
+ fontFamilies.append(mainFontFamily);
+ return fontFamilies;
+}
+
/*!
Returns the document in HTML format. The conversion may not be
perfect, especially for complex documents, due to the limitations
@@ -2313,11 +2334,7 @@ QString QTextHtmlExporter::toHtml(const QByteArray &encoding, ExportMode mode)
if (mode == ExportEntireDocument) {
html += QLatin1String(" style=\"");
- QStringList fontFamilies = defaultCharFormat.fontFamilies().toStringList();
- if (!fontFamilies.isEmpty())
- emitFontFamily(fontFamilies);
- else
- emitFontFamily(defaultCharFormat.fontFamily());
+ emitFontFamily(resolvedFontFamilies(defaultCharFormat));
if (defaultCharFormat.hasProperty(QTextFormat::FontPointSize)) {
html += QLatin1String(" font-size:");
@@ -2379,14 +2396,10 @@ bool QTextHtmlExporter::emitCharFormatStyle(const QTextCharFormat &format)
bool attributesEmitted = false;
{
- const QStringList families = format.fontFamilies().toStringList();
- const QString family = format.fontFamily();
- if (!families.isEmpty() && families != defaultCharFormat.fontFamilies().toStringList()) {
+ const QStringList families = resolvedFontFamilies(format);
+ if (!families.isEmpty() && families != resolvedFontFamilies(defaultCharFormat)) {
emitFontFamily(families);
attributesEmitted = true;
- } else if (!family.isEmpty() && family != defaultCharFormat.fontFamily()) {
- emitFontFamily(family);
- attributesEmitted = true;
}
}
@@ -2408,7 +2421,7 @@ bool QTextHtmlExporter::emitCharFormatStyle(const QTextCharFormat &format)
sizeof("small") + sizeof("medium") + 1, // "x-large" )> compressed into "xx-large"
sizeof("small") + sizeof("medium"), // "xx-large" )
};
- const char *name = 0;
+ const char *name = nullptr;
const int idx = format.intProperty(QTextFormat::FontSizeAdjustment) + 1;
if (idx >= 0 && idx <= 4) {
name = sizeNameData + sizeNameOffsets[idx];
@@ -2649,20 +2662,6 @@ void QTextHtmlExporter::emitPageBreakPolicy(QTextFormat::PageBreakFlags policy)
html += QLatin1String(" page-break-after:always;");
}
-void QTextHtmlExporter::emitFontFamily(const QString &family)
-{
- html += QLatin1String(" font-family:");
-
- QLatin1String quote("\'");
- if (family.contains(QLatin1Char('\'')))
- quote = QLatin1String("&quot;");
-
- html += quote;
- html += family.toHtmlEscaped();
- html += quote;
- html += QLatin1Char(';');
-}
-
void QTextHtmlExporter::emitFontFamily(const QStringList &families)
{
html += QLatin1String(" font-family:");
@@ -3073,7 +3072,7 @@ void QTextDocumentPrivate::mergeCachedResources(const QTextDocumentPrivate *priv
if (!priv)
return;
- cachedResources.unite(priv->cachedResources);
+ cachedResources.insert(priv->cachedResources);
}
void QTextHtmlExporter::emitBackgroundAttribute(const QTextFormat &format)
@@ -3256,7 +3255,7 @@ void QTextHtmlExporter::emitFrame(const QTextFrame::Iterator &frameIt)
QTextFrame::Iterator next = frameIt;
++next;
if (next.atEnd()
- && frameIt.currentFrame() == 0
+ && frameIt.currentFrame() == nullptr
&& frameIt.parentFrame() != doc->rootFrame()
&& frameIt.currentBlock().begin().atEnd())
return;
diff --git a/src/gui/text/qtextdocument.h b/src/gui/text/qtextdocument.h
index 7d46238257..2459c78768 100644
--- a/src/gui/text/qtextdocument.h
+++ b/src/gui/text/qtextdocument.h
@@ -221,7 +221,9 @@ public:
bool isModified() const;
+#ifndef QT_NO_PRINTER
void print(QPagedPaintDevice *printer) const;
+#endif
enum ResourceType {
UnknownResource = 0,
diff --git a/src/gui/text/qtextdocument_p.cpp b/src/gui/text/qtextdocument_p.cpp
index a1b1c2e92b..524931ebde 100644
--- a/src/gui/text/qtextdocument_p.cpp
+++ b/src/gui/text/qtextdocument_p.cpp
@@ -185,7 +185,7 @@ QTextDocumentPrivate::QTextDocumentPrivate()
docChangeOldLength(0),
docChangeLength(0),
framesDirty(true),
- rtFrame(0),
+ rtFrame(nullptr),
initialBlockCharFormatIndex(-1) // set correctly later in init()
{
editBlock = 0;
@@ -195,7 +195,7 @@ QTextDocumentPrivate::QTextDocumentPrivate()
undoState = 0;
revision = -1; // init() inserts a block, bringing it to 0
- lout = 0;
+ lout = nullptr;
modified = false;
modifiedState = 0;
@@ -243,7 +243,7 @@ void QTextDocumentPrivate::clear()
curs->adjusted_anchor = 0;
}
- QList<QTextCursorPrivate *>oldCursors = cursors;
+ QSet<QTextCursorPrivate *> oldCursors = cursors;
QT_TRY{
cursors.clear();
@@ -272,7 +272,7 @@ void QTextDocumentPrivate::clear()
blocks.clear();
cachedResources.clear();
delete rtFrame;
- rtFrame = 0;
+ rtFrame = nullptr;
init();
cursors = oldCursors;
{
@@ -290,7 +290,7 @@ void QTextDocumentPrivate::clear()
QTextDocumentPrivate::~QTextDocumentPrivate()
{
for (QTextCursorPrivate *curs : qAsConst(cursors))
- curs->priv = 0;
+ curs->priv = nullptr;
cursors.clear();
undoState = 0;
undoEnabled = true;
@@ -643,7 +643,7 @@ void QTextDocumentPrivate::move(int pos, int to, int length, QTextUndoCommand::O
// qDebug("remove_block at %d", key);
Q_ASSERT(X->size_array[0] == 1 && isValidBlockSeparator(text.at(X->stringPosition)));
b = blocks.previous(b);
- B = 0;
+ B = nullptr;
c.command = blocks.size(b) == 1 ? QTextUndoCommand::BlockDeleted : QTextUndoCommand::BlockRemoved;
w = remove_block(key, &c.blockFormat, QTextUndoCommand::BlockAdded, op);
@@ -1437,7 +1437,7 @@ static QTextFrame *findChildFrame(QTextFrame *f, int pos)
else
return c;
}
- return 0;
+ return nullptr;
}
QTextFrame *QTextDocumentPrivate::rootFrame() const
@@ -1467,7 +1467,7 @@ void QTextDocumentPrivate::clearFrame(QTextFrame *f)
for (int i = 0; i < f->d_func()->childFrames.count(); ++i)
clearFrame(f->d_func()->childFrames.at(i));
f->d_func()->childFrames.clear();
- f->d_func()->parentFrame = 0;
+ f->d_func()->parentFrame = nullptr;
}
void QTextDocumentPrivate::scan_frames(int pos, int charsRemoved, int charsAdded)
@@ -1551,7 +1551,7 @@ QTextFrame *QTextDocumentPrivate::insertFrame(int start, int end, const QTextFra
Q_ASSERT(start <= end || end == -1);
if (start != end && frameAt(start) != frameAt(end))
- return 0;
+ return nullptr;
beginEditBlock();
@@ -1599,7 +1599,7 @@ void QTextDocumentPrivate::removeFrame(QTextFrame *frame)
QTextObject *QTextDocumentPrivate::objectForIndex(int objectIndex) const
{
if (objectIndex < 0)
- return 0;
+ return nullptr;
QTextObject *object = objects.value(objectIndex, 0);
if (!object) {
diff --git a/src/gui/text/qtextdocument_p.h b/src/gui/text/qtextdocument_p.h
index f4e7a25f22..ce8e905eb0 100644
--- a/src/gui/text/qtextdocument_p.h
+++ b/src/gui/text/qtextdocument_p.h
@@ -277,8 +277,8 @@ private:
public:
void documentChange(int from, int length);
- inline void addCursor(QTextCursorPrivate *c) { cursors.append(c); }
- inline void removeCursor(QTextCursorPrivate *c) { cursors.removeAll(c); }
+ inline void addCursor(QTextCursorPrivate *c) { cursors.insert(c); }
+ inline void removeCursor(QTextCursorPrivate *c) { cursors.remove(c); }
QTextFrame *frameAt(int pos) const;
QTextFrame *rootFrame() const;
@@ -330,7 +330,7 @@ private:
BlockMap blocks;
int initialBlockCharFormatIndex;
- QList<QTextCursorPrivate *> cursors;
+ QSet<QTextCursorPrivate *> cursors;
QMap<int, QTextObject *> objects;
QMap<QUrl, QVariant> resources;
QMap<QUrl, QVariant> cachedResources;
@@ -396,7 +396,6 @@ private:
void emitBorderStyle(QTextFrameFormat::BorderStyle style);
void emitPageBreakPolicy(QTextFormat::PageBreakFlags policy);
- void emitFontFamily(const QString &family);
void emitFontFamily(const QStringList &families);
void emitBackgroundAttribute(const QTextFormat &format);
diff --git a/src/gui/text/qtextdocumentfragment.cpp b/src/gui/text/qtextdocumentfragment.cpp
index 742c56382d..d7bc707491 100644
--- a/src/gui/text/qtextdocumentfragment.cpp
+++ b/src/gui/text/qtextdocumentfragment.cpp
@@ -277,7 +277,7 @@ void QTextDocumentFragmentPrivate::insert(QTextCursor &_cursor) const
\sa isEmpty()
*/
QTextDocumentFragment::QTextDocumentFragment()
- : d(0)
+ : d(nullptr)
{
}
@@ -287,7 +287,7 @@ QTextDocumentFragment::QTextDocumentFragment()
like the document's title.
*/
QTextDocumentFragment::QTextDocumentFragment(const QTextDocument *document)
- : d(0)
+ : d(nullptr)
{
if (!document)
return;
@@ -304,7 +304,7 @@ QTextDocumentFragment::QTextDocumentFragment(const QTextDocument *document)
\sa isEmpty(), QTextCursor::selection()
*/
QTextDocumentFragment::QTextDocumentFragment(const QTextCursor &cursor)
- : d(0)
+ : d(nullptr)
{
if (!cursor.hasSelection())
return;
@@ -678,7 +678,7 @@ QTextHtmlImporter::ProcessNodeResult QTextHtmlImporter::processSpecialNodes()
if (n->parent)
n = &at(n->parent);
else
- n = 0;
+ n = nullptr;
}
}
@@ -793,7 +793,7 @@ bool QTextHtmlImporter::closeTag()
bool blockTagClosed = false;
while (depth > endDepth) {
- Table *t = 0;
+ Table *t = nullptr;
if (!tables.isEmpty())
t = &tables.last();
@@ -816,7 +816,7 @@ bool QTextHtmlImporter::closeTag()
indent = t->lastIndent;
tables.resize(tables.size() - 1);
- t = 0;
+ t = nullptr;
if (tables.isEmpty()) {
cursor = doc->rootFrame()->lastCursorPosition();
@@ -1123,7 +1123,7 @@ QTextHtmlImporter::ProcessNodeResult QTextHtmlImporter::processBlockNode()
// for list items we may want to collapse with the bottom margin of the
// list.
- const QTextHtmlParserNode *parentNode = currentNode->parent ? &at(currentNode->parent) : 0;
+ const QTextHtmlParserNode *parentNode = currentNode->parent ? &at(currentNode->parent) : nullptr;
if ((currentNode->id == Html_li || currentNode->id == Html_dt || currentNode->id == Html_dd)
&& parentNode
&& (parentNode->isListStart() || parentNode->id == Html_dl)
@@ -1270,7 +1270,7 @@ void QTextHtmlImporter::appendBlock(const QTextBlockFormat &format, QTextCharFor
QTextDocumentFragment QTextDocumentFragment::fromHtml(const QString &html)
{
- return fromHtml(html, 0);
+ return fromHtml(html, nullptr);
}
/*!
diff --git a/src/gui/text/qtextdocumentlayout.cpp b/src/gui/text/qtextdocumentlayout.cpp
index ed23a4d8d9..e21a8d8d52 100644
--- a/src/gui/text/qtextdocumentlayout.cpp
+++ b/src/gui/text/qtextdocumentlayout.cpp
@@ -111,7 +111,7 @@ public:
QTextFrameData::QTextFrameData()
: maximumWidth(QFIXED_MAX),
- currentLayoutStruct(0), sizeDirty(true), layoutDirty(true)
+ currentLayoutStruct(nullptr), sizeDirty(true), layoutDirty(true)
{
}
@@ -571,7 +571,7 @@ public:
void setCellPosition(QTextTable *t, const QTextTableCell &cell, const QPointF &pos);
QRectF layoutTable(QTextTable *t, int layoutFrom, int layoutTo, QFixed parentY);
- void positionFloat(QTextFrame *frame, QTextLine *currentLine = 0);
+ void positionFloat(QTextFrame *frame, QTextLine *currentLine = nullptr);
// calls the next one
QRectF layoutFrame(QTextFrame *f, int layoutFrom, int layoutTo, QFixed parentY = 0);
@@ -1554,7 +1554,7 @@ static inline double prioritizedEdgeAnchorOffset(const QTextDocumentLayoutPrivat
competingCell = adjacentCell(table, cell, orthogonalEdge);
if (competingCell.isValid()) {
checkJoinedEdge(table, td, competingCell, edgeData.edge, edgeData, couldHaveContinuation,
- &maxCompetingEdgeData, 0);
+ &maxCompetingEdgeData, nullptr);
}
}
@@ -1946,7 +1946,7 @@ void QTextDocumentLayoutPrivate::drawFlow(const QPointF &offset, QPainter *paint
QTextFrame::Iterator it, const QList<QTextFrame *> &floats, QTextBlock *cursorBlockNeedingRepaint) const
{
Q_Q(const QTextDocumentLayout);
- const bool inRootFrame = (!it.atEnd() && it.parentFrame() && it.parentFrame()->parentFrame() == 0);
+ const bool inRootFrame = (!it.atEnd() && it.parentFrame() && it.parentFrame()->parentFrame() == nullptr);
QVector<QCheckPoint>::ConstIterator lastVisibleCheckPoint = checkPoints.end();
if (inRootFrame && context.clip.isValid()) {
@@ -1954,7 +1954,7 @@ void QTextDocumentLayoutPrivate::drawFlow(const QPointF &offset, QPainter *paint
}
QTextBlock previousBlock;
- QTextFrame *previousFrame = 0;
+ QTextFrame *previousFrame = nullptr;
for (; !it.atEnd(); ++it) {
QTextFrame *c = it.currentFrame();
@@ -2050,7 +2050,7 @@ void QTextDocumentLayoutPrivate::drawBlock(const QPointF &offset, QPainter *pain
QVector<QTextLayout::FormatRange> selections;
int blpos = bl.position();
int bllen = bl.length();
- const QTextCharFormat *selFormat = 0;
+ const QTextCharFormat *selFormat = nullptr;
for (int i = 0; i < context.selections.size(); ++i) {
const QAbstractTextDocumentLayout::Selection &range = context.selections.at(i);
const int selStart = range.cursor.selectionStart() - blpos;
@@ -2920,7 +2920,7 @@ QRectF QTextDocumentLayoutPrivate::layoutFrame(QTextFrame *f, int layoutFrom, in
QTextFrameFormat fformat = f->frameFormat();
QTextFrame *parent = f->parentFrame();
- const QTextFrameData *pd = parent ? data(parent) : 0;
+ const QTextFrameData *pd = parent ? data(parent) : nullptr;
const qreal maximumWidth = qMax(qreal(0), pd ? pd->contentsWidth.toReal() : document->pageSize().width());
QFixed width = QFixed::fromReal(fformat.width().value(maximumWidth));
@@ -2971,7 +2971,7 @@ QRectF QTextDocumentLayoutPrivate::layoutFrame(QTextFrame *f, int layoutFrom, in
}
QTextFrame *parent = f->parentFrame();
- const QTextFrameData *pd = parent ? data(parent) : 0;
+ const QTextFrameData *pd = parent ? data(parent) : nullptr;
// accumulate top and bottom margins
if (parent) {
@@ -3296,7 +3296,7 @@ void QTextDocumentLayoutPrivate::layoutFlow(QTextFrame::Iterator it, QTextLayout
const QFixed origMaximumWidth = layoutStruct->maximumWidth;
layoutStruct->maximumWidth = 0;
- const QTextBlockFormat *previousBlockFormatPtr = 0;
+ const QTextBlockFormat *previousBlockFormatPtr = nullptr;
if (lastIt.currentBlock().isValid())
previousBlockFormatPtr = &previousBlockFormat;
@@ -3405,7 +3405,7 @@ void QTextDocumentLayoutPrivate::layoutFlow(QTextFrame::Iterator it, QTextLayout
}
- fd->currentLayoutStruct = 0;
+ fd->currentLayoutStruct = nullptr;
}
static inline void getLineHeightParams(const QTextBlockFormat &blockFormat, const QTextLine &line, qreal scaling,
@@ -3865,7 +3865,7 @@ int QTextDocumentLayout::hitTest(const QPointF &point, Qt::HitTestAccuracy accur
d->ensureLayouted(QFixed::fromReal(point.y()));
QTextFrame *f = d->docPrivate->rootFrame();
int position = 0;
- QTextLayout *l = 0;
+ QTextLayout *l = nullptr;
QFixedPoint pointf;
pointf.x = QFixed::fromReal(point.x());
pointf.y = QFixed::fromReal(point.y());
@@ -3944,7 +3944,7 @@ void QTextDocumentLayout::positionInlineObject(QTextInlineObject item, int posIn
line = b.layout()->lineAt(b.layout()->lineCount()-1);
// qDebug() << "layoutObject: line.isValid" << line.isValid() << b.position() << b.length() <<
// frame->firstPosition() << frame->lastPosition();
- d->positionFloat(frame, line.isValid() ? &line : 0);
+ d->positionFloat(frame, line.isValid() ? &line : nullptr);
}
void QTextDocumentLayout::drawInlineObject(QPainter *p, const QRectF &rect, QTextInlineObject item,
diff --git a/src/gui/text/qtextdocumentwriter.cpp b/src/gui/text/qtextdocumentwriter.cpp
index 193d2c0dd3..0bafa5d9ff 100644
--- a/src/gui/text/qtextdocumentwriter.cpp
+++ b/src/gui/text/qtextdocumentwriter.cpp
@@ -107,7 +107,7 @@ public:
\internal
*/
QTextDocumentWriterPrivate::QTextDocumentWriterPrivate(QTextDocumentWriter *qq)
- : device(0),
+ : device(nullptr),
deleteDevice(false),
#if QT_CONFIG(textcodec)
codec(QTextCodec::codecForName("utf-8")),
@@ -320,7 +320,7 @@ bool QTextDocumentWriter::write(const QTextDocument *document)
*/
bool QTextDocumentWriter::write(const QTextDocumentFragment &fragment)
{
- if (fragment.d == 0)
+ if (fragment.d == nullptr)
return false; // invalid fragment.
QTextDocument *doc = fragment.d->doc;
if (doc)
@@ -337,7 +337,7 @@ bool QTextDocumentWriter::write(const QTextDocumentFragment &fragment)
#if QT_CONFIG(textcodec)
void QTextDocumentWriter::setCodec(QTextCodec *codec)
{
- if (codec == 0)
+ if (codec == nullptr)
codec = QTextCodec::codecForName("UTF-8");
Q_ASSERT(codec);
d->codec = codec;
diff --git a/src/gui/text/qtextengine.cpp b/src/gui/text/qtextengine.cpp
index 209433dac5..0024f070ea 100644
--- a/src/gui/text/qtextengine.cpp
+++ b/src/gui/text/qtextengine.cpp
@@ -72,7 +72,7 @@ public:
: m_string(string),
m_analysis(analysis),
m_items(items),
- m_splitter(0)
+ m_splitter(nullptr)
{
}
~Itemizer()
@@ -138,7 +138,7 @@ private:
if (!m_splitter)
m_splitter = new QTextBoundaryFinder(QTextBoundaryFinder::Word,
m_string.constData(), m_string.length(),
- /*buffer*/0, /*buffer size*/0);
+ /*buffer*/nullptr, /*buffer size*/0);
m_splitter->setPosition(start);
QScriptAnalysis itemAnalysis = m_analysis[start];
@@ -1680,8 +1680,8 @@ int QTextEngine::shapeTextWithHarfbuzzNG(const QScriptItem &si,
QGlyphLayout g = availableGlyphs(&si).mid(glyphs_shaped, num_glyphs);
ushort *log_clusters = logClusters(&si) + item_pos;
- hb_glyph_info_t *infos = hb_buffer_get_glyph_infos(buffer, 0);
- hb_glyph_position_t *positions = hb_buffer_get_glyph_positions(buffer, 0);
+ hb_glyph_info_t *infos = hb_buffer_get_glyph_infos(buffer, nullptr);
+ hb_glyph_position_t *positions = hb_buffer_get_glyph_positions(buffer, nullptr);
uint str_pos = 0;
uint last_cluster = ~0u;
uint last_glyph_pos = glyphs_shaped;
@@ -1720,7 +1720,7 @@ int QTextEngine::shapeTextWithHarfbuzzNG(const QScriptItem &si,
g.glyphs[i] = actualFontEngine->glyphIndex('-');
if (Q_LIKELY(g.glyphs[i] != 0)) {
QGlyphLayout tmp = g.mid(i, 1);
- actualFontEngine->recalcAdvances(&tmp, 0);
+ actualFontEngine->recalcAdvances(&tmp, { });
}
g.attributes[i].dontPrint = true;
}
@@ -1896,7 +1896,7 @@ int QTextEngine::shapeTextWithHarfbuzz(const QScriptItem &si, const ushort *stri
}
if (kerningEnabled && !shaper_item.kerning_applied)
- actualFontEngine->doKerning(&g, option.useDesignMetrics() ? QFontEngine::DesignMetrics : QFontEngine::ShaperFlags(0));
+ actualFontEngine->doKerning(&g, option.useDesignMetrics() ? QFontEngine::DesignMetrics : QFontEngine::ShaperFlags{});
if (engineIdx != 0) {
for (quint32 i = 0; i < shaper_item.num_glyphs; ++i)
@@ -1917,12 +1917,12 @@ void QTextEngine::init(QTextEngine *e)
e->visualMovement = false;
e->delayDecorations = false;
- e->layoutData = 0;
+ e->layoutData = nullptr;
e->minWidth = 0;
e->maxWidth = 0;
- e->specialData = 0;
+ e->specialData = nullptr;
e->stackEngine = false;
#ifndef QT_NO_RAWFONT
e->useRawFont = false;
@@ -1956,7 +1956,7 @@ const QCharAttributes *QTextEngine::attributes() const
itemize();
if (! ensureSpace(layoutData->string.length()))
- return NULL;
+ return nullptr;
QVarLengthArray<QUnicodeTools::ScriptItem> scriptItems(layoutData->items.size());
for (int i = 0; i < layoutData->items.size(); ++i) {
@@ -2148,7 +2148,7 @@ void QTextEngine::itemize() const
if (it == end || format != frag->format) {
if (s && position >= s->preeditPosition) {
position += s->preeditText.length();
- s = 0;
+ s = nullptr;
}
Q_ASSERT(position <= length);
QFont::Capitalization capitalization =
@@ -2443,8 +2443,8 @@ QTextEngine::FontEngineCache::FontEngineCache()
//input is common (and hard to cache at a higher level)
QFontEngine *QTextEngine::fontEngine(const QScriptItem &si, QFixed *ascent, QFixed *descent, QFixed *leading) const
{
- QFontEngine *engine = 0;
- QFontEngine *scaledEngine = 0;
+ QFontEngine *engine = nullptr;
+ QFontEngine *scaledEngine = nullptr;
int script = si.analysis.script;
QFont font = fnt;
@@ -2459,7 +2459,7 @@ QFontEngine *QTextEngine::fontEngine(const QScriptItem &si, QFixed *ascent, QFix
engine->ref.ref();
if (feCache.prevScaledFontEngine) {
releaseCachedFontEngine(feCache.prevScaledFontEngine);
- feCache.prevScaledFontEngine = 0;
+ feCache.prevScaledFontEngine = nullptr;
}
}
if (si.analysis.flags == QScriptAnalysis::SmallCaps) {
@@ -2538,7 +2538,7 @@ QFontEngine *QTextEngine::fontEngine(const QScriptItem &si, QFixed *ascent, QFix
feCache.prevScript = script;
feCache.prevPosition = -1;
feCache.prevLength = -1;
- feCache.prevScaledFontEngine = 0;
+ feCache.prevScaledFontEngine = nullptr;
}
}
@@ -2581,7 +2581,7 @@ static void set(QJustificationPoint *point, int type, const QGlyphLayout &glyph,
g.numGlyphs = 1;
g.glyphs = &kashidaGlyph;
g.advances = &point->kashidaWidth;
- fe->recalcAdvances(&g, 0);
+ fe->recalcAdvances(&g, { });
if (point->kashidaWidth == 0)
point->type = Justification_Prohibited;
@@ -2808,14 +2808,14 @@ void QScriptLine::setDefaultHeight(QTextEngine *eng)
QTextEngine::LayoutData::LayoutData()
{
- memory = 0;
+ memory = nullptr;
allocated = 0;
memory_on_stack = false;
used = 0;
hasBidi = false;
layoutState = LayoutEmpty;
haveCharAttributes = false;
- logClustersPtr = 0;
+ logClustersPtr = nullptr;
available_glyphs = 0;
}
@@ -2833,8 +2833,8 @@ QTextEngine::LayoutData::LayoutData(const QString &str, void **stack_memory, int
allocated = 0;
memory_on_stack = false;
- memory = 0;
- logClustersPtr = 0;
+ memory = nullptr;
+ logClustersPtr = nullptr;
} else {
memory_on_stack = true;
memory = stack_memory;
@@ -2855,7 +2855,7 @@ QTextEngine::LayoutData::~LayoutData()
{
if (!memory_on_stack)
free(memory);
- memory = 0;
+ memory = nullptr;
}
bool QTextEngine::LayoutData::reallocate(int totalGlyphs)
@@ -2879,7 +2879,7 @@ bool QTextEngine::LayoutData::reallocate(int totalGlyphs)
return false;
}
- void **newMem = (void **)::realloc(memory_on_stack ? 0 : memory, newAllocated*sizeof(void *));
+ void **newMem = (void **)::realloc(memory_on_stack ? nullptr : memory, newAllocated*sizeof(void *));
if (!newMem) {
layoutState = LayoutFailed;
return false;
@@ -2928,7 +2928,7 @@ void QTextEngine::freeMemory()
{
if (!stackEngine) {
delete layoutData;
- layoutData = 0;
+ layoutData = nullptr;
} else {
layoutData->used = 0;
layoutData->hasBidi = false;
@@ -3035,7 +3035,7 @@ void QTextEngine::setPreeditArea(int position, const QString &preeditText)
return;
if (specialData->formats.isEmpty()) {
delete specialData;
- specialData = 0;
+ specialData = nullptr;
} else {
specialData->preeditText = QString();
specialData->preeditPosition = -1;
@@ -3057,7 +3057,7 @@ void QTextEngine::setFormats(const QVector<QTextLayout::FormatRange> &formats)
return;
if (specialData->preeditText.isEmpty()) {
delete specialData;
- specialData = 0;
+ specialData = nullptr;
} else {
specialData->formats.clear();
}
@@ -3214,13 +3214,13 @@ QString QTextEngine::elidedText(Qt::TextElideMode mode, const QFixed &width, int
glyphs.advances = &ellipsisWidth;
if (glyph != 0) {
- engine->recalcAdvances(&glyphs, 0);
+ engine->recalcAdvances(&glyphs, { });
ellipsisText = ellipsisChar;
} else {
glyph = engine->glyphIndex('.');
if (glyph != 0) {
- engine->recalcAdvances(&glyphs, 0);
+ engine->recalcAdvances(&glyphs, { });
ellipsisWidth *= 3;
ellipsisText = QStringLiteral("...");
@@ -3895,12 +3895,7 @@ QStackTextEngine::QStackTextEngine(const QString &string, const QFont &f)
}
QTextItemInt::QTextItemInt(const QScriptItem &si, QFont *font, const QTextCharFormat &format)
- : justified(false),
- underlineStyle(QTextCharFormat::NoUnderline),
- charFormat(format),
- num_chars(0),
- chars(nullptr),
- logClusters(nullptr),
+ : charFormat(format),
f(font),
fontEngine(font->d->engineForScript(si.analysis.script))
{
@@ -3910,13 +3905,9 @@ QTextItemInt::QTextItemInt(const QScriptItem &si, QFont *font, const QTextCharFo
}
QTextItemInt::QTextItemInt(const QGlyphLayout &g, QFont *font, const QChar *chars_, int numChars, QFontEngine *fe, const QTextCharFormat &format)
- : flags(0),
- justified(false),
- underlineStyle(QTextCharFormat::NoUnderline),
- charFormat(format),
+ : charFormat(format),
num_chars(numChars),
chars(chars_),
- logClusters(nullptr),
f(font),
glyphs(g),
fontEngine(fe)
@@ -3928,7 +3919,7 @@ void QTextItemInt::initWithScriptItem(const QScriptItem &si)
{
// explicitly initialize flags so that initFontAttributes can be called
// multiple times on the same TextItem
- flags = 0;
+ flags = { };
if (si.analysis.bidiLevel %2)
flags |= QTextItem::RightToLeft;
ascent = si.ascent;
@@ -4013,7 +4004,7 @@ QTextLineItemIterator::QTextLineItemIterator(QTextEngine *_eng, int _lineNum, co
const QTextLayout::FormatRange *_selection)
: eng(_eng),
line(eng->lines[_lineNum]),
- si(0),
+ si(nullptr),
lineNum(_lineNum),
lineEnd(line.from + line.length),
firstItem(eng->findItem(line.from)),
diff --git a/src/gui/text/qtextengine_p.h b/src/gui/text/qtextengine_p.h
index 76b9757eba..f069951ce5 100644
--- a/src/gui/text/qtextengine_p.h
+++ b/src/gui/text/qtextengine_p.h
@@ -303,10 +303,7 @@ struct QScriptItem;
class QTextItemInt : public QTextItem
{
public:
- inline QTextItemInt()
- : justified(false), underlineStyle(QTextCharFormat::NoUnderline), num_chars(0), chars(nullptr),
- logClusters(nullptr), f(nullptr), fontEngine(nullptr)
- {}
+ inline QTextItemInt() = default;
QTextItemInt(const QScriptItem &si, QFont *font, const QTextCharFormat &format = QTextCharFormat());
QTextItemInt(const QGlyphLayout &g, QFont *font, const QChar *chars, int numChars, QFontEngine *fe,
const QTextCharFormat &format = QTextCharFormat());
@@ -321,16 +318,16 @@ public:
QFixed width;
RenderFlags flags;
- bool justified;
- QTextCharFormat::UnderlineStyle underlineStyle;
+ bool justified = false;
+ QTextCharFormat::UnderlineStyle underlineStyle = QTextCharFormat::NoUnderline;
const QTextCharFormat charFormat;
- int num_chars;
- const QChar *chars;
- const unsigned short *logClusters;
- const QFont *f;
+ int num_chars = 0;
+ const QChar *chars = nullptr;
+ const unsigned short *logClusters = nullptr;
+ const QFont *f = nullptr;
QGlyphLayout glyphs;
- QFontEngine *fontEngine;
+ QFontEngine *fontEngine = nullptr;
};
struct QScriptItem
diff --git a/src/gui/text/qtexthtmlparser.cpp b/src/gui/text/qtexthtmlparser.cpp
index 5d37982a8b..3b9f2d253e 100644
--- a/src/gui/text/qtexthtmlparser.cpp
+++ b/src/gui/text/qtexthtmlparser.cpp
@@ -463,7 +463,7 @@ static const QTextHtmlElement *lookupElementHelper(const QString &element)
const QTextHtmlElement *end = &elements[Html_NumElements];
const QTextHtmlElement *e = std::lower_bound(start, end, element);
if ((e == end) || (element < *e))
- return 0;
+ return nullptr;
return e;
}
@@ -519,7 +519,7 @@ void QTextHtmlParser::dumpHtml()
QTextHtmlParserNode *QTextHtmlParser::newNode(int parent)
{
QTextHtmlParserNode *lastNode = &nodes.last();
- QTextHtmlParserNode *newNode = 0;
+ QTextHtmlParserNode *newNode = nullptr;
bool reuseLastNode = true;
@@ -1209,8 +1209,11 @@ void QTextHtmlParserNode::applyCssDeclarations(const QVector<QCss::Declaration>
if (decl.styleValue() != QCss::BorderStyle_Unknown && decl.styleValue() != QCss::BorderStyle_Native)
borderStyle = static_cast<QTextFrameFormat::BorderStyle>(decl.styleValue() - 1);
break;
- case QCss::BorderWidth:
- tableBorder = extractor.lengthValue(decl);
+ case QCss::BorderWidth: {
+ int borders[4];
+ extractor.lengthValues(decl, borders);
+ tableBorder = borders[0];
+ }
break;
case QCss::BorderCollapse:
borderCollapse = decl.borderCollapseValue();
@@ -2120,7 +2123,7 @@ QVector<QCss::Declaration> QTextHtmlParser::declarationsForNode(int node) const
QCss::StyleSelector::NodePtr n;
n.id = node;
- const char *extraPseudo = 0;
+ const char *extraPseudo = nullptr;
if (nodes.at(node).id == Html_a && nodes.at(node).hasHref)
extraPseudo = "link";
// Ensure that our own style is taken into consideration
diff --git a/src/gui/text/qtextimagehandler.cpp b/src/gui/text/qtextimagehandler.cpp
index f7117bfe0a..14018f34da 100644
--- a/src/gui/text/qtextimagehandler.cpp
+++ b/src/gui/text/qtextimagehandler.cpp
@@ -246,7 +246,7 @@ QSizeF QTextImageHandler::intrinsicSize(QTextDocument *doc, int posInDocument, c
QImage QTextImageHandler::image(QTextDocument *doc, const QTextImageFormat &imageFormat)
{
- Q_ASSERT(doc != 0);
+ Q_ASSERT(doc != nullptr);
return getImage(doc, imageFormat);
}
diff --git a/src/gui/text/qtextlayout.cpp b/src/gui/text/qtextlayout.cpp
index a3e194f835..fc256d72f3 100644
--- a/src/gui/text/qtextlayout.cpp
+++ b/src/gui/text/qtextlayout.cpp
@@ -1649,7 +1649,7 @@ namespace {
struct LineBreakHelper
{
LineBreakHelper()
- : glyphCount(0), maxGlyphs(0), currentPosition(0), fontEngine(0), logClusters(0),
+ : glyphCount(0), maxGlyphs(0), currentPosition(0), fontEngine(nullptr), logClusters(nullptr),
manualWrap(false), whiteSpaceOrObject(true)
{
}
@@ -1705,7 +1705,7 @@ namespace {
inline void calculateRightBearing(QFontEngine *engine, glyph_t glyph)
{
qreal rb;
- engine->getGlyphBearings(glyph, 0, &rb);
+ engine->getGlyphBearings(glyph, nullptr, &rb);
// We only care about negative right bearings, so we limit the range
// of the bearing here so that we can assume it's negative in the rest
@@ -2212,7 +2212,7 @@ static QGlyphRun glyphRunWithInfo(QFontEngine *fontEngine,
int textPosition,
int textLength)
{
- Q_ASSERT(logClusters != 0);
+ Q_ASSERT(logClusters != nullptr);
QGlyphRun glyphRun;
@@ -2593,7 +2593,7 @@ void QTextLine::draw(QPainter *p, const QPointF &pos, const QTextLayout::FormatR
} else { // si.isTab
QFont f = eng->font(si);
QTextItemInt gf(si, &f, format);
- gf.chars = 0;
+ gf.chars = nullptr;
gf.num_chars = 0;
gf.width = iterator.itemWidth;
QPainterPrivate::get(p)->drawTextItem(QPointF(iterator.x.toReal(), y.toReal()), gf, eng);
diff --git a/src/gui/text/qtextmarkdownimporter.cpp b/src/gui/text/qtextmarkdownimporter.cpp
index 87ade1f973..88965046ce 100644
--- a/src/gui/text/qtextmarkdownimporter.cpp
+++ b/src/gui/text/qtextmarkdownimporter.cpp
@@ -160,6 +160,10 @@ void QTextMarkdownImporter::import(QTextDocument *doc, const QString &markdown)
m_paragraphMargin = m_doc->defaultFont().pointSize() * 2 / 3;
m_cursor = new QTextCursor(doc);
doc->clear();
+ if (doc->defaultFont().pointSize() != -1)
+ m_monoFont.setPointSize(doc->defaultFont().pointSize());
+ else
+ m_monoFont.setPixelSize(doc->defaultFont().pixelSize());
qCDebug(lcMD) << "default font" << doc->defaultFont() << "mono font" << m_monoFont;
QByteArray md = markdown.toUtf8();
md_parse(md.constData(), MD_SIZE(md.size()), &callbacks, this);
@@ -203,7 +207,12 @@ int QTextMarkdownImporter::cbEnterBlock(int blockType, void *det)
charFmt.setFontWeight(QFont::Bold);
blockFmt.setHeadingLevel(int(detail->level));
m_needsInsertBlock = false;
- m_cursor->insertBlock(blockFmt, charFmt);
+ if (m_doc->isEmpty()) {
+ m_cursor->setBlockFormat(blockFmt);
+ m_cursor->setCharFormat(charFmt);
+ } else {
+ m_cursor->insertBlock(blockFmt, charFmt);
+ }
qCDebug(lcMD, "H%d", detail->level);
} break;
case MD_BLOCK_LI: {
@@ -216,6 +225,10 @@ int QTextMarkdownImporter::cbEnterBlock(int blockType, void *det)
qCDebug(lcMD) << "LI";
} break;
case MD_BLOCK_UL: {
+ if (m_needsInsertList) // list nested in an empty list
+ m_listStack.push(m_cursor->insertList(m_listFormat));
+ else
+ m_needsInsertList = true;
MD_BLOCK_UL_DETAIL *detail = static_cast<MD_BLOCK_UL_DETAIL *>(det);
m_listFormat = QTextListFormat();
m_listFormat.setIndent(m_listStack.count() + 1);
@@ -230,17 +243,19 @@ int QTextMarkdownImporter::cbEnterBlock(int blockType, void *det)
m_listFormat.setStyle(QTextListFormat::ListDisc);
break;
}
- qCDebug(lcMD, "UL %c level %d", detail->mark, m_listStack.count());
- m_needsInsertList = true;
+ qCDebug(lcMD, "UL %c level %d", detail->mark, m_listStack.count() + 1);
} break;
case MD_BLOCK_OL: {
+ if (m_needsInsertList) // list nested in an empty list
+ m_listStack.push(m_cursor->insertList(m_listFormat));
+ else
+ m_needsInsertList = true;
MD_BLOCK_OL_DETAIL *detail = static_cast<MD_BLOCK_OL_DETAIL *>(det);
m_listFormat = QTextListFormat();
m_listFormat.setIndent(m_listStack.count() + 1);
m_listFormat.setNumberSuffix(QChar::fromLatin1(detail->mark_delimiter));
m_listFormat.setStyle(QTextListFormat::ListDecimal);
- qCDebug(lcMD, "OL xx%d level %d", detail->mark_delimiter, m_listStack.count());
- m_needsInsertList = true;
+ qCDebug(lcMD, "OL xx%d level %d", detail->mark_delimiter, m_listStack.count() + 1);
} break;
case MD_BLOCK_TD: {
MD_BLOCK_TD_DETAIL *detail = static_cast<MD_BLOCK_TD_DETAIL *>(det);
@@ -306,8 +321,14 @@ int QTextMarkdownImporter::cbLeaveBlock(int blockType, void *detail)
break;
case MD_BLOCK_UL:
case MD_BLOCK_OL:
- qCDebug(lcMD, "list at level %d ended", m_listStack.count());
- m_listStack.pop();
+ if (Q_UNLIKELY(m_needsInsertList))
+ m_listStack.push(m_cursor->createList(m_listFormat));
+ if (Q_UNLIKELY(m_listStack.isEmpty())) {
+ qCWarning(lcMD, "list ended unexpectedly");
+ } else {
+ qCDebug(lcMD, "list at level %d ended", m_listStack.count());
+ m_listStack.pop();
+ }
break;
case MD_BLOCK_TR: {
// https://github.com/mity/md4c/issues/29
@@ -576,7 +597,12 @@ void QTextMarkdownImporter::insertBlock()
blockFormat.setMarker(m_markerType);
if (!m_listStack.isEmpty())
blockFormat.setIndent(m_listStack.count());
- m_cursor->insertBlock(blockFormat, charFormat);
+ if (m_doc->isEmpty()) {
+ m_cursor->setBlockFormat(blockFormat);
+ m_cursor->setCharFormat(charFormat);
+ } else {
+ m_cursor->insertBlock(blockFormat, charFormat);
+ }
if (m_needsInsertList) {
m_listStack.push(m_cursor->createList(m_listFormat));
} else if (!m_listStack.isEmpty() && m_listItem) {
diff --git a/src/gui/text/qtextmarkdownwriter.cpp b/src/gui/text/qtextmarkdownwriter.cpp
index 764c64aead..c9a63920c3 100644
--- a/src/gui/text/qtextmarkdownwriter.cpp
+++ b/src/gui/text/qtextmarkdownwriter.cpp
@@ -173,7 +173,8 @@ void QTextMarkdownWriter::writeFrame(const QTextFrame *frame)
if (lastWasList)
m_stream << Newline;
}
- int endingCol = writeBlock(block, !table, table && tableRow == 0, nextIsDifferent);
+ int endingCol = writeBlock(block, !table, table && tableRow == 0,
+ nextIsDifferent && !block.textList());
m_doubleNewlineWritten = false;
if (table) {
QTextTableCell cell = table->cellAt(block.position());
diff --git a/src/gui/text/qtextobject.cpp b/src/gui/text/qtextobject.cpp
index b845889c3d..77dcae0dc8 100644
--- a/src/gui/text/qtextobject.cpp
+++ b/src/gui/text/qtextobject.cpp
@@ -596,7 +596,7 @@ void QTextFramePrivate::remove_me()
parentFrame->d_func()->childFrames.removeAt(index);
childFrames.clear();
- parentFrame = 0;
+ parentFrame = nullptr;
}
/*!
@@ -654,10 +654,10 @@ QTextFrame::iterator QTextFrame::end() const
*/
QTextFrame::iterator::iterator()
{
- f = 0;
+ f = nullptr;
b = 0;
e = 0;
- cf = 0;
+ cf = nullptr;
cb = 0;
}
@@ -669,7 +669,7 @@ QTextFrame::iterator::iterator(QTextFrame *frame, int block, int begin, int end)
f = frame;
b = begin;
e = end;
- cf = 0;
+ cf = nullptr;
cb = block;
}
@@ -739,7 +739,7 @@ QTextFrame::iterator &QTextFrame::iterator::operator++()
if (cf) {
int end = cf->lastPosition() + 1;
cb = map.findNode(end);
- cf = 0;
+ cf = nullptr;
} else if (cb) {
cb = map.next(cb);
if (cb == e)
@@ -777,7 +777,7 @@ QTextFrame::iterator &QTextFrame::iterator::operator--()
if (cf) {
int start = cf->firstPosition() - 1;
cb = map.findNode(start);
- cf = 0;
+ cf = nullptr;
} else {
if (cb == b)
goto end;
@@ -907,7 +907,7 @@ QTextBlockUserData::~QTextBlockUserData()
bool QTextBlock::isValid() const
{
- return p != 0 && p->blockMap().isValid(n);
+ return p != nullptr && p->blockMap().isValid(n);
}
/*!
@@ -1079,7 +1079,7 @@ bool QTextBlock::contains(int position) const
QTextLayout *QTextBlock::layout() const
{
if (!p || !n)
- return 0;
+ return nullptr;
const QTextBlockData *b = p->blockMap().fragment(n);
if (!b->layout)
diff --git a/src/gui/text/qtextodfwriter.cpp b/src/gui/text/qtextodfwriter.cpp
index 0e8666565f..408e3ec167 100644
--- a/src/gui/text/qtextodfwriter.cpp
+++ b/src/gui/text/qtextodfwriter.cpp
@@ -70,7 +70,7 @@ static QString pixelToPoint(qreal pixels)
// strategies
class QOutputStrategy {
public:
- QOutputStrategy() : contentStream(0), counter(1) { }
+ QOutputStrategy() : contentStream(nullptr), counter(1) { }
virtual ~QOutputStrategy() {}
virtual void addFile(const QString &fileName, const QString &mimeType, const QByteArray &bytes) = 0;
@@ -240,7 +240,7 @@ void QTextOdfWriter::writeFrame(QXmlStreamWriter &writer, const QTextFrame *fram
}
QTextFrame::iterator iterator = frame->begin();
- QTextFrame *child = 0;
+ QTextFrame *child = nullptr;
int tableRow = -1;
while (! iterator.atEnd()) {
@@ -437,7 +437,7 @@ static bool probeImageData(QIODevice *device, QImage *image, QString *mimeType,
void QTextOdfWriter::writeInlineCharacter(QXmlStreamWriter &writer, const QTextFragment &fragment) const
{
writer.writeStartElement(drawNS, QString::fromLatin1("frame"));
- if (m_strategy == 0) {
+ if (m_strategy == nullptr) {
// don't do anything.
}
else if (fragment.charFormat().isImageFormat()) {
@@ -997,8 +997,8 @@ QTextOdfWriter::QTextOdfWriter(const QTextDocument &document, QIODevice *device)
svgNS (QLatin1String("urn:oasis:names:tc:opendocument:xmlns:svg-compatible:1.0")),
m_document(&document),
m_device(device),
- m_strategy(0),
- m_codec(0),
+ m_strategy(nullptr),
+ m_codec(nullptr),
m_createArchive(true)
{
}
@@ -1093,7 +1093,7 @@ bool QTextOdfWriter::writeAll()
writer.writeEndElement(); // document-content
writer.writeEndDocument();
delete m_strategy;
- m_strategy = 0;
+ m_strategy = nullptr;
return true;
}
diff --git a/src/gui/text/qtextoption.cpp b/src/gui/text/qtextoption.cpp
index 2c2c05567f..2f195599f0 100644
--- a/src/gui/text/qtextoption.cpp
+++ b/src/gui/text/qtextoption.cpp
@@ -62,7 +62,7 @@ QTextOption::QTextOption()
unused2(0),
f(0),
tab(-1),
- d(0)
+ d(nullptr)
{
direction = Qt::LayoutDirectionAuto;
}
@@ -80,7 +80,7 @@ QTextOption::QTextOption(Qt::Alignment alignment)
unused2(0),
f(0),
tab(-1),
- d(0)
+ d(nullptr)
{
direction = QGuiApplication::layoutDirection();
}
@@ -107,7 +107,7 @@ QTextOption::QTextOption(const QTextOption &o)
unused2(o.unused2),
f(o.f),
tab(o.tab),
- d(0)
+ d(nullptr)
{
if (o.d)
d = new QTextOptionPrivate(*o.d);
@@ -124,7 +124,7 @@ QTextOption &QTextOption::operator=(const QTextOption &o)
if (this == &o)
return *this;
- QTextOptionPrivate* dNew = 0;
+ QTextOptionPrivate* dNew = nullptr;
if (o.d)
dNew = new QTextOptionPrivate(*o.d);
delete d;
diff --git a/src/gui/text/qzip.cpp b/src/gui/text/qzip.cpp
index fc7fbcac12..80c0f122e8 100644
--- a/src/gui/text/qzip.cpp
+++ b/src/gui/text/qzip.cpp
@@ -141,8 +141,8 @@ static int inflate(Bytef *dest, ulong *destLen, const Bytef *source, ulong sourc
if ((uLong)stream.avail_out != *destLen)
return Z_BUF_ERROR;
- stream.zalloc = (alloc_func)0;
- stream.zfree = (free_func)0;
+ stream.zalloc = (alloc_func)nullptr;
+ stream.zfree = (free_func)nullptr;
err = inflateInit2(&stream, -MAX_WBITS);
if (err != Z_OK)
@@ -172,9 +172,9 @@ static int deflate (Bytef *dest, ulong *destLen, const Bytef *source, ulong sour
stream.avail_out = (uInt)*destLen;
if ((uLong)stream.avail_out != *destLen) return Z_BUF_ERROR;
- stream.zalloc = (alloc_func)0;
- stream.zfree = (free_func)0;
- stream.opaque = (voidpf)0;
+ stream.zalloc = (alloc_func)nullptr;
+ stream.zfree = (free_func)nullptr;
+ stream.opaque = (voidpf)nullptr;
err = deflateInit2(&stream, Z_DEFAULT_COMPRESSION, Z_DEFLATED, -MAX_WBITS, 8, Z_DEFAULT_STRATEGY);
if (err != Z_OK) return err;
@@ -705,7 +705,7 @@ void QZipWriterPrivate::addEntry(EntryType type, const QString &fileName, const
}
// TODO add a check if data.length() > contents.length(). Then try to store the original and revert the compression method to be uncompressed
writeUInt(header.h.compressed_size, data.length());
- uint crc_32 = ::crc32(0, 0, 0);
+ uint crc_32 = ::crc32(0, nullptr, 0);
crc_32 = ::crc32(crc_32, (const uchar *)contents.constData(), contents.length());
writeUInt(header.h.crc_32, crc_32);
@@ -886,7 +886,7 @@ bool QZipReader::isReadable() const
bool QZipReader::exists() const
{
QFile *f = qobject_cast<QFile*> (d->device);
- if (f == 0)
+ if (f == nullptr)
return true;
return f->exists();
}
@@ -1178,7 +1178,7 @@ bool QZipWriter::isWritable() const
bool QZipWriter::exists() const
{
QFile *f = qobject_cast<QFile*> (d->device);
- if (f == 0)
+ if (f == nullptr)
return true;
return f->exists();
}