diff options
author | Minteck <contact@minteck.org> | 2022-10-10 20:51:39 +0200 |
---|---|---|
committer | Minteck <contact@minteck.org> | 2022-10-10 20:51:39 +0200 |
commit | 108525534c28013cfe1897c30e4565f9893f3766 (patch) | |
tree | dd3e5132971f96ab5f05e7f3f8f6dbbf379a19bd /includes/rainbow.inc | |
parent | 2162eaa06f7e4764eb3dcfe130ec2c711d0c62ab (diff) | |
download | pluralconnect-108525534c28013cfe1897c30e4565f9893f3766.tar.gz pluralconnect-108525534c28013cfe1897c30e4565f9893f3766.tar.bz2 pluralconnect-108525534c28013cfe1897c30e4565f9893f3766.zip |
Update
Diffstat (limited to 'includes/rainbow.inc')
-rw-r--r-- | includes/rainbow.inc | 57 |
1 files changed, 57 insertions, 0 deletions
diff --git a/includes/rainbow.inc b/includes/rainbow.inc new file mode 100644 index 0000000..470f288 --- /dev/null +++ b/includes/rainbow.inc @@ -0,0 +1,57 @@ +<?php + +require_once $_SERVER['DOCUMENT_ROOT'] . "/includes/functions.inc"; +require_once $_SERVER['DOCUMENT_ROOT'] . "/includes/bitset.inc"; +require_once $_SERVER['DOCUMENT_ROOT'] . "/includes/score.inc"; + +function rainbow(): array { + $members = scoreOrderGlobal(); + $data = []; + + foreach ($members as $member) { + $data[$member["name"]] = [ + "_data" => $member + ]; + + if (isset($member["color"])) { + $data[$member["name"]]["rgb"] = [ + hexdec(substr($member["color"], 0, 2)), + hexdec(substr($member["color"], 2, 2)), + hexdec(substr($member["color"], 4, 2)) + ]; + $data[$member["name"]]["hsl"] = rgbToHsl( + $data[$member["name"]]["rgb"][0], + $data[$member["name"]]["rgb"][1], + $data[$member["name"]]["rgb"][2] + ); + } else { + $data[$member["name"]]["rgb"] = [255, 255, 255]; + $data[$member["name"]]["hsl"] = rgbToHsl(255, 255, 255); + } + } + + return $data; +} + +function getMembersByColor(): array { + $members = rainbow(); + uasort($members, function ($a, $b) { + return $a['hsl'][0] - $b['hsl'][0]; + }); + $members = [ + ...array_filter($members, function ($i) { + return $i['hsl'][2] < 0.9 || $i['hsl'][1] > 0.2; + }), + ...array_filter($members, function ($i) { + return $i['hsl'][2] >= 0.9 || $i['hsl'][1] <= 0.2; + }) + ]; + + $sorted = []; + foreach ($members as $data) { + $data["_data"]["hue"] = $data["hsl"][0]; + $sorted[] = $data["_data"]; + } + + return $sorted; +}
\ No newline at end of file |