diff options
Diffstat (limited to 'src/gui/text/qfont_p.h')
-rw-r--r-- | src/gui/text/qfont_p.h | 71 |
1 files changed, 32 insertions, 39 deletions
diff --git a/src/gui/text/qfont_p.h b/src/gui/text/qfont_p.h index f285111c4a..b674e71103 100644 --- a/src/gui/text/qfont_p.h +++ b/src/gui/text/qfont_p.h @@ -1,41 +1,5 @@ -/**************************************************************************** -** -** Copyright (C) 2016 The Qt Company Ltd. -** Contact: https://www.qt.io/licensing/ -** -** This file is part of the QtGui module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see https://www.qt.io/terms-conditions. For further -** information use the contact form at https://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPL3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or (at your option) the GNU General -** Public license version 3 or any later version approved by the KDE Free -** Qt Foundation. The licenses are as published by the Free Software -** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 -** included in the packaging of this file. Please review the following -** information to ensure the GNU General Public License requirements will -** be met: https://www.gnu.org/licenses/gpl-2.0.html and -** https://www.gnu.org/licenses/gpl-3.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ +// Copyright (C) 2016 The Qt Company Ltd. +// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only #ifndef QFONT_P_H #define QFONT_P_H @@ -91,6 +55,7 @@ struct QFontDef QString styleName; QStringList fallBackFamilies; + QMap<QFont::Tag, float> variableAxisValues; qreal pointSize; qreal pixelSize; @@ -121,6 +86,7 @@ struct QFontDef && families == other.families && styleName == other.styleName && hintingPreference == other.hintingPreference + && variableAxisValues == other.variableAxisValues ; } inline bool operator<(const QFontDef &other) const @@ -139,6 +105,22 @@ struct QFontDef if (ignorePitch != other.ignorePitch) return ignorePitch < other.ignorePitch; if (fixedPitch != other.fixedPitch) return fixedPitch < other.fixedPitch; + if (variableAxisValues != other.variableAxisValues) { + if (variableAxisValues.size() != other.variableAxisValues.size()) + return variableAxisValues.size() < other.variableAxisValues.size(); + + { + auto it = variableAxisValues.constBegin(); + auto jt = other.variableAxisValues.constBegin(); + for (; it != variableAxisValues.constEnd(); ++it, ++jt) { + if (it.key() != jt.key()) + return jt.key() < it.key(); + if (it.value() != jt.value()) + return jt.value() < it.value(); + } + } + } + return false; } }; @@ -156,7 +138,9 @@ inline size_t qHash(const QFontDef &fd, size_t seed = 0) noexcept fd.fixedPitch, fd.families, fd.styleName, - fd.hintingPreference); + fd.hintingPreference, + fd.variableAxisValues.keys(), + fd.variableAxisValues.values()); } class QFontEngineData @@ -200,6 +184,7 @@ public: QFixed letterSpacing; QFixed wordSpacing; + QHash<QFont::Tag, quint32> features; mutable QFontPrivate *scFont; QFont smallCapsFont() const { return QFont(smallCapsFontPrivate()); } @@ -214,6 +199,13 @@ public: static void detachButKeepEngineData(QFont *font); + void setFeature(QFont::Tag tag, quint32 value); + void unsetFeature(QFont::Tag tag); + + void setVariableAxis(QFont::Tag tag, float value); + void unsetVariableAxis(QFont::Tag tag); + bool hasVariableAxis(QFont::Tag tag, float value) const; + private: QFontPrivate &operator=(const QFontPrivate &) { return *this; } }; @@ -295,6 +287,7 @@ private: uint total_cost, max_cost; uint current_timestamp; bool fast; + const bool autoClean; int timer_id; const int m_id; }; |