Skip to content
Snippets Groups Projects
Verified Commit 0f2faff4 authored by Nicolas Werner's avatar Nicolas Werner
Browse files

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.
parent aea7461c
No related branches found
No related tags found
1 merge request!17Use a more random hash to generate user colors
Pipeline #2161 passed
This commit is part of merge request !17. Comments created here will be created in the context of that merge request.
......@@ -7,6 +7,7 @@
#include <QApplication>
#include <QBuffer>
#include <QComboBox>
#include <QCryptographicHash>
#include <QDesktopWidget>
#include <QGuiApplication>
#include <QImageReader>
......@@ -641,13 +642,9 @@ utils::linkColor()
uint32_t
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++) {
hash = input.at(i).digitValue() + ((hash << 5) - hash);
}
return hash;
return (h[0] << 24) ^ (h[1] << 16) ^ (h[2] << 8) ^ h[3];
}
QColor
......@@ -658,7 +655,10 @@ utils::generateContrastingHexColor(const QString &input, const QColor &backgroun
// Create a color for the input
auto hash = hashQString(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.
auto sat = 230;
auto lightness = 125;
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment