Skip to content

Commit a64600c

Browse files
authored
Merge pull request #1830 from rexendevar/auto-theme-contrast
improve lyrics contrast with auto theme enabled
2 parents 2307f69 + c8c7dcc commit a64600c

File tree

1 file changed

+43
-14
lines changed

1 file changed

+43
-14
lines changed

src/tauon/t_modules/t_main.py

Lines changed: 43 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -19693,7 +19693,7 @@ def test_update(self, track_object: TrackClass) -> None:
1969319693

1969419694
def render(self, x: int, y: int, w: int, h: int, p: int) -> None:
1969519695
colour = self.colours.lyrics
19696-
bg = self.colours.playlist_panel_background
19696+
bg = self.colours.lyrics_panel_background
1969719697

1969819698
#colour = self.colours.grey(40)
1969919699
# if test_lumi(self.colours.lyrics_panel_background) < 0.5:
@@ -19853,7 +19853,7 @@ def render(self, index: int, x: int, y: int, side_panel: bool = False, w: int =
1985319853
y_center = y + (h/2) - (spacing)
1985419854
else:
1985519855
scroll_to = 0
19856-
bg = self.colours.playlist_panel_background
19856+
bg = self.colours.lyrics_panel_background
1985719857
font_size = 20
1985819858
spacing = round(10 * self.gui.scale)
1985919859
y_center = self.window_size[1]/2
@@ -21604,9 +21604,7 @@ def display(self, track: TrackClass, location: list[int], box: tuple[int, int],
2160421604
x_colours.append(ColourRGBA(colour[0], colour[1], colour[2], 255))
2160521605

2160621606
#logging.info(x_colours)
21607-
colours.playlist_panel_bg = colours.side_panel_background
2160821607
colours.playlist_box_background = colours.side_panel_background
21609-
colours.lyrics_panel_background = colours.side_panel_background
2161021608

2161121609
colours.playlist_panel_background = x_colours[0]
2161221610
if len(x_colours) > 1:
@@ -21622,6 +21620,7 @@ def display(self, track: TrackClass, location: list[int], box: tuple[int, int],
2162221620
colours.playlist_box_background = x_colours[4]
2162321621

2162421622
colours.queue_background = colours.side_panel_background
21623+
colours.lyrics_panel_background = colours.side_panel_background
2162521624
# Check artist text colour
2162621625
if contrast_ratio(colours.artist_text, colours.playlist_panel_background) < 1.9:
2162721626
black = ColourRGBA(25, 25, 25, 255)
@@ -21652,6 +21651,36 @@ def display(self, track: TrackClass, location: list[int], box: tuple[int, int],
2165221651
colours.title_text = choice
2165321652
colours.title_playing = choice
2165421653

21654+
# Check lyrics text colour
21655+
if contrast_ratio(colours.lyrics, colours.lyrics_panel_background) < 1.9:
21656+
black = ColourRGBA(60, 60, 60, 255)
21657+
white = ColourRGBA(180, 180, 180, 255)
21658+
21659+
con_b = contrast_ratio(black, colours.lyrics_panel_background)
21660+
con_w = contrast_ratio(white, colours.lyrics_panel_background)
21661+
21662+
choice = black
21663+
if con_w > con_b:
21664+
choice = white
21665+
21666+
colours.lyrics = choice
21667+
21668+
# try to pick high-contrast active lyric color
21669+
contrast = 0
21670+
for i in x_colours:
21671+
temp = contrast_ratio(i, colours.lyrics_panel_background)
21672+
if temp > contrast:
21673+
colours.active_lyric = i
21674+
contrast = temp
21675+
# if there isn't one, just do full black/white
21676+
if contrast_ratio(colours.active_lyric, colours.lyrics_panel_background) < 2.9 or contrast_ratio(colours.active_lyric, colours.lyrics) < 1.9:
21677+
lpb = colours.lyrics_panel_background
21678+
lr = colours.lyrics
21679+
tc = rgb_to_hls(lpb.r, lpb.g, lpb.b)
21680+
lc = rgb_to_hls(lr.r, lr.g, lr.b)
21681+
21682+
colours.active_lyric = hls_to_rgb( tc[0]+0.3, lc[1], max(tc[2]*1.5, 0.5) )
21683+
2165521684
if test_lumi(colours.side_panel_background) < 0.50 and not self.prefs.transparent_mode:
2165621685
colours.side_bar_line1 = ColourRGBA(25, 25, 25, 255)
2165721686
colours.side_bar_line2 = ColourRGBA(35, 35, 35, 255)
@@ -35799,8 +35828,8 @@ def render(self) -> None:
3579935828
elif self.window_size[1] / self.window_size[0] > 0.7:
3580035829
x = int(self.window_size[0] * 0.07)
3580135830

35802-
bbg = rgb_add_hls(self.colours.playlist_panel_background, 0, 0.05, 0) # [255, 255, 255, 18]
35803-
bfg = rgb_add_hls(self.colours.playlist_panel_background, 0, 0.09, 0) # [255, 255, 255, 30]
35831+
bbg = rgb_add_hls(self.colours.lyrics_panel_background, 0, 0.05, 0) # [255, 255, 255, 18]
35832+
bfg = rgb_add_hls(self.colours.lyrics_panel_background, 0, 0.09, 0) # [255, 255, 255, 30]
3580435833
bft = self.colours.grey(235)
3580535834
bbt = self.colours.grey(200)
3580635835

@@ -35819,12 +35848,12 @@ def render(self) -> None:
3581935848
bft = ColourRGBA(255, 255, 255, 250)
3582035849
bbt = ColourRGBA(255, 255, 255, 200)
3582135850

35822-
if test_lumi(self.colours.playlist_panel_background) < 0.7:
35851+
if test_lumi(self.colours.lyrics_panel_background) < 0.7:
3582335852
light_mode = True
3582435853
t1 = self.colours.grey(30)
3582535854
self.gui.vis_4_colour = ColourRGBA(40, 40, 40, 255)
3582635855

35827-
self.ddt.rect((0, self.gui.panelY, self.window_size[0], self.window_size[1] - self.gui.panelY), self.colours.playlist_panel_background)
35856+
self.ddt.rect((0, self.gui.panelY, self.window_size[0], self.window_size[1] - self.gui.panelY), self.colours.lyrics_panel_background)
3582835857

3582935858
if self.prefs.bg_showcase_only and self.prefs.art_bg:
3583035859
self.tauon.style_overlay.display()
@@ -37838,7 +37867,7 @@ def synced_render(self, index: int, x: int, y: int, hide_art: bool = False, w: i
3783837867
highlight = True
3783937868

3784037869
scroll_to = 0
37841-
bg = self.colours.playlist_panel_background
37870+
bg = self.colours.lyrics_panel_background
3784237871
spacing = round(10 * self.gui.scale)
3784337872
y_center = self.window_size[1]/2
3784437873

@@ -38205,7 +38234,7 @@ def is_int(number: str) -> bool:
3820538234

3820638235
def unsynced_render(self, x: int, y: float, box: float, hide_art: bool) -> None:
3820738236
colour = self.colours.lyrics
38208-
bg = self.colours.playlist_panel_background
38237+
bg = self.colours.lyrics_panel_background
3820938238

3821038239

3821138240
x += box + int(self.window_size[0] * 0.15) + 10 * self.gui.scale
@@ -38382,8 +38411,8 @@ def render(self) -> None:
3838238411
elif self.window_size[1] / self.window_size[0] > 0.7:
3838338412
x = int(self.window_size[0] * 0.07)
3838438413

38385-
bbg = rgb_add_hls(self.colours.playlist_panel_background, 0, 0.05, 0) # [255, 255, 255, 18]
38386-
bfg = rgb_add_hls(self.colours.playlist_panel_background, 0, 0.09, 0) # [255, 255, 255, 30]
38414+
bbg = rgb_add_hls(self.colours.lyrics_panel_background, 0, 0.05, 0) # [255, 255, 255, 18]
38415+
bfg = rgb_add_hls(self.colours.lyrics_panel_background, 0, 0.09, 0) # [255, 255, 255, 30]
3838738416
bft = self.colours.grey(235)
3838838417
bbt = self.colours.grey(200)
3838938418

@@ -38402,12 +38431,12 @@ def render(self) -> None:
3840238431
bft = ColourRGBA(255, 255, 255, 250)
3840338432
bbt = ColourRGBA(255, 255, 255, 200)
3840438433

38405-
if test_lumi(self.colours.playlist_panel_background) < 0.7:
38434+
if test_lumi(self.colours.lyrics_panel_background) < 0.7:
3840638435
light_mode = True
3840738436
t1 = self.colours.grey(30)
3840838437
self.gui.vis_4_colour = ColourRGBA(40, 40, 40, 255)
3840938438

38410-
self.ddt.rect((0, self.gui.panelY, self.window_size[0], self.window_size[1] - self.gui.panelY), self.colours.playlist_panel_background)
38439+
self.ddt.rect((0, self.gui.panelY, self.window_size[0], self.window_size[1] - self.gui.panelY), self.colours.lyrics_panel_background)
3841138440

3841238441
if self.prefs.bg_showcase_only and self.prefs.art_bg:
3841338442
self.tauon.style_overlay.display()

0 commit comments

Comments
 (0)