From 10a09378617fe284ce1be641dc191aa02dc49a88 Mon Sep 17 00:00:00 2001 From: Ander <9and3r@gmail.com> Date: Tue, 13 Jan 2015 23:34:08 +0100 Subject: [PATCH] Dynamic background fixes and avoid too bright colors --- mopidy_touchscreen/dynamic_background.py | 53 +++++++++++++++++------- mopidy_touchscreen/main_screen.py | 9 +--- 2 files changed, 41 insertions(+), 21 deletions(-) diff --git a/mopidy_touchscreen/dynamic_background.py b/mopidy_touchscreen/dynamic_background.py index 253246a..6322175 100644 --- a/mopidy_touchscreen/dynamic_background.py +++ b/mopidy_touchscreen/dynamic_background.py @@ -1,4 +1,5 @@ import random +import logging change_speed = 2 @@ -7,26 +8,50 @@ class DynamicBackground(): def __init__(self): self.current = get_valid_color() self.target = get_valid_color() + self.auto_mode = True + self.target_current_same = False def draw_background(self, surface): - same = True - for x in range(0, 3): - if abs(self.current[x]-self.target[x]) < change_speed: - self.current[x] = self.target[x] - else: - if self.current[x] > self.target[x]: - self.current[x] -= change_speed - elif self.current[x] < self.target[x]: - self.current[x] += change_speed - if self.current != self.target: - same = False - #if same: - # self.target = get_valid_color() + if not self.target_current_same: + for x in range(0, 3): + if abs(self.current[x]-self.target[x]) < change_speed: + self.current[x] = self.target[x] + self.target_current_same = True + else: + self.target_current_same = False + if self.current[x] > self.target[x]: + self.current[x] -= change_speed + elif self.current[x] < self.target[x]: + self.current[x] += change_speed + if self.auto_mode and self.target_current_same: + self.target = get_valid_color() + self.target_current_same = False surface.fill(self.current) def set_target_color(self, color): - self.target = [color[0], color[1], color[2]] + if color is not None: + self.target = get_similar_valid_color(color) + self.auto_mode = False + self.target_current_same = False + else: + self.auto_mode = True + self.target = get_valid_color() + self.target_current_same = False +# It will return the same color if sum is less than 510 +# Otherwise a darker color will be returned +# White text should be seen ok with this background color + +def get_similar_valid_color(color): + sum = color[0] + color[1] + color[2] + new_color = [0, 0, 0] + if sum > 510: + rest = (sum - 510)/3 + 1 + for x in range(0,3): + new_color[x] = color[x] - rest + return new_color + else: + return color # Returns an array with 3 integers in range of 0-255 # The sum of the three integers will be lower than 255*2 diff --git a/mopidy_touchscreen/main_screen.py b/mopidy_touchscreen/main_screen.py index b64287d..23b9fa0 100644 --- a/mopidy_touchscreen/main_screen.py +++ b/mopidy_touchscreen/main_screen.py @@ -246,13 +246,8 @@ class MainScreen(BaseScreen): self.touch_text_manager.set_touch_object("artist_name", current) def track_playback_ended(self, tl_track, time_position): - if self.image is not None: - self.dirty_area.append(pygame.Rect(self.base_size / 2, - self.base_size + self.base_size / 2, - self.image.get_rect().width, - self.image.get_rect().height)) - self.image = None - + self.background.set_target_color(None) + self.image = None self.track_duration = "00:00" width = self.size[0] - self.base_size