From 371453d96aef5d729f7697c1fd91194f37c3d394 Mon Sep 17 00:00:00 2001 From: RickyRister Date: Sun, 2 Feb 2025 19:59:27 -0800 Subject: [PATCH] move caching up a level --- .../src/client/ui/pixel_map_generator.cpp | 40 +++++++------------ 1 file changed, 15 insertions(+), 25 deletions(-) diff --git a/cockatrice/src/client/ui/pixel_map_generator.cpp b/cockatrice/src/client/ui/pixel_map_generator.cpp index 69920e76a..c82735f89 100644 --- a/cockatrice/src/client/ui/pixel_map_generator.cpp +++ b/cockatrice/src/client/ui/pixel_map_generator.cpp @@ -241,13 +241,20 @@ QIcon UserLevelPixmapGenerator::generateIcon(int minHeight, colorRight = QString::fromStdString(pawnColorsOverride.right_side()); } - // Has Color Override - if (colorLeft.has_value()) { - return generateIconWithColorOverride(minHeight, isBuddy, privLevel, colorLeft, colorRight); + QString key = QString::number(minHeight * 10000) + ":" + static_cast(userLevel) + ":" + + static_cast(isBuddy) + ":" + privLevel.toLower() + ":" + colorLeft.value_or("") + ":" + + colorRight.value_or(""); + + if (iconCache.contains(key)) { + return iconCache.value(key); } - // Has No Color Override - return generateIconDefault(minHeight, userLevel, isBuddy, privLevel); + QIcon icon = colorLeft.has_value() + ? generateIconWithColorOverride(minHeight, isBuddy, privLevel, colorLeft, colorRight) + : generateIconDefault(minHeight, userLevel, isBuddy, privLevel); + + iconCache.insert(key, icon); + return icon; } QIcon UserLevelPixmapGenerator::generateIconDefault(int height, @@ -255,11 +262,6 @@ QIcon UserLevelPixmapGenerator::generateIconDefault(int height, bool isBuddy, const QString &privLevel) { - QString key = QString::number(height * 10000) + ":" + (short)userLevel + ":" + (short)isBuddy + ":" + privLevel; - if (iconCache.contains(key)) { - return iconCache.value(key); - } - QString iconType; if (isBuddy) { iconType = "star"; @@ -289,10 +291,7 @@ QIcon UserLevelPixmapGenerator::generateIconDefault(int height, QString iconPath = QString("theme:usericons/%1_%2.svg").arg(iconType, arity); - QIcon icon = loadAndColorSvg(iconPath, colorLeft, colorRight, height); - - iconCache.insert(key, icon); - return icon; + return loadAndColorSvg(iconPath, colorLeft, colorRight, height); } QIcon UserLevelPixmapGenerator::generateIconWithColorOverride(int height, @@ -301,13 +300,6 @@ QIcon UserLevelPixmapGenerator::generateIconWithColorOverride(int height, std::optional colorLeft, std::optional colorRight) { - QString key = QString::number(height * 10000) + ":" + (short)isBuddy + ":" + privLevel.toLower() + ":" + - colorLeft.value_or("") + ":" + colorRight.value_or(""); - - if (iconCache.contains(key)) { - return iconCache.value(key); - } - QString iconType; if (isBuddy) { iconType = "star"; @@ -319,11 +311,9 @@ QIcon UserLevelPixmapGenerator::generateIconWithColorOverride(int height, QString arity = colorRight.has_value() ? "double" : "single"; - QString iconPath = QString("theme:usericons/%1_%2.svg").arg(iconType).arg(arity); + QString iconPath = QString("theme:usericons/%1_%2.svg").arg(iconType, arity); - QIcon icon = loadAndColorSvg(iconPath, colorLeft.value(), colorRight, height); - iconCache.insert(key, icon); - return icon; + return loadAndColorSvg(iconPath, colorLeft.value(), colorRight, height); } QMap UserLevelPixmapGenerator::iconCache;