Add environment variable QT_DISTANCEFIELD
DistanceField technique was not intended for rendering very large glyph. In some case need the qEnvironmentVariable. Change-Id: Ied11ed00f0c67bae3c92155e17721d8d2f224cca Task-number: QTBUG-51714 Reviewed-by: Aram So <aram.so@lge.com> Reviewed-by: Yoann Lopes <yoann.lopes@theqtcompany.com>
This commit is contained in:
parent
2ec7f2cfed
commit
a7fc1cef91
@ -45,6 +45,8 @@
|
|||||||
|
|
||||||
QT_BEGIN_NAMESPACE
|
QT_BEGIN_NAMESPACE
|
||||||
|
|
||||||
|
Q_LOGGING_CATEGORY(lcDistanceField, "qt.distanceField");
|
||||||
|
|
||||||
namespace
|
namespace
|
||||||
{
|
{
|
||||||
enum FillHDir
|
enum FillHDir
|
||||||
@ -732,8 +734,45 @@ static bool imageHasNarrowOutlines(const QImage &im)
|
|||||||
return minHThick == 1 || minVThick == 1;
|
return minHThick == 1 || minVThick == 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static int QT_DISTANCEFIELD_DEFAULT_BASEFONTSIZE = 54;
|
||||||
|
static int QT_DISTANCEFIELD_DEFAULT_TILESIZE = 64;
|
||||||
|
static int QT_DISTANCEFIELD_DEFAULT_SCALE = 16;
|
||||||
|
static int QT_DISTANCEFIELD_DEFAULT_RADIUS = 80;
|
||||||
|
static int QT_DISTANCEFIELD_DEFAULT_HIGHGLYPHCOUNT = 2000;
|
||||||
|
|
||||||
|
static void initialDistanceFieldFactor()
|
||||||
|
{
|
||||||
|
static bool initialized = false;
|
||||||
|
if (initialized)
|
||||||
|
return;
|
||||||
|
initialized = true;
|
||||||
|
|
||||||
|
if (qEnvironmentVariableIsSet("QT_DISTANCEFIELD_DEFAULT_BASEFONTSIZE")) {
|
||||||
|
QT_DISTANCEFIELD_DEFAULT_BASEFONTSIZE = qEnvironmentVariableIntValue("QT_DISTANCEFIELD_DEFAULT_BASEFONTSIZE");
|
||||||
|
qCDebug(lcDistanceField) << "set the QT_DISTANCEFIELD_DEFAULT_BASEFONTSIZE:" << QT_DISTANCEFIELD_DEFAULT_BASEFONTSIZE;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (qEnvironmentVariableIsSet("QT_DISTANCEFIELD_DEFAULT_TILESIZE")) {
|
||||||
|
QT_DISTANCEFIELD_DEFAULT_TILESIZE = qEnvironmentVariableIntValue("QT_DISTANCEFIELD_DEFAULT_TILESIZE");
|
||||||
|
qCDebug(lcDistanceField) << "set the QT_DISTANCEFIELD_DEFAULT_TILESIZE:" << QT_DISTANCEFIELD_DEFAULT_TILESIZE;
|
||||||
|
}
|
||||||
|
if (qEnvironmentVariableIsSet("QT_DISTANCEFIELD_DEFAULT_SCALE")) {
|
||||||
|
QT_DISTANCEFIELD_DEFAULT_SCALE = qEnvironmentVariableIntValue("QT_DISTANCEFIELD_DEFAULT_SCALE");
|
||||||
|
qCDebug(lcDistanceField) << "set the QT_DISTANCEFIELD_DEFAULT_SCALE:" << QT_DISTANCEFIELD_DEFAULT_SCALE;
|
||||||
|
}
|
||||||
|
if (qEnvironmentVariableIsSet("QT_DISTANCEFIELD_DEFAULT_RADIUS")) {
|
||||||
|
QT_DISTANCEFIELD_DEFAULT_RADIUS = qEnvironmentVariableIntValue("QT_DISTANCEFIELD_DEFAULT_RADIUS");
|
||||||
|
qDebug(lcDistanceField) << "set the QT_DISTANCEFIELD_DEFAULT_RADIUS:" << QT_DISTANCEFIELD_DEFAULT_RADIUS;
|
||||||
|
}
|
||||||
|
if (qEnvironmentVariableIsSet("QT_DISTANCEFIELD_DEFAULT_HIGHGLYPHCOUNT")) {
|
||||||
|
QT_DISTANCEFIELD_DEFAULT_HIGHGLYPHCOUNT = qEnvironmentVariableIntValue("QT_DISTANCEFIELD_DEFAULT_HIGHGLYPHCOUNT");
|
||||||
|
qCDebug(lcDistanceField) << "set the QT_DISTANCEFIELD_DEFAULT_HIGHGLYPHCOUNT:" << QT_DISTANCEFIELD_DEFAULT_HIGHGLYPHCOUNT;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
bool qt_fontHasNarrowOutlines(QFontEngine *fontEngine)
|
bool qt_fontHasNarrowOutlines(QFontEngine *fontEngine)
|
||||||
{
|
{
|
||||||
|
initialDistanceFieldFactor();
|
||||||
QFontEngine *fe = fontEngine->cloneWithSize(QT_DISTANCEFIELD_DEFAULT_BASEFONTSIZE);
|
QFontEngine *fe = fontEngine->cloneWithSize(QT_DISTANCEFIELD_DEFAULT_BASEFONTSIZE);
|
||||||
if (!fe)
|
if (!fe)
|
||||||
return false;
|
return false;
|
||||||
@ -753,6 +792,7 @@ bool qt_fontHasNarrowOutlines(QFontEngine *fontEngine)
|
|||||||
bool qt_fontHasNarrowOutlines(const QRawFont &f)
|
bool qt_fontHasNarrowOutlines(const QRawFont &f)
|
||||||
{
|
{
|
||||||
QRawFont font = f;
|
QRawFont font = f;
|
||||||
|
initialDistanceFieldFactor();
|
||||||
font.setPixelSize(QT_DISTANCEFIELD_DEFAULT_BASEFONTSIZE);
|
font.setPixelSize(QT_DISTANCEFIELD_DEFAULT_BASEFONTSIZE);
|
||||||
if (!font.isValid())
|
if (!font.isValid())
|
||||||
return false;
|
return false;
|
||||||
@ -765,6 +805,51 @@ bool qt_fontHasNarrowOutlines(const QRawFont &f)
|
|||||||
QRawFont::PixelAntialiasing));
|
QRawFont::PixelAntialiasing));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
int QT_DISTANCEFIELD_BASEFONTSIZE(bool narrowOutlineFont)
|
||||||
|
{
|
||||||
|
initialDistanceFieldFactor();
|
||||||
|
|
||||||
|
if (Q_UNLIKELY(narrowOutlineFont))
|
||||||
|
return QT_DISTANCEFIELD_DEFAULT_BASEFONTSIZE * 2;
|
||||||
|
else
|
||||||
|
return QT_DISTANCEFIELD_DEFAULT_BASEFONTSIZE;
|
||||||
|
}
|
||||||
|
|
||||||
|
int QT_DISTANCEFIELD_TILESIZE(bool narrowOutlineFont)
|
||||||
|
{
|
||||||
|
initialDistanceFieldFactor();
|
||||||
|
|
||||||
|
if (Q_UNLIKELY(narrowOutlineFont))
|
||||||
|
return QT_DISTANCEFIELD_DEFAULT_TILESIZE * 2;
|
||||||
|
else
|
||||||
|
return QT_DISTANCEFIELD_DEFAULT_TILESIZE;
|
||||||
|
}
|
||||||
|
|
||||||
|
int QT_DISTANCEFIELD_SCALE(bool narrowOutlineFont)
|
||||||
|
{
|
||||||
|
initialDistanceFieldFactor();
|
||||||
|
|
||||||
|
if (Q_UNLIKELY(narrowOutlineFont))
|
||||||
|
return QT_DISTANCEFIELD_DEFAULT_SCALE / 2;
|
||||||
|
else
|
||||||
|
return QT_DISTANCEFIELD_DEFAULT_SCALE;
|
||||||
|
}
|
||||||
|
|
||||||
|
int QT_DISTANCEFIELD_RADIUS(bool narrowOutlineFont)
|
||||||
|
{
|
||||||
|
initialDistanceFieldFactor();
|
||||||
|
|
||||||
|
if (Q_UNLIKELY(narrowOutlineFont))
|
||||||
|
return QT_DISTANCEFIELD_DEFAULT_RADIUS / 2;
|
||||||
|
else
|
||||||
|
return QT_DISTANCEFIELD_DEFAULT_RADIUS;
|
||||||
|
}
|
||||||
|
|
||||||
|
int QT_DISTANCEFIELD_HIGHGLYPHCOUNT()
|
||||||
|
{
|
||||||
|
initialDistanceFieldFactor();
|
||||||
|
return QT_DISTANCEFIELD_DEFAULT_HIGHGLYPHCOUNT;
|
||||||
|
}
|
||||||
|
|
||||||
QDistanceFieldData::QDistanceFieldData(const QDistanceFieldData &other)
|
QDistanceFieldData::QDistanceFieldData(const QDistanceFieldData &other)
|
||||||
: QSharedData(other)
|
: QSharedData(other)
|
||||||
|
@ -54,31 +54,20 @@
|
|||||||
#include <qrawfont.h>
|
#include <qrawfont.h>
|
||||||
#include <private/qfontengine_p.h>
|
#include <private/qfontengine_p.h>
|
||||||
#include <QtCore/qshareddata.h>
|
#include <QtCore/qshareddata.h>
|
||||||
|
#include <QtCore/qglobal.h>
|
||||||
|
#include <QLoggingCategory>
|
||||||
|
|
||||||
QT_BEGIN_NAMESPACE
|
QT_BEGIN_NAMESPACE
|
||||||
|
|
||||||
#define QT_DISTANCEFIELD_DEFAULT_BASEFONTSIZE 54
|
|
||||||
#define QT_DISTANCEFIELD_DEFAULT_TILESIZE 64
|
|
||||||
#define QT_DISTANCEFIELD_DEFAULT_SCALE 16
|
|
||||||
#define QT_DISTANCEFIELD_DEFAULT_RADIUS 80
|
|
||||||
#define QT_DISTANCEFIELD_HIGHGLYPHCOUNT 2000
|
|
||||||
|
|
||||||
#define QT_DISTANCEFIELD_BASEFONTSIZE(NarrowOutlineFont) \
|
|
||||||
(NarrowOutlineFont ? QT_DISTANCEFIELD_DEFAULT_BASEFONTSIZE * 2 : \
|
|
||||||
QT_DISTANCEFIELD_DEFAULT_BASEFONTSIZE)
|
|
||||||
#define QT_DISTANCEFIELD_TILESIZE(NarrowOutlineFont) \
|
|
||||||
(NarrowOutlineFont ? QT_DISTANCEFIELD_DEFAULT_TILESIZE * 2 : \
|
|
||||||
QT_DISTANCEFIELD_DEFAULT_TILESIZE)
|
|
||||||
#define QT_DISTANCEFIELD_SCALE(NarrowOutlineFont) \
|
|
||||||
(NarrowOutlineFont ? QT_DISTANCEFIELD_DEFAULT_SCALE / 2 : \
|
|
||||||
QT_DISTANCEFIELD_DEFAULT_SCALE)
|
|
||||||
#define QT_DISTANCEFIELD_RADIUS(NarrowOutlineFont) \
|
|
||||||
(NarrowOutlineFont ? QT_DISTANCEFIELD_DEFAULT_RADIUS / 2 : \
|
|
||||||
QT_DISTANCEFIELD_DEFAULT_RADIUS)
|
|
||||||
|
|
||||||
bool Q_GUI_EXPORT qt_fontHasNarrowOutlines(const QRawFont &f);
|
bool Q_GUI_EXPORT qt_fontHasNarrowOutlines(const QRawFont &f);
|
||||||
bool Q_GUI_EXPORT qt_fontHasNarrowOutlines(QFontEngine *fontEngine);
|
bool Q_GUI_EXPORT qt_fontHasNarrowOutlines(QFontEngine *fontEngine);
|
||||||
|
|
||||||
|
int Q_GUI_EXPORT QT_DISTANCEFIELD_BASEFONTSIZE(bool narrowOutlineFont);
|
||||||
|
int Q_GUI_EXPORT QT_DISTANCEFIELD_TILESIZE(bool narrowOutlineFont);
|
||||||
|
int Q_GUI_EXPORT QT_DISTANCEFIELD_SCALE(bool narrowOutlineFont);
|
||||||
|
int Q_GUI_EXPORT QT_DISTANCEFIELD_RADIUS(bool narrowOutlineFont);
|
||||||
|
int Q_GUI_EXPORT QT_DISTANCEFIELD_HIGHGLYPHCOUNT();
|
||||||
|
|
||||||
class Q_GUI_EXPORT QDistanceFieldData : public QSharedData
|
class Q_GUI_EXPORT QDistanceFieldData : public QSharedData
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
|
Loading…
x
Reference in New Issue
Block a user