Add conversion matrix and Convert{Once}
traits
#406
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.
Adds a few basic tools for reusable converters, similar to what's discussed in #396:
convert::Matrix3
, which represents a 3x3 conversion matrix from one type to another. It may speed up multi-step conversions that can be simplified as a single matrix.convert::Convert
andconvert::ConvertOnce
traits for abstracting over types that can convert other types, similar toFn
andFnOnce
in relation to each other. They are implemented byconvert::Matrix3
andcam16::BakedParameters
.Rgb::matrix_from_xyz
,Xyz::matrix_from_rgb
,Xyz::matrix_from_lms
andLms::matrix_from_xyz
as initial building blocks for composing conversion matrices.Some old matrix code has also been cleaned up or replaced. The
matrix
module is not considered public, so its content should not be relied upon.