disabled by default variant of XEP-0392

This commit is contained in:
Christian Schneppe 2018-08-26 15:02:40 +02:00
parent 251d6591df
commit 3e5c026f31
4 changed files with 36 additions and 0 deletions

View file

@ -64,6 +64,7 @@ dependencies {
implementation 'com.googlecode.ez-vcard:ez-vcard:0.10.3'
implementation 'in.championswimmer:SimpleFingerGestures_Android_Library:1.2'
implementation 'rocks.xmpp:xmpp-addr:0.8.0'
implementation 'org.hsluv:hsluv:0.2'
}
ext {

View file

@ -77,6 +77,8 @@ public final class Config {
public static final int CONNECT_DISCO_TIMEOUT = 30;
public static final int MINI_GRACE_PERIOD = 750;
public static final boolean XEP_0392 = false; //enables a variant of XEP-0392 that is based on HSLUV
public static final int FILE_SIZE = 1048576; // 1 MiB
public static final int AVATAR_SIZE = 480;

View file

@ -222,6 +222,9 @@ public class UIHelper {
}
public static int getColorForName(String name, boolean safe) {
if (Config.XEP_0392) {
return XEP0392Helper.rgbFromNick(name);
}
if (name == null || name.isEmpty()) {
return 0xFF202020;
}

View file

@ -0,0 +1,30 @@
package de.pixart.messenger.utils;
import android.graphics.Color;
import org.hsluv.HUSLColorConverter;
import java.security.MessageDigest;
public class XEP0392Helper {
private static double angle(String nickname) {
try {
MessageDigest sha1 = MessageDigest.getInstance("SHA-1");
byte[] digest = sha1.digest(nickname.getBytes("UTF-8"));
int angle = ((int) (digest[0]) & 0xff) + ((int) (digest[1]) & 0xff) * 256;
return angle / 65536.;
} catch (Exception e) {
return 0.0;
}
}
public static int rgbFromNick(String name) {
double[] hsluv = new double[3];
hsluv[0] = angle(name) * 360;
hsluv[1] = 100;
hsluv[2] = 50;
double[] rgb = HUSLColorConverter.hsluvToRgb(hsluv);
return Color.rgb((int) Math.round(rgb[0] * 255), (int) Math.round(rgb[1] * 255), (int) Math.round(rgb[2] * 255));
}
}