mirror of
https://github.com/Nheko-Reborn/nheko.git
synced 2024-11-29 14:18:49 +03:00
Use a more random hash to generate user colors
Fixes an issue where most uses just had their color determined by their username length and distributes the colors a bit more evenly.
This commit is contained in:
parent
aea7461cba
commit
0f2faff4e7
1 changed files with 7 additions and 7 deletions
|
@ -7,6 +7,7 @@
|
||||||
#include <QApplication>
|
#include <QApplication>
|
||||||
#include <QBuffer>
|
#include <QBuffer>
|
||||||
#include <QComboBox>
|
#include <QComboBox>
|
||||||
|
#include <QCryptographicHash>
|
||||||
#include <QDesktopWidget>
|
#include <QDesktopWidget>
|
||||||
#include <QGuiApplication>
|
#include <QGuiApplication>
|
||||||
#include <QImageReader>
|
#include <QImageReader>
|
||||||
|
@ -641,13 +642,9 @@ utils::linkColor()
|
||||||
uint32_t
|
uint32_t
|
||||||
utils::hashQString(const QString &input)
|
utils::hashQString(const QString &input)
|
||||||
{
|
{
|
||||||
uint32_t hash = 0;
|
auto h = QCryptographicHash::hash(input.toUtf8(), QCryptographicHash::Sha1);
|
||||||
|
|
||||||
for (int i = 0; i < input.length(); i++) {
|
return (h[0] << 24) ^ (h[1] << 16) ^ (h[2] << 8) ^ h[3];
|
||||||
hash = input.at(i).digitValue() + ((hash << 5) - hash);
|
|
||||||
}
|
|
||||||
|
|
||||||
return hash;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
QColor
|
QColor
|
||||||
|
@ -658,7 +655,10 @@ utils::generateContrastingHexColor(const QString &input, const QColor &backgroun
|
||||||
// Create a color for the input
|
// Create a color for the input
|
||||||
auto hash = hashQString(input);
|
auto hash = hashQString(input);
|
||||||
// create a hue value based on the hash of the input.
|
// create a hue value based on the hash of the input.
|
||||||
auto userHue = static_cast<int>(hash % 360);
|
// Adapted to make Nico blue
|
||||||
|
auto userHue =
|
||||||
|
static_cast<int>(static_cast<double>(hash - static_cast<uint32_t>(0x60'00'00'00)) /
|
||||||
|
std::numeric_limits<uint32_t>::max() * 360.);
|
||||||
// start with moderate saturation and lightness values.
|
// start with moderate saturation and lightness values.
|
||||||
auto sat = 230;
|
auto sat = 230;
|
||||||
auto lightness = 125;
|
auto lightness = 125;
|
||||||
|
|
Loading…
Reference in a new issue