diff options
author | Yoann Lopes <yoann.lopes@nokia.com> | 2012-03-16 12:09:29 +0100 |
---|---|---|
committer | Qt by Nokia <qt-info@nokia.com> | 2012-03-19 18:28:52 +0100 |
commit | b271abeaf11c9fe0a05d8405f03f6a20218214ed (patch) | |
tree | 6f63cbcc6acab91e4d804c718c003c2e189d3a7d /src/quick/scenegraph/util/qsgdistancefieldutil.cpp | |
parent | 3bf01de85d943432d66b5fa8048275817fd20020 (diff) |
Use a single distance-field cache instance for all sizes of a given font.
Previously we had a different cache instance for each font size, but
they all shared the same textures and positions. Only the glyph metrics
were specific to each font size.
The metrics for each font sizes are now calculated by scaling the metrics
of the distance-field size (54px).
Change-Id: I0d9016990dedd93318893506afb1dba7a5249e2e
Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@nokia.com>
Diffstat (limited to 'src/quick/scenegraph/util/qsgdistancefieldutil.cpp')
-rw-r--r-- | src/quick/scenegraph/util/qsgdistancefieldutil.cpp | 10 |
1 files changed, 7 insertions, 3 deletions
diff --git a/src/quick/scenegraph/util/qsgdistancefieldutil.cpp b/src/quick/scenegraph/util/qsgdistancefieldutil.cpp index 76fdf97d80..ba19d51911 100644 --- a/src/quick/scenegraph/util/qsgdistancefieldutil.cpp +++ b/src/quick/scenegraph/util/qsgdistancefieldutil.cpp @@ -81,10 +81,14 @@ QSGDistanceFieldGlyphCacheManager::~QSGDistanceFieldGlyphCacheManager() QSGDistanceFieldGlyphCache *QSGDistanceFieldGlyphCacheManager::cache(const QRawFont &font) { - QRawFontPrivate *fontD = QRawFontPrivate::get(font); - QHash<QFontEngine *, QSGDistanceFieldGlyphCache *>::iterator cache = m_caches.find(fontD->fontEngine); + QString key = QString::fromLatin1("%1_%2_%3_%4") + .arg(font.familyName()) + .arg(font.styleName()) + .arg(font.weight()) + .arg(font.style()); + QHash<QString , QSGDistanceFieldGlyphCache *>::iterator cache = m_caches.find(key); if (cache == m_caches.end()) - cache = m_caches.insert(fontD->fontEngine, sgCtx->createDistanceFieldGlyphCache(font)); + cache = m_caches.insert(key, sgCtx->createDistanceFieldGlyphCache(font)); return cache.value(); } |