Deprecate QFontDatabase constructor

Move private methods into the private class.

Fixes: QTBUG-88114
Change-Id: I92fa52980ed5a0675eee310359d8875f614921e6
Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@qt.io>
This commit is contained in:
Volker Hilsheimer 2020-11-02 19:53:51 +01:00
parent a50f0f045d
commit 5ea1f40350
7 changed files with 47 additions and 54 deletions

View File

@ -135,16 +135,16 @@ bool QFontDef::exactMatch(const QFontDef &other) const
QString this_family, this_foundry, other_family, other_foundry; QString this_family, this_foundry, other_family, other_foundry;
for (int i = 0; i < origFamilies.size(); ++i) { for (int i = 0; i < origFamilies.size(); ++i) {
QFontDatabase::parseFontName(origFamilies.at(i), this_foundry, this_family); QFontDatabasePrivate::parseFontName(origFamilies.at(i), this_foundry, this_family);
QFontDatabase::parseFontName(otherFamilies.at(i), other_foundry, other_family); QFontDatabasePrivate::parseFontName(otherFamilies.at(i), other_foundry, other_family);
if (this_family != other_family || this_foundry != other_foundry) if (this_family != other_family || this_foundry != other_foundry)
return false; return false;
} }
// Check family only if families is not set // Check family only if families is not set
if (origFamilies.size() == 0) { if (origFamilies.size() == 0) {
QFontDatabase::parseFontName(family, this_foundry, this_family); QFontDatabasePrivate::parseFontName(family, this_foundry, this_family);
QFontDatabase::parseFontName(other.family, other_foundry, other_family); QFontDatabasePrivate::parseFontName(other.family, other_foundry, other_family);
} }
return (styleHint == other.styleHint return (styleHint == other.styleHint
@ -282,7 +282,7 @@ QFontEngine *QFontPrivate::engineForScript(int script) const
engineData = nullptr; engineData = nullptr;
} }
if (!engineData || !QT_FONT_ENGINE_FROM_DATA(engineData, script)) if (!engineData || !QT_FONT_ENGINE_FROM_DATA(engineData, script))
QFontDatabase::load(this, script); QFontDatabasePrivate::load(this, script);
return QT_FONT_ENGINE_FROM_DATA(engineData, script); return QT_FONT_ENGINE_FROM_DATA(engineData, script);
} }

View File

@ -1230,7 +1230,7 @@ QString QFontDatabase::styleString(const QFontInfo &fontInfo)
Use the styleString() to obtain a text version of a style. Use the styleString() to obtain a text version of a style.
The QFontDatabase class also supports some static functions, for The QFontDatabase class provides some helper functions, for
example, standardSizes(). You can retrieve the description of a example, standardSizes(). You can retrieve the description of a
writing system using writingSystemName(), and a sample of writing system using writingSystemName(), and a sample of
characters in a writing system with writingSystemSample(). characters in a writing system with writingSystemSample().
@ -1248,11 +1248,11 @@ QString QFontDatabase::styleString(const QFontInfo &fontInfo)
*/ */
/*! /*!
\fn QFontDatabase::QFontDatabase()
\obsolete Call the class methods as static functions instead.
Creates a font database object. Creates a font database object.
*/ */
QFontDatabase::QFontDatabase()
{
}
/*! /*!
\enum QFontDatabase::WritingSystem \enum QFontDatabase::WritingSystem
@ -1313,7 +1313,7 @@ QFontDatabase::QFontDatabase()
Initializes the font database if necessary and returns its Initializes the font database if necessary and returns its
pointer. Mutex lock must be held when calling this function. pointer. Mutex lock must be held when calling this function.
*/ */
QFontDatabasePrivate *QFontDatabase::ensureFontDatabase() QFontDatabasePrivate *QFontDatabasePrivate::ensureFontDatabase()
{ {
QFontDatabasePrivate *d = privateDb(); QFontDatabasePrivate *d = privateDb();
if (d->count == 0) { if (d->count == 0) {
@ -1335,7 +1335,7 @@ QFontDatabasePrivate *QFontDatabase::ensureFontDatabase()
QList<QFontDatabase::WritingSystem> QFontDatabase::writingSystems() QList<QFontDatabase::WritingSystem> QFontDatabase::writingSystems()
{ {
QMutexLocker locker(fontDatabaseMutex()); QMutexLocker locker(fontDatabaseMutex());
QFontDatabasePrivate *d = ensureFontDatabase(); QFontDatabasePrivate *d = QFontDatabasePrivate::ensureFontDatabase();
QT_PREPEND_NAMESPACE(load)(); QT_PREPEND_NAMESPACE(load)();
@ -1379,7 +1379,7 @@ QList<QFontDatabase::WritingSystem> QFontDatabase::writingSystems(const QString
parseFontName(family, foundryName, familyName); parseFontName(family, foundryName, familyName);
QMutexLocker locker(fontDatabaseMutex()); QMutexLocker locker(fontDatabaseMutex());
QFontDatabasePrivate *d = ensureFontDatabase(); QFontDatabasePrivate *d = QFontDatabasePrivate::ensureFontDatabase();
QT_PREPEND_NAMESPACE(load)(); QT_PREPEND_NAMESPACE(load)();
@ -1410,7 +1410,7 @@ QList<QFontDatabase::WritingSystem> QFontDatabase::writingSystems(const QString
QStringList QFontDatabase::families(WritingSystem writingSystem) QStringList QFontDatabase::families(WritingSystem writingSystem)
{ {
QMutexLocker locker(fontDatabaseMutex()); QMutexLocker locker(fontDatabaseMutex());
QFontDatabasePrivate *d = ensureFontDatabase(); QFontDatabasePrivate *d = QFontDatabasePrivate::ensureFontDatabase();
QT_PREPEND_NAMESPACE(load)(); QT_PREPEND_NAMESPACE(load)();
@ -1455,7 +1455,7 @@ QStringList QFontDatabase::styles(const QString &family)
parseFontName(family, foundryName, familyName); parseFontName(family, foundryName, familyName);
QMutexLocker locker(fontDatabaseMutex()); QMutexLocker locker(fontDatabaseMutex());
QFontDatabasePrivate *d = ensureFontDatabase(); QFontDatabasePrivate *d = QFontDatabasePrivate::ensureFontDatabase();
QT_PREPEND_NAMESPACE(load)(familyName); QT_PREPEND_NAMESPACE(load)(familyName);
@ -1500,7 +1500,7 @@ bool QFontDatabase::isFixedPitch(const QString &family,
parseFontName(family, foundryName, familyName); parseFontName(family, foundryName, familyName);
QMutexLocker locker(fontDatabaseMutex()); QMutexLocker locker(fontDatabaseMutex());
QFontDatabasePrivate *d = ensureFontDatabase(); QFontDatabasePrivate *d = QFontDatabasePrivate::ensureFontDatabase();
QT_PREPEND_NAMESPACE(load)(familyName); QT_PREPEND_NAMESPACE(load)(familyName);
@ -1526,7 +1526,7 @@ bool QFontDatabase::isBitmapScalable(const QString &family,
parseFontName(family, foundryName, familyName); parseFontName(family, foundryName, familyName);
QMutexLocker locker(fontDatabaseMutex()); QMutexLocker locker(fontDatabaseMutex());
QFontDatabasePrivate *d = ensureFontDatabase(); QFontDatabasePrivate *d = QFontDatabasePrivate::ensureFontDatabase();
QT_PREPEND_NAMESPACE(load)(familyName); QT_PREPEND_NAMESPACE(load)(familyName);
@ -1567,7 +1567,7 @@ bool QFontDatabase::isSmoothlyScalable(const QString &family, const QString &sty
parseFontName(family, foundryName, familyName); parseFontName(family, foundryName, familyName);
QMutexLocker locker(fontDatabaseMutex()); QMutexLocker locker(fontDatabaseMutex());
QFontDatabasePrivate *d = ensureFontDatabase(); QFontDatabasePrivate *d = QFontDatabasePrivate::ensureFontDatabase();
QT_PREPEND_NAMESPACE(load)(familyName); QT_PREPEND_NAMESPACE(load)(familyName);
@ -1633,7 +1633,7 @@ QList<int> QFontDatabase::pointSizes(const QString &family,
parseFontName(family, foundryName, familyName); parseFontName(family, foundryName, familyName);
QMutexLocker locker(fontDatabaseMutex()); QMutexLocker locker(fontDatabaseMutex());
QFontDatabasePrivate *d = ensureFontDatabase(); QFontDatabasePrivate *d = QFontDatabasePrivate::ensureFontDatabase();
QT_PREPEND_NAMESPACE(load)(familyName); QT_PREPEND_NAMESPACE(load)(familyName);
@ -1688,7 +1688,7 @@ QFont QFontDatabase::font(const QString &family, const QString &style,
parseFontName(family, foundryName, familyName); parseFontName(family, foundryName, familyName);
QMutexLocker locker(fontDatabaseMutex()); QMutexLocker locker(fontDatabaseMutex());
QFontDatabasePrivate *d = ensureFontDatabase(); QFontDatabasePrivate *d = QFontDatabasePrivate::ensureFontDatabase();
QT_PREPEND_NAMESPACE(load)(familyName); QT_PREPEND_NAMESPACE(load)(familyName);
@ -1737,7 +1737,7 @@ QList<int> QFontDatabase::smoothSizes(const QString &family,
parseFontName(family, foundryName, familyName); parseFontName(family, foundryName, familyName);
QMutexLocker locker(fontDatabaseMutex()); QMutexLocker locker(fontDatabaseMutex());
QFontDatabasePrivate *d = ensureFontDatabase(); QFontDatabasePrivate *d = QFontDatabasePrivate::ensureFontDatabase();
QT_PREPEND_NAMESPACE(load)(familyName); QT_PREPEND_NAMESPACE(load)(familyName);
@ -1803,7 +1803,7 @@ bool QFontDatabase::italic(const QString &family, const QString &style)
parseFontName(family, foundryName, familyName); parseFontName(family, foundryName, familyName);
QMutexLocker locker(fontDatabaseMutex()); QMutexLocker locker(fontDatabaseMutex());
QFontDatabasePrivate *d = ensureFontDatabase(); QFontDatabasePrivate *d = QFontDatabasePrivate::ensureFontDatabase();
QT_PREPEND_NAMESPACE(load)(familyName); QT_PREPEND_NAMESPACE(load)(familyName);
@ -1838,7 +1838,7 @@ bool QFontDatabase::bold(const QString &family,
parseFontName(family, foundryName, familyName); parseFontName(family, foundryName, familyName);
QMutexLocker locker(fontDatabaseMutex()); QMutexLocker locker(fontDatabaseMutex());
QFontDatabasePrivate *d = ensureFontDatabase(); QFontDatabasePrivate *d = QFontDatabasePrivate::ensureFontDatabase();
QT_PREPEND_NAMESPACE(load)(familyName); QT_PREPEND_NAMESPACE(load)(familyName);
@ -1875,7 +1875,7 @@ int QFontDatabase::weight(const QString &family,
parseFontName(family, foundryName, familyName); parseFontName(family, foundryName, familyName);
QMutexLocker locker(fontDatabaseMutex()); QMutexLocker locker(fontDatabaseMutex());
QFontDatabasePrivate *d = ensureFontDatabase(); QFontDatabasePrivate *d = QFontDatabasePrivate::ensureFontDatabase();
QT_PREPEND_NAMESPACE(load)(familyName); QT_PREPEND_NAMESPACE(load)(familyName);
@ -1903,7 +1903,7 @@ bool QFontDatabase::hasFamily(const QString &family)
{ {
QString parsedFamily, foundry; QString parsedFamily, foundry;
parseFontName(family, foundry, parsedFamily); parseFontName(family, foundry, parsedFamily);
const QString familyAlias = resolveFontFamilyAlias(parsedFamily); const QString familyAlias = QFontDatabasePrivate::resolveFontFamilyAlias(parsedFamily);
return families().contains(familyAlias, Qt::CaseInsensitive); return families().contains(familyAlias, Qt::CaseInsensitive);
} }
@ -2129,13 +2129,12 @@ QString QFontDatabase::writingSystemSample(WritingSystem writingSystem)
return writing_system_sample(writingSystem).toString(); return writing_system_sample(writingSystem).toString();
} }
void QFontDatabasePrivate::parseFontName(const QString &name, QString &foundry, QString &family)
void QFontDatabase::parseFontName(const QString &name, QString &foundry, QString &family)
{ {
QT_PREPEND_NAMESPACE(parseFontName)(name, foundry, family); QT_PREPEND_NAMESPACE(parseFontName)(name, foundry, family);
} }
void QFontDatabase::createDatabase() void QFontDatabasePrivate::createDatabase()
{ initializeDb(); } { initializeDb(); }
// used from qfontengine_ft.cpp // used from qfontengine_ft.cpp
@ -2356,7 +2355,7 @@ bool QFontDatabase::removeAllApplicationFonts()
/*! /*!
\internal \internal
*/ */
QFontEngine *QFontDatabase::findFont(const QFontDef &request, int script) QFontEngine *QFontDatabasePrivate::findFont(const QFontDef &request, int script)
{ {
QMutexLocker locker(fontDatabaseMutex()); QMutexLocker locker(fontDatabaseMutex());
@ -2463,7 +2462,7 @@ QFontEngine *QFontDatabase::findFont(const QFontDef &request, int script)
return engine; return engine;
} }
void QFontDatabase::load(const QFontPrivate *d, int script) void QFontDatabasePrivate::load(const QFontPrivate *d, int script)
{ {
QFontDef req = d->request; QFontDef req = d->request;
@ -2529,7 +2528,7 @@ void QFontDatabase::load(const QFontPrivate *d, int script)
for (; !fe && it != end; ++it) { for (; !fe && it != end; ++it) {
req.families = QStringList(*it); req.families = QStringList(*it);
fe = QFontDatabase::findFont(req, script); fe = QFontDatabasePrivate::findFont(req, script);
if (fe) { if (fe) {
if (fe->type() == QFontEngine::Box && !req.families.at(0).isEmpty()) { if (fe->type() == QFontEngine::Box && !req.families.at(0).isEmpty()) {
if (fe->ref.loadRelaxed() == 0) if (fe->ref.loadRelaxed() == 0)
@ -2559,7 +2558,7 @@ void QFontDatabase::load(const QFontPrivate *d, int script)
} }
} }
QString QFontDatabase::resolveFontFamilyAlias(const QString &family) QString QFontDatabasePrivate::resolveFontFamilyAlias(const QString &family)
{ {
return QGuiApplicationPrivate::platformIntegration()->fontDatabase()->resolveFontFamilyAlias(family); return QGuiApplicationPrivate::platformIntegration()->fontDatabase()->resolveFontFamilyAlias(family);
} }

View File

@ -51,8 +51,6 @@ QT_BEGIN_NAMESPACE
struct QFontDef; struct QFontDef;
class QFontEngine; class QFontEngine;
class QFontDatabasePrivate;
class Q_GUI_EXPORT QFontDatabase class Q_GUI_EXPORT QFontDatabase
{ {
Q_GADGET Q_GADGET
@ -111,7 +109,11 @@ public:
static QList<int> standardSizes(); static QList<int> standardSizes();
QFontDatabase(); #if QT_DEPRECATED_SINCE(6, 0)
QT_DEPRECATED_VERSION_X_6_0("Call the static functions instead") explicit QFontDatabase() = default;
#else
QFontDatabase() = delete;
#endif
static QList<WritingSystem> writingSystems(); static QList<WritingSystem> writingSystems();
static QList<WritingSystem> writingSystems(const QString &family); static QList<WritingSystem> writingSystems(const QString &family);
@ -147,21 +149,6 @@ public:
static bool removeAllApplicationFonts(); static bool removeAllApplicationFonts();
static QFont systemFont(SystemFont type); static QFont systemFont(SystemFont type);
private:
static void createDatabase();
static void parseFontName(const QString &name, QString &foundry, QString &family);
static QString resolveFontFamilyAlias(const QString &family);
static QFontEngine *findFont(const QFontDef &request, int script /* QChar::Script */);
static void load(const QFontPrivate *d, int script /* QChar::Script */);
static QFontDatabasePrivate *ensureFontDatabase();
friend struct QFontDef;
friend class QFontPrivate;
friend class QFontDialog;
friend class QFontDialogPrivate;
friend class QFontEngineMulti;
friend class QRawFont;
}; };
QT_END_NAMESPACE QT_END_NAMESPACE

View File

@ -263,6 +263,13 @@ public:
static QFontDatabasePrivate *instance(); static QFontDatabasePrivate *instance();
static void createDatabase();
static void parseFontName(const QString &name, QString &foundry, QString &family);
static QString resolveFontFamilyAlias(const QString &family);
static QFontEngine *findFont(const QFontDef &request, int script /* QChar::Script */);
static void load(const QFontPrivate *d, int script /* QChar::Script */);
static QFontDatabasePrivate *ensureFontDatabase();
void invalidate(); void invalidate();
}; };
Q_DECLARE_TYPEINFO(QFontDatabasePrivate::ApplicationFont, Q_MOVABLE_TYPE); Q_DECLARE_TYPEINFO(QFontDatabasePrivate::ApplicationFont, Q_MOVABLE_TYPE);

View File

@ -1779,7 +1779,7 @@ QFontEngine *QFontEngineMulti::loadEngine(int at)
// info about the actual script of the characters may have been discarded, // info about the actual script of the characters may have been discarded,
// so we do not check for writing system support, but instead just load // so we do not check for writing system support, but instead just load
// the family indiscriminately. // the family indiscriminately.
if (QFontEngine *engine = QFontDatabase::findFont(request, QChar::Script_Common)) { if (QFontEngine *engine = QFontDatabasePrivate::findFont(request, QChar::Script_Common)) {
engine->fontDef.weight = request.weight; engine->fontDef.weight = request.weight;
if (request.style > QFont::StyleNormal) if (request.style > QFont::StyleNormal)
engine->fontDef.style = request.style; engine->fontDef.style = request.style;

View File

@ -760,7 +760,7 @@ QRawFont QRawFont::fromFont(const QFont &font, QFontDatabase::WritingSystem writ
QFontDef request(multiEngine->fontDef); QFontDef request(multiEngine->fontDef);
request.styleStrategy |= QFont::NoFontMerging; request.styleStrategy |= QFont::NoFontMerging;
if (QFontEngine *engine = QFontDatabase::findFont(request, script)) { if (QFontEngine *engine = QFontDatabasePrivate::findFont(request, script)) {
if (request.weight > QFont::Normal) if (request.weight > QFont::Normal)
engine->fontDef.weight = request.weight; engine->fontDef.weight = request.weight;
if (request.style > QFont::StyleNormal) if (request.style > QFont::StyleNormal)

View File

@ -46,7 +46,6 @@
#include <qcheckbox.h> #include <qcheckbox.h>
#include <qcombobox.h> #include <qcombobox.h>
#include <qevent.h> #include <qevent.h>
#include <qfontdatabase.h>
#include <qgroupbox.h> #include <qgroupbox.h>
#include <qlabel.h> #include <qlabel.h>
#include <qlayout.h> #include <qlayout.h>
@ -58,6 +57,7 @@
#include <qlistview.h> #include <qlistview.h>
#include <qstringlistmodel.h> #include <qstringlistmodel.h>
#include <qvalidator.h> #include <qvalidator.h>
#include <private/qfontdatabase_p.h>
#include <private/qdialog_p.h> #include <private/qdialog_p.h>
#include <private/qfont_p.h> #include <private/qfont_p.h>
@ -512,12 +512,12 @@ void QFontDialogPrivate::updateFamilies()
QFont f; QFont f;
// ##### do the right thing for a list of family names in the font. // ##### do the right thing for a list of family names in the font.
QFontDatabase::parseFontName(family, foundryName1, familyName1); QFontDatabasePrivate::parseFontName(family, foundryName1, familyName1);
QStringList::const_iterator it = familyNames.constBegin(); QStringList::const_iterator it = familyNames.constBegin();
int i = 0; int i = 0;
for(; it != familyNames.constEnd(); ++it, ++i) { for(; it != familyNames.constEnd(); ++it, ++i) {
QFontDatabase::parseFontName(*it, foundryName2, familyName2); QFontDatabasePrivate::parseFontName(*it, foundryName2, familyName2);
//try to match... //try to match...
if (familyName1 == familyName2) { if (familyName1 == familyName2) {