From 3019e0ff28bfd2d2a65b59501e582bb26356c6d7 Mon Sep 17 00:00:00 2001 From: wolfbeast Date: Wed, 19 Jul 2017 16:24:08 +0200 Subject: Split out the check for accent color luminance. --- widget/windows/nsLookAndFeel.cpp | 20 ++++++++++++-------- widget/windows/nsLookAndFeel.h | 8 ++++++++ 2 files changed, 20 insertions(+), 8 deletions(-) (limited to 'widget') diff --git a/widget/windows/nsLookAndFeel.cpp b/widget/windows/nsLookAndFeel.cpp index 63af653067..5c0358bd94 100644 --- a/widget/windows/nsLookAndFeel.cpp +++ b/widget/windows/nsLookAndFeel.cpp @@ -762,6 +762,16 @@ nsLookAndFeel::GetAccentColor(nscolor& aColor) return rv; } +bool +nsLookAndFeel::AccentColorIsDark(nscolor aColor) +{ + float luminance = (NS_GET_R(aColor) * 2 + + NS_GET_G(aColor) * 5 + + NS_GET_B(aColor)) / 8; + + return luminance <= 128; +} + /* static */ nsresult nsLookAndFeel::GetAccentColorText(nscolor& aColor) { @@ -775,15 +785,9 @@ nsLookAndFeel::GetAccentColorText(nscolor& aColor) // a background that has the accent color to have good contrast with // the accent color. Windows itself uses either white or black text // depending on how light or dark the accent color is. We do the same - // here based on the luminance of the accent color with a threshhold - // value and formula that are specified in the UWP guidelines. - // See: https://docs.microsoft.com/en-us/windows/uwp/style/color - - float luminance = (NS_GET_R(accentColor) * 2 + - NS_GET_G(accentColor) * 5 + - NS_GET_B(accentColor)) / 8; + // here based on the luminance of the accent color. - aColor = (luminance <= 128) ? NS_RGB(255, 255, 255) : NS_RGB(0, 0, 0); + aColor = AccentColorIsDark(accentColor) ? NS_RGB(255, 255, 255) : NS_RGB(0, 0, 0); return NS_OK; } diff --git a/widget/windows/nsLookAndFeel.h b/widget/windows/nsLookAndFeel.h index 29b6f4b780..6200541f5f 100644 --- a/widget/windows/nsLookAndFeel.h +++ b/widget/windows/nsLookAndFeel.h @@ -67,6 +67,14 @@ private: */ nsresult GetAccentColor(nscolor& aColor); + /** + * Determines whether the Windows accent color is considered dark + * with a threshhold value and formula that are specified in the + * UWP guidelines. + * See: https://docs.microsoft.com/en-us/windows/uwp/style/color + */ + bool AccentColorIsDark(nscolor aColor); + /** * If the Windows accent color from the Windows settings is set * to apply to the title bar, this computes the color that should -- cgit v1.2.3