FineFindus / eyedropper

Pick and format colors
https://apps.gnome.org/Eyedropper
GNU General Public License v3.0
260 stars 26 forks source link

Colorblindness filters (possibly implemented as additional palettes) #146

Open Lehmanator opened 2 months ago

Lehmanator commented 2 months ago

Is your feature request related to a problem? Please describe.

As a colorblind dev, I often would like to know how a certain color would appear to people with normal color vision.

Designers and developers often want to know how their colors would look to colorblind users.

Describe the solution you'd like

Not entirely sure of a good UI for this feature, but I think a minimal effort implementation could reuse the existing palettes UI to display this information.

There are two implementations that could neatly integrate with the palettes UI:

so basically, the palettes UI could have either three or six additional rows.

This would help both:

Combined Rows

Rows would correspond to:

  1. Protanopia
  2. Deuteranopia
  3. Tritanopia

Each row would have to have an odd number of colors with a minimum of 5 colors for there row to have one-to-one correspondence with filter and its inverse.

Swatch colors would correspond to:

  1. Max severity
  2. Average severity
  3. User-selected color
  4. Average severity inverse
  5. Max severity inverse

If UI horizontal space permits, rows could show additional colorblindness strengths, with values chosen according to:

This heuristic would also apply if implemented with individual rows for colorblindness filters and filter inverses.

Individual Rows

Rows would correspond to:

  1. Protanopia
  2. Deuteranopia
  3. Tritanopia
  4. Protanopia (inverse)
  5. Deuteranopia (inverse)
  6. Tritanopia (inverse)

Swatch colors would correspond to:

  1. User-selected color
  2. Average severity
  3. Max severity

with additional values chosen following one of the heuristics described above.

Describe alternatives you've considered

There are probably a lot of other ways this feature could be implemented in UI, but my described behavior would probably be the easiest to implement and require the fewest UI changes. It also could integrate with the export functionality of the palettes feature.

Filter strength sliders or filter strength value settings would be desirable, but would require additional UI changes.

Even better would be to also implement screen/window/region selection like GNOME's screenshot functionality and apply a colorblindness filter. Obviously, that would require a lot more work and is potentially out-of-scope for this application. DaltonLens implements this behavior, but it would be nice to have a GNOME native UI for this sort of thing.

Additional context

Some resources: