Warning, file /system/kjournald/lib/colorizer.cpp was not indexed or was modified since last indexation (in which case cross-reference links may be missing, inaccurate or erroneous).

0001 /*
0002     SPDX-License-Identifier: LGPL-2.1-or-later OR MIT
0003     SPDX-FileCopyrightText: 2021 Andreas Cord-Landwehr <cordlandwehr@kde.org>
0004 */
0005 
0006 #include "colorizer.h"
0007 #include <QMap>
0008 #include <QRandomGenerator>
0009 
0010 struct LineColor {
0011     QColor foreground;
0012     QColor background;
0013 };
0014 
0015 QColor Colorizer::color(const QString &key, COLOR_TYPE type)
0016 {
0017     QColor color;
0018     static QRandomGenerator sFixedSeedGenerator{1}; // used fixed seed to ensure that colors for same units never change
0019     static QMap<QString, LineColor> sUnitToColorMap;
0020 
0021     auto needle = sUnitToColorMap.constFind(key);
0022     if (needle != sUnitToColorMap.cend()) {
0023         color = type == COLOR_TYPE::FOREGROUND ? needle->foreground : needle->background;
0024     } else {
0025         int hue = sFixedSeedGenerator.bounded(255);
0026         QColor foreground = QColor::fromHsl(hue, 220, 150);
0027         QColor background = QColor::fromHsl(hue, 200, 220);
0028         sUnitToColorMap[key] = {foreground, background};
0029         color = type == COLOR_TYPE::FOREGROUND ? foreground : background;
0030     }
0031     return color;
0032 }