Skip to content

Commit

Permalink
update ColormapRegistry
Browse files Browse the repository at this point in the history
  • Loading branch information
Sabnock01 committed Nov 4, 2023
1 parent 455dbb5 commit ef0b496
Show file tree
Hide file tree
Showing 2 changed files with 47 additions and 33 deletions.
8 changes: 5 additions & 3 deletions src/FlagRenderer.sol
Original file line number Diff line number Diff line change
Expand Up @@ -251,7 +251,9 @@ contract FlagRenderer {
image = string.concat(
image,
uint256(uint128(_tokenId)).toString(), // Rank
'</tspan></text><text class="b d i" x="187" y="453">Rank</text><path class="j" d="M'
' </tspan><tspan class="a d i" y="435">/ ',
uint256(_solves).toString(), // Solvers
'</tspan></text><text class="b d i" x="187" y="453">Rank</text><path class="j" d="M'
'289 429v4h3m3 0a6 6 0 1 1-12 0 6 6 0 0 1 12 0z"/><text class="a c h" x="303" y="43'
'3">',
_formatTime(_solveTime), // Solve time
Expand Down Expand Up @@ -294,7 +296,7 @@ contract FlagRenderer {
{
uint256 seed = uint256(keccak256(abi.encodePacked(_tokenId, _solveMetadata)));
// Select the colormap.
bytes32 colormapHash = [
bytes8 colormapHash = bytes8([
bytes32(0xfd29b65966772202ffdb08f653439b30c849f91409915665d99dbfa5e5dab938),
bytes32(0x850ce48e7291439b1e41d21fc3f75dddd97580a4ff94aa9ebdd2bcbd423ea1e8),
bytes32(0x4f5e8ea8862eff315c110b682ee070b459ba8983a7575c9a9c4c25007039109d),
Expand All @@ -313,7 +315,7 @@ contract FlagRenderer {
bytes32(0x87970b686eb726750ec792d49da173387a567764d691294d764e53439359c436),
bytes32(0xaa6277ab923279cf59d78b9b5b7fb5089c90802c353489571fca3c138056fb1b),
bytes32(0xdc1cecffc00e2f3196daaf53c27e53e6052a86dc875adb91607824d62469b2bf)
][seed % 18];
][seed % 18]);

// We start at the middle of the board.
uint256 index = 210;
Expand Down
72 changes: 42 additions & 30 deletions src/interfaces/IColormapRegistry.sol
Original file line number Diff line number Diff line change
Expand Up @@ -29,12 +29,12 @@ interface IColormapRegistry {
// -------------------------------------------------------------------------

/// @notice Emitted when a colormap already exists.
/// @param _colormapHash Hash of the colormap's definition.
error ColormapAlreadyExists(bytes32 _colormapHash);
/// @param _hash Hash of the colormap's definition.
error ColormapAlreadyExists(bytes8 _hash);

/// @notice Emitted when a colormap does not exist.
/// @param _colormapHash Hash of the colormap's definition.
error ColormapDoesNotExist(bytes32 _colormapHash);
/// @param _hash Hash of the colormap's definition.
error ColormapDoesNotExist(bytes8 _hash);

/// @notice Emitted when a segment data used to define a colormap does not
/// follow the representation outlined in {IColormapRegistry}.
Expand Down Expand Up @@ -69,33 +69,45 @@ interface IColormapRegistry {
/// @param _hash Hash of `_paletteGenerator`.
/// @param _paletteGenerator Instance of {IPaletteGenerator} for the
/// colormap.
event RegisterColormap(bytes32 _hash, IPaletteGenerator _paletteGenerator);
event RegisterColormap(bytes8 _hash, IPaletteGenerator _paletteGenerator);

/// @notice Emitted when a colormap is registered via segment data.
/// @param _hash Hash of `_segmentData`.
/// @param _segmentData Segment data defining the colormap.
event RegisterColormap(bytes32 _hash, SegmentData _segmentData);
event RegisterColormap(bytes8 _hash, SegmentData _segmentData);

// -------------------------------------------------------------------------
// Storage
// -------------------------------------------------------------------------

/// @param _colormapHash Hash of the colormap's definition (segment data).
/// @param _hash Hash of the colormap's definition (palette generator).
/// @return IPaletteGenerator Instance of {IPaletteGenerator} for the
/// colormap.
function paletteGenerators(bytes8 _hash) external view returns (IPaletteGenerator);

/// @param _hash Hash of the colormap's definition (segment data).
/// @return uint256 Segment data for red's color value along the colormap.
/// @return uint256 Segment data for green's color value along the colormap.
/// @return uint256 Segment data for blue's color value along the colormap.
function segments(bytes32 _colormapHash) external view returns (uint256, uint256, uint256);

/// @param _colormapHash Hash of the colormap's definition (palette
/// generator).
/// @return IPaletteGenerator Instance of {IPaletteGenerator} for the
/// colormap.
function paletteGenerators(bytes32 _colormapHash) external view returns (IPaletteGenerator);
function segments(bytes8 _hash) external view returns (uint256, uint256, uint256);

// -------------------------------------------------------------------------
// Actions
// -------------------------------------------------------------------------

/// @notice Batch register colormaps with palette generators.
/// @param _paletteGenerators Array of {IPaletteGenerator} instances for the
/// colormap.
function batchRegister(IPaletteGenerator[] memory _paletteGenerators) external;

/// @notice Batch register colormaps with segment data that will be read
/// via piece-wise linear interpolation.
/// @dev See {IColormapRegistry} for how the segment data should be
/// structured.
/// @param _segmentDataArray Array of segment data tuples defining the
/// colormap.
function batchRegister(SegmentData[] memory _segmentDataArray) external;

/// @notice Register a colormap with a palette generator.
/// @param _paletteGenerator Instance of {IPaletteGenerator} for the
/// colormap.
Expand All @@ -118,7 +130,7 @@ interface IColormapRegistry {
/// number in [0, 1]. Note that the function *will not* revert if
/// `_position` is an invalid input (i.e. greater than 1e18). This
/// responsibility is left to the implementation of {IPaletteGenerator}s.
/// @param _colormapHash Hash of the colormap's definition.
/// @param _hash Hash of the colormap's definition.
/// @param _position 18 decimal fixed-point number in [0, 1] representing
/// the position in the colormap (i.e. 0 being min, and 1 being max).
/// @return uint256 Intensity of red in that color at the position
Expand All @@ -127,15 +139,26 @@ interface IColormapRegistry {
/// `_position`.
/// @return uint256 Intensity of blue in that color at the position
/// `_position`.
function getValue(bytes32 _colormapHash, uint256 _position)
function getValue(bytes8 _hash, uint256 _position)
external
view
returns (uint256, uint256, uint256);

/// @notice Get the hexstring for a color in a colormap at some position.
/// @param _hash Hash of the colormap's definition.
/// @param _position Position in the colormap (i.e. 0 being min, and 255
/// being max).
/// @return string Hexstring excluding ``#'' (e.g. `007CFF`) of the color
/// at the position `_position`.
function getValueAsHexString(bytes8 _hash, uint8 _position)
external
view
returns (string memory);

/// @notice Get the red, green, and blue color values of a color in a
/// colormap at some position.
/// @dev Each color value will be returned as a `uint8` number in [0, 255].
/// @param _colormapHash Hash of the colormap's definition.
/// @param _hash Hash of the colormap's definition.
/// @param _position Position in the colormap (i.e. 0 being min, and 255
/// being max).
/// @return uint8 Intensity of red in that color at the position
Expand All @@ -144,19 +167,8 @@ interface IColormapRegistry {
/// `_position`.
/// @return uint8 Intensity of blue in that color at the position
/// `_position`.
function getValueAsUint8(bytes32 _colormapHash, uint8 _position)
function getValueAsUint8(bytes8 _hash, uint8 _position)
external
view
returns (uint8, uint8, uint8);

/// @notice Get the hexstring for a color in a colormap at some position.
/// @param _colormapHash Hash of the colormap's definition.
/// @param _position Position in the colormap (i.e. 0 being min, and 255
/// being max).
/// @return string Hexstring excluding ``#'' (e.g. `007CFF`) of the color
/// at the position `_position`.
function getValueAsHexString(bytes32 _colormapHash, uint8 _position)
external
view
returns (string memory);
}
}

0 comments on commit ef0b496

Please sign in to comment.