Skip to content

Adds back in way to convert color to u8 array, implemented for the two RGB color types, also renames Color::linear to Color::to_linear as discussed on discord.#13739

Closed
gagnus wants to merge 5 commits intobevyengine:mainfrom
gagnus:main

Conversation

@gagnus
Copy link
Contributor

@gagnus gagnus commented Jun 7, 2024

Objective

  • One thing missing from the new Color implementation in 0.14 is the ability to easily convert to a u8 representation of the rgb color.

Solution

  • I have added to_u8_array and to_u8_array_no_alpha to a new trait called ColorToPacked to mirror the f32 conversions in ColorToComponents and implemented the new trait for Srgba and LinearRgba.
  • To go with those I also added matching from_u8... functions and converted a couple of cases that used ad-hoc implementations of that conversion to use these.
  • After discussion on Discord of the experience of using the API I renamed Color::linear to Color::to_linear, as without that it looks like a constructor (like Color::rgb).
  • I also added to_srgba which is the other commonly converted to type of color (for UI and 2D) to match to_linear.
  • Removed a redundant extra implementation of to_f32_array for LinearColor as it is also supplied in ColorToComponents (I'm surprised that's allowed?)

Testing

  • Ran all tests and manually tested.
  • Added to_and_from_u8 to linear_rgba::tests

Changelog

  • visible change is Color::linear becomes Color::to_linear.

gagnus added 2 commits June 7, 2024 14:01
…e other major option. Added to_u8_array, from_u8_array and _no_alpha versions of them to ColorToComponent, implemented for SRgba and LinearRgba and left unimplemented! for other color types which don't make sense. Removed redundant extra version of to_f32_array in LinearRgba and added use ColorToComponent where that was used in other code, some extra tidy up of usage to use these new functions.
@alice-i-cecile alice-i-cecile added this to the 0.14 milestone Jun 7, 2024
@github-actions
Copy link
Contributor

github-actions bot commented Jun 7, 2024

Welcome, new contributor!

Please make sure you've read our contributing guide and we look forward to reviewing your pull request shortly ✨

@gagnus gagnus changed the title Adds some limited u8 array conversion to the two RGB color types, also renames Color::linear to Color::to_linear as discussed on discord. Adds back in way to convert color to u8 array, implemented for the two RGB color types, also renames Color::linear to Color::to_linear as discussed on discord. Jun 7, 2024
@gagnus
Copy link
Contributor Author

gagnus commented Jun 7, 2024

Updated with a cargo fmt --all

…e other color types dont need unimplemented versions.
@alice-i-cecile alice-i-cecile added C-Usability A targeted quality-of-life change that makes Bevy easier to use X-Uncontroversial This work is generally agreed upon D-Straightforward Simple bug fixes and API improvements, docs, test and examples A-Color Color spaces and color math S-Needs-Review Needs reviewer attention (from anyone!) to move forward labels Jun 7, 2024
@gagnus gagnus deleted the branch bevyengine:main June 8, 2024 21:08
@gagnus gagnus closed this Jun 8, 2024
@gagnus gagnus deleted the main branch June 8, 2024 21:08
github-merge-queue bot pushed a commit that referenced this pull request Jun 10, 2024
…o RGB color types, also renames Color::linear to Color::to_linear. (#13759)

# Objective

One thing missing from the new Color implementation in 0.14 is the
ability to easily convert to a u8 representation of the rgb color.

(note this is a redo of PR #13739
as I needed to move the source branch

## Solution

I have added to_u8_array and to_u8_array_no_alpha to a new trait called
ColorToPacked to mirror the f32 conversions in ColorToComponents and
implemented the new trait for Srgba and LinearRgba.
To go with those I also added matching from_u8... functions and
converted a couple of cases that used ad-hoc implementations of that
conversion to use these.
After discussion on Discord of the experience of using the API I renamed
Color::linear to Color::to_linear, as without that it looks like a
constructor (like Color::rgb).
I also added to_srgba which is the other commonly converted to type of
color (for UI and 2D) to match to_linear.
Removed a redundant extra implementation of to_f32_array for LinearColor
as it is also supplied in ColorToComponents (I'm surprised that's
allowed?)

## Testing

Ran all tests and manually tested.
Added to_and_from_u8 to linear_rgba::tests

## Changelog

visible change is Color::linear becomes Color::to_linear.

---------

Co-authored-by: John Payne <20407779+johngpayne@users.noreply.github.com>
mockersf pushed a commit that referenced this pull request Jun 10, 2024
…o RGB color types, also renames Color::linear to Color::to_linear. (#13759)

# Objective

One thing missing from the new Color implementation in 0.14 is the
ability to easily convert to a u8 representation of the rgb color.

(note this is a redo of PR #13739
as I needed to move the source branch

## Solution

I have added to_u8_array and to_u8_array_no_alpha to a new trait called
ColorToPacked to mirror the f32 conversions in ColorToComponents and
implemented the new trait for Srgba and LinearRgba.
To go with those I also added matching from_u8... functions and
converted a couple of cases that used ad-hoc implementations of that
conversion to use these.
After discussion on Discord of the experience of using the API I renamed
Color::linear to Color::to_linear, as without that it looks like a
constructor (like Color::rgb).
I also added to_srgba which is the other commonly converted to type of
color (for UI and 2D) to match to_linear.
Removed a redundant extra implementation of to_f32_array for LinearColor
as it is also supplied in ColorToComponents (I'm surprised that's
allowed?)

## Testing

Ran all tests and manually tested.
Added to_and_from_u8 to linear_rgba::tests

## Changelog

visible change is Color::linear becomes Color::to_linear.

---------

Co-authored-by: John Payne <20407779+johngpayne@users.noreply.github.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

A-Color Color spaces and color math C-Usability A targeted quality-of-life change that makes Bevy easier to use D-Straightforward Simple bug fixes and API improvements, docs, test and examples S-Needs-Review Needs reviewer attention (from anyone!) to move forward X-Uncontroversial This work is generally agreed upon

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants