XYHASH
function getColorComponentRed(uint256 value)
internal
pure
returns (uint16)
{
return uint16((value >> 8) & 0xf);
}
function getColorComponentGreen(uint256 value)
internal
pure
returns (uint16)
{
return uint16((value >> 4) & 0xf);
}
function getColorComponentBlue(uint256 value)
internal
pure
returns (uint16)
{
return uint16(value & 0xf);
}
bytes16 private constant _HEX_SYMBOLS = "0123456789abcdef";
function getColorHexCode(uint256 value)
internal
pure
returns (string memory)
{
uint16 red = getColorComponentRed(value);
uint16 green = getColorComponentGreen(value);
uint16 blue = getColorComponentBlue(value);
bytes memory buffer = new bytes(7);
buffer[0] = "#";
buffer[1] = _HEX_SYMBOLS[red];
buffer[2] = _HEX_SYMBOLS[red];
buffer[3] = _HEX_SYMBOLS[green];
buffer[4] = _HEX_SYMBOLS[green];
buffer[5] = _HEX_SYMBOLS[blue];
buffer[6] = _HEX_SYMBOLS[blue];
return string(buffer);
}
function xyHash(string memory prefix, uint256 tokenId)
private
pure
returns (uint256)
{
return uint256(keccak256(abi.encodePacked(prefix, tokenId))) % 4096;
}
function getColor1(uint256 tokenId) public pure returns (uint256) {
return xyHash("1", tokenId);
}
function getColor2(uint256 tokenId) public pure returns (uint256) {
return xyHash("2", tokenId);
}
Last updated