feat: add RGB/HSV color conversion #995
Merged
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Description
This PR adds a new module for converting between RGB and HSV color representations.
Features Added:
hsv_to_rgb: Convert HSV (Hue, Saturation, Value) to RGB (Red, Green, Blue)rgb_to_hsv: Convert RGB to HSVRgbandHsvstructs for type-safe color representationType of Change
Testing
All tests pass:
cargo test rgb_hsv_conversionResults:
Algorithm Complexity
Implementation Details
HSV to RGB
RGB to HSV
Error Handling
Custom
ColorErrorenum with variants:InvalidHue(f64)- Hue not in [0, 360]InvalidSaturation(f64)- Saturation not in [0, 1]InvalidValue(f64)- Value not in [0, 1]Approximate Equality
The
Hsv::approximately_equalmethod uses tolerance values to compare floating-point HSV values:This accounts for rounding errors in round-trip conversions.
References
Checklist
Example Usage
Additional Notes