diff --git a/ui/theme/theme.go b/ui/theme/theme.go index 4e12f9d..c4041bd 100644 --- a/ui/theme/theme.go +++ b/ui/theme/theme.go @@ -22,6 +22,7 @@ const ( ColorNameListHeader fyne.ThemeColorName = "ListHeader" ColorNamePageBackground fyne.ThemeColorName = "PageBackground" ColorNamePageHeader fyne.ThemeColorName = "PageHeader" + ColorNameInactiveLyric fyne.ThemeColorName = "InactiveLyric" ) var ( @@ -105,6 +106,18 @@ func (m *MyTheme) Color(name fyne.ThemeColorName, _ fyne.ThemeVariant) color.Col defColors = m.defaultThemeFile.LightColors } switch name { + case ColorNameInactiveLyric: + // average the Foreground and Disabled colors + foreground := colorOrDefault(colors.Foreground, defColors.Foreground, theme.ColorNameForeground, variant) + disabled := colorOrDefault(colors.Disabled, defColors.Disabled, theme.ColorNameDisabled, variant) + pr, pg, pb, pa := foreground.RGBA() + dr, dg, db, da := disabled.RGBA() + + rAvg := uint8((pr/257 + dr/257) / 2) + gAvg := uint8((pg/257 + dg/257) / 2) + bAvg := uint8((pb/257 + db/257) / 2) + aAvg := uint8((pa/257 + da/257) / 2) + return color.RGBA{R: rAvg, G: gAvg, B: bAvg, A: aAvg} case ColorNameListHeader: return colorOrDefault(colors.ListHeader, defColors.ListHeader, name, variant) case ColorNamePageBackground: diff --git a/ui/widgets/lyricsviewer.go b/ui/widgets/lyricsviewer.go index 54adf50..04120dd 100644 --- a/ui/widgets/lyricsviewer.go +++ b/ui/widgets/lyricsviewer.go @@ -6,6 +6,7 @@ import ( "fyne.io/fyne/v2/widget" fynelyrics "github.com/dweymouth/fyne-lyrics" "github.com/dweymouth/supersonic/backend/mediaprovider" + "github.com/dweymouth/supersonic/ui/theme" ) type LyricsViewer struct { @@ -50,6 +51,7 @@ func (l *LyricsViewer) SetLyrics(lyrics *mediaprovider.Lyrics) { if l.viewer == nil { l.viewer = fynelyrics.NewLyricsViewer() l.viewer.ActiveLyricPosition = fynelyrics.ActiveLyricPositionTopThird + l.viewer.InactiveLyricColorName = theme.ColorNameInactiveLyric } lines := make([]string, len(lyrics.Lines)) for i, line := range lyrics.Lines {