Use enlargeable types in to_luma functions. #1651
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.
This is an attempt to fix #1214, using the
Enlargeable
trait toselect a suitable type for the calculation in
rgb_to_luma
andbgr_to_luma
.Integer pixel types will use suitable integer pixel types for the
calculation, while floating point pixel types will use floating point
types.
This PR also provides the
Enlargeable
trait for allPrimitive
types (luckily,
Primitive
is not implemented for 128 bit numerictypes).
The
Color
implementation of all library-defined structs is thenrestricted to a subset of Primitive channel types. This is necessary to
allow its conversion operations to utilize the private
Enlargeable
.Notably however we relax the type itself to not utilize any trait
bound. It's a simple wrapper around an array now.
Rebase of #1215 which was auto-closed due to deleted base branch..